文档章节

Linux中“新旧”TCP/IP工具的对比

linuxprobe16
 linuxprobe16
发布于 2016/11/03 09:58
字数 1657
阅读 17
收藏 0
点赞 0
评论 0

如今很多系统管理员依然通过组合使用诸如ifconfig、route、arp和netstat等命令行工具(统称为net-tools)来配置网络功能、解决网络故障,net-tools起源于BSD的TCP/IP工具箱,后来成为老版本Linux内核中配置网络功能的工具。但自2001年起,Linux社区已经对其停止维护,甚至一些Linux发行版比如Arch Linux和CentOS/RHEL 7则已经完全抛弃了net-tools,只支持iproute2,对于网络配置工具而言,iproute2的出现旨在从功能上取代net-tools。

Linux中“新旧”TCP/IP工具的对比Linux中“新旧”TCP/IP工具的对比
那这两者有何区别呢?net-tools通过procfs(/proc)和ioctl系统调用去访问和改变内核网络配置,而iproute2则通过netlink套接字接口与内核通讯。抛开性能而言,iproute2的用户接口比net-tools显得更加直观,到目前为止,iproute2仍处在持续开发中,如果你仍在使用net-tools,而且尤其需要跟上新版Linux内核中的最新最重要的网络特性的话,那么是时候转到iproute2的阵营了,因为使用iproute2可以做很多net-tools无法做到的事情。

下面来举几个例子:

1、显示所有已连接的网络接口##下面的命令显示出所有可用网络接口的列表(无论接口是否激活)。

使用net-tools:

$ ifconfig -a

使用iproute2:

$ ip link show

2、激活或停用网络接口##使用这些命令来激活或停用某个指定的网络接口。

使用net-tools:

$ sudo ifconfig eth1 up
$ sudo ifconfig eth1 down

使用iproute2:

$ sudo ip link set down eth1
$ sudo ip link set up eth1

3、为网络接口分配IPv4地址##使用这些命令配置网络接口的IPv4地址。
使用net-tools:

$ sudo ifconfig eth1 10.0.0.1/24

使用iproute2:

$ sudo ip addr add 10.0.0.1/24 dev eth1

值得注意的是,可以使用iproute2给同一个接口分配多个IP地址,ifconfig则无法这么做。使用ifconfig的变通方案是使用IP别名。

$ sudo ip addr add 10.0.0.1/24 broadcast 10.0.0.255 dev eth1
$ sudo ip addr add 10.0.0.2/24 broadcast 10.0.0.255 dev eth1
$ sudo ip addr add 10.0.0.3/24 broadcast 10.0.0.255 dev eth1

4、移除网络接口的IPv4地址##就IP地址的移除而言,除了给接口分配全0地址外,net-tools没有提供任何合适的方法来移除网络接口的IPv4地址,相反,iproute2则能很好地完全。

使用net-tools:

$ sudo ifconfig eth1 0

使用iproute2:

$ sudo ip addr del 10.0.0.1/24 dev eth1

5、显示网络接口的IPv4地址##按照如下操作可查看某个指定网络接口的IPv4地址。

使用net-tools:

$ ifconfig eth1

使用iproute2:

$ ip addr show dev eth1

同样,如果接口分配了多个IP地址,iproute2会显示出所有地址,而net-tools只能显示一个IP地址。
6、为网络接口分配IPv6地址##使用这些命令为网络接口添加IPv6地址。net-tools和iproute2都允许用户为一个接口添加多个IPv6地址。

使用net-tools:

$ sudo ifconfig eth1 inet6 add 2002:0db5:0:f102::1/64
$ sudo ifconfig eth1 inet6 add 2003:0db5:0:f102::1/64

使用iproute2:

$ sudo ip -6 addr add 2002:0db5:0:f102::1/64 dev eth1
$ sudo ip -6 addr add 2003:0db5:0:f102::1/64 dev eth1

7、显示网络接口的IPv6地址##按照如下操作可显示某个指定网络接口的IPv6地址。net-tools和iproute2都可以显示出所有已分配的IPv6地址。

使用net-tools:

$ ifconfig eth1

使用iproute2:

$ ip -6 addr show dev eth1

8、移除网络设备的IPv6地址##使用这些命令可移除接口中不必要的IPv6地址。

使用net-tools:

$ sudo ifconfig eth1 inet6 del 2002:0db5:0:f102::1/64

使用iproute2:

$ sudo ip -6 addr del 2002:0db5:0:f102::1/64 dev eth1

9、改变网络接口的MAC地址##使用下面的命令可篡改网络接口的MAC地址,请注意在更改MAC地址前,需要停用接口。

使用net-tools:

$ sudo ifconfig eth1 hw ether 08:00:27:75:2a:66

使用iproute2:

$ sudo ip link set dev eth1 address 08:00:27:75:2a:67

10、查看IP路由表##显示内核的IP路由表:route和netstat。在iproute2中,使用命令ip route。

使用net-tools:

$ route -n
$ netstat -rn

使用iproute2:

$ ip route show

11、添加和修改默认路由##这里的命令用来添加或修改内核IP路由表中的默认路由规则。请注意在net-tools中可通过添加新的默认路由、删除旧的默认路由来实现修改默认路由。在iproute2使用ip route命令来代替。

使用net-tools:

$ sudo route add default gw 192.168.1.2 eth0
$ sudo route del default gw 192.168.1.1 eth0

使用iproute2:

$ sudo ip route add default via 192.168.1.2 dev eth0
$ sudo ip route replace default via 192.168.1.2 dev eth0

12、添加和移除静态路由##使用下面命令添加或移除一个静态路由。
使用net-tools:

$ sudo route add -net 172.16.32.0/24 gw 192.168.1.1 dev eth0
$ sudo route del -net 172.16.32.0/24

使用iproute2:

$ sudo ip route add 172.16.32.0/24 via 192.168.1.1 dev eth0
$ sudo ip route del 172.16.32.0/24

13、查看套接字统计信息##这里的命令用来查看套接字统计信息(比如活跃或监听状态的TCP/UDP套接字)。
使用net-tools:

$ netstat
$ netstat -l

使用iproute2:

$ ss
$ ss -l

14、查看ARP表##使用这些命令显示内核的ARP表。
使用net-tools:

$ arp -an

使用iproute2:

$ ip neigh

15、添加或删除静态ARP项##按照如下操作在本地ARP表中添加或删除一个静态ARP项。
使用net-tools:

$ sudo arp -s 192.168.1.100 00:0c:29:c0:5a:ef
$ sudo arp -d 192.168.1.100

使用iproute2:

$ sudo ip neigh add 192.168.1.100 lladdr 00:0c:29:c0:5a:ef dev eth0
$ sudo ip neigh del 192.168.1.100 dev eth0

16、添加、删除或查看多播地址##使用下面的命令配置或查看网络接口上的多播地址。
使用net-tools:

$ sudo ipmaddr add 33:44:00:00:00:01 dev eth0
$ sudo ipmaddr del 33:44:00:00:00:01 dev eth0
$ ipmaddr show dev eth0
$ netstat -g

使用iproute2:

$ sudo ip maddr add 33:44:00:00:00:01 dev eth0
$ sudo ip maddr del 33:44:00:00:00:01 dev eth0
$ ip maddr list dev eth0

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/

© 著作权归作者所有

共有 人打赏支持
linuxprobe16
粉丝 8
博文 696
码字总数 133617
作品 0
河东
Linux环境下纯Python无第三方库读写Netlink

原文地址:http://shajunxing.tpddns.cn:8888/web/blog/2018-03-28-Linux环境下纯Python无第三方库读写Netlink/index.html 基础知识 Netlink使用套接字的方式提供了应用程序和内核之间信息交...

shajunxing ⋅ 03/30 ⋅ 0

Linux操作系统学习中请绕开这五大坑

导读 开发应用比较困难,只适用网络等等,这些对于Linux的评价只是在一些并不了解Linux的人的看法,一但你真正认识了Linux,都会被Linux的魅力所征服... 误区一:开发应用比较困难 这种说法在...

linuxprobe16 ⋅ 05/18 ⋅ 0

iproute2 对决 net-tools

via: http://xmodulo.com/2014/09/linux-tcpip-networking-net-tools-iproute2.html 作者:Dan Nanni 译者:KayGuoWhu 校对:wxy 本文由 LCTT 原创翻译,Linux中国 荣誉推出 如今很多系统管理...

kuSorZ ⋅ 05/30 ⋅ 0

部署PXE远程安装服务和Kickstart无人值守安装

部署PXE远程安装服务和Kickstart无人值守安装 PXE: 网络引导技术,工作在Client/Serrver模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或整个操作系统。若要搭建PXE网络...

何以重见 ⋅ 05/19 ⋅ 0

Linux性能监控工具收集(转)

一、基于命令行的性能监控工具 1.dstat - 多类型资源统计工具 该命令整合了vmstat,iostat和ifstat三种命令。同时增加了新的特性和功能可以让你能及时看到各种的资源使用情况,从而能够使你对...

easonjim ⋅ 2017/12/24 ⋅ 0

Linux运维工程师笔试题系列2(30题)

Linux运维工程师笔试题系列2(30题) 如果您对问题有疑问,或者认为答案不准确的,欢迎留言交流。 问题如下: 1. 下列哪个git命令不是合并代码用的: A git pull –rebase B git merge C gi...

优惠券发放 ⋅ 05/25 ⋅ 0

玩转「Wi-Fi」系列之常用命令

涉及到网络相关的命令很多,一些常用命令如下: Ping Ping是Linux系统常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器,看是不是开着。它是通过发送ICMP EC...

程序手艺人 ⋅ 05/23 ⋅ 0

Unix传奇(上篇)

转自:http://coolshell.cn/articles/2322.html 作者:陈皓 了解过去,我们才能知其然,更知所以然。总结过去,我们才会知道我们明天该如何去规划,该如何去走。在时间的滚轮中,许许多的东西...

baresnail ⋅ 2014/02/25 ⋅ 0

tcpdump抓包命令及结果分析

tcpdump抓包分析详解 tcpdump能帮助我们捕捉并保存网络包,保存下来的网络包可用于分析网络负载情况,包可通过tcpdump命令解析,也可以保存成后缀为pcap的文件,使用wireshark等软件进行查看...

jalyzjs ⋅ 05/15 ⋅ 0

Linux之虚拟服务器LVS搭建

导读  LVS是 Linux Virtual Server 的简称,也就是Linux虚拟服务器。这是一个由章文嵩博士发起的一个开源项目,它的官方网址是http://www.linuxvirtualserver.org,现在 LVS 已经是 Linux ...

问题终结者 ⋅ 06/14 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

骰子游戏代码开源地址

因为阿里云现在服务器已经停用了,所以上面的配置已经失效。 服务端开源地址:https://gitee.com/goalya/chat4.git 客户端开源地址:https://gitee.com/goalya/client4.git 具体运行界面请参考...

算法之名 ⋅ 24分钟前 ⋅ 0

设计模式--装饰者模式

装饰者模式 定义 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。 通用类图 意图 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比...

gaob2001 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部