[转] Linux TCP/IP网络小课堂:net-tools与iproute2大比较
PS:netstat选项是-planet,方便记忆
http://os.51cto.com/art/201409/450886.htm
如今许多系统管理员仍结合使用ifconfig、route、arp和netstat等命令行工具(它们统称为net-tools),管理和排查各 种网络配置。这类工具原先起源于BSD TCP/IP工具箱,旨在配置老式Linux内核的网络功能。自2001年以后,它在Linux社区的发展就止步不前了。Arch Linux和CentOS/RHEL 7等一些Linux发行版已经弃用了net-tools,其他发行版计划弃用net-tools,改而使用iproute2。
iproute2是另一个系列的网络配置工具,它旨在取代net-tools的功能。net-tools可以通过procfs(/proc)和 ioctl系统调用,访问和更改内核网络配置,iproute2则通过网络链路套接字接口与内核进行联系。/proc接口比网络链路接口来得更笨拙。抛开 性能不讲,iproute2的用户界面比net-tools的用户界面要来得直观。比如说,网络资源(比如链路、IP地址、路由和隧道等)用“对象”抽象 进行了恰当的定义,你可以使用一致的语法来管理不同的对象。最重要的是,迄今为止iproute2一直在积极开发当中。
如果你仍在使用net-tools,是时候改用iproute2了,如果你想跟上Linux内核的最新最好的网络功能特性,更是如此。很可能有好多 操作可以用iproute2来实现,却无法用net-tools来实现,无论是基于源的路由、服务质量、虚拟局域网(VLAN)、绑定,还是网桥其他什么 操作。另外值得一提的是,网络管理器等更高级网络配置工具依赖iproute2。
对于想要改用iproute2的那些人来说,下面对net-tools与iproute2进行了一番全面的比较。
显示所有连接的网络接口
下列命令显示了所有可用的网络接口(无论是不是活动网络接口)。
使用net-tools:
- $ ifconfig -a
使用iproute2:
- $ ip link show

激活或禁止网络接口
想激活/禁止某一个网络接口,可以使用这些命令。
使用net-tools:
- $ sudo ifconfig eth1 up
- $ sudo ifconfig eth1 down
使用iproute2:
- $ sudo ip link set down eth1
- $ sudo ip link set up eth1
将一个或多个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
从网络接口删除IPv4地址
就删除IP地址而言,如果使用net-tools,除了分配0给接口外,没有合适的方法从网络接口删除IPv4地址。iproute2可以合理地处理这个问题。
使用net-tools:
- $ sudo ifconfig eth1 0
使用iproute2:
- $ sudo ip addr del 10.0.0.1/24 dev eth1
显示网络接口的一个或多个IPv4地址
可以通过下列方法,检查某一个网络接口的IPv4地址。
使用net-tools:
- $ ifconfig eth1
使用iproute2:
- $ ip addr show dev eth1
同样,要是有多个IP地址分配给了某个接口,iproute2就会显示所有IP地址,而net-tools只能显示一个IP地址。

分配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
显示网络接口的一个或多个IPv6地址
可以通过以下方法显示某一个网络接口的IPv6地址。net-tools和iproute2都能显示所有已分配的IPv6地址。
使用net-tools:
- $ ifconfig eth1
使用iproute2:
- $ ip -6 addr show dev eth1

删除网络接口的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
更改网络接口的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
查看IP路由表
net-tools有两个选项可用于显示内核的IP路由表:route或netstat。如果是iproute2,只需使用ip route命令。
使用net-tools:
- $ route -n $ netstat -rn
使用iproute2:
- $ ip route show

添加或改动默认路由
下面这些命令可以添加或改动内核IP路由表中的默认路由。要注意:如果使用net-tools,只要添加一个新的默认路由,就可以实现改动默认路由这个操作。如果使用iproute2,只需使用ip route replace命令。
使用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
添加或删除静态路由
可使用下列命令添加或删除静态路由。
使用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
查看套接字统计数据
下面这些命令可以查看套接字统计数据(比如激活/侦听TCP/UDP套接字)。
使用net-tools:
- $ netstat
- $ netstat -l
使用iproute2:
- $ ss
- $ ss -l

查看ARP表
你可以使用这些命令来显示内核的ARP表。
使用net-tools:
- $ arp -an
使用iproute2:
- $ ip neigh

添加或删除静态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
添加、删除或查看多播地址
想配置或查看某个网络接口上的多播地址,可以使用下列命令。
使用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
英文原文:http://xmodulo.com/2014/09/linux-tcpip-networking-net-tools-iproute2.html
[转] Linux TCP/IP网络小课堂:net-tools与iproute2大比较的更多相关文章
- Linux - TCP/IP网络协议基础
1.0 Tcp / IP 背景介绍 上世纪70年代,随着计算机的发展,人们意识到如果想要发挥计算机的更大作用,就要讲世界各地的计算机连接起来. 但是简单的连接时不够的,因为计算机之间无法沟通.因此设计 ...
- Linux学习(1)- TCP/IP网络协议基础
Linux学习(1)- TCP/IP网络协议基础 一.TCP/IP 简介 学习内容 TCP/IP(Transmission Control Protocol/Internet Protocol)是传输 ...
- TCP/IP网络编程系列之三(初级)
TCP/IP网络编程系列之三-地址族与数据序列 分配给套接字的IP地址和端口 IP是Internet Protocol (网络协议)的简写,是为首发网络数据而分配给计算机的值.端口号并非赋予计算机值, ...
- [转]linux tcp/ip调优
LINUX tcp/ip性能调优 On 2011年03月15日, in linux, tips, by netoearth 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接 ...
- TCP/IP网络编程之多线程服务端的实现(二)
线程存在的问题和临界区 上一章TCP/IP网络编程之多线程服务端的实现(一)的thread4.c中,我们发现多线程对同一变量进行加减,最后的结果居然不是我们预料之内的.其实,如果多执行几次程序,会发现 ...
- [转帖]Linux TCP/IP协议栈,数据发送接收流程,TCP协议特点
Linux TCP/IP协议栈,数据发送接收流程,TCP协议特点 http://network.51cto.com/art/201909/603780.htm 可以毫不夸张的说现如今的互联网是基于TC ...
- TCP/IP网络编程 读书笔记1
本篇主干内容是TCP/IP网络编程1-9章学习笔记 1. linux文件描述符 描述符从3开始以由小到大的顺序编号,0,1,2,分配给标准I/O用作标准输入.标准输出和标准错误. 2. 协议族与套接字 ...
- 浅谈TCP/IP网络编程中socket的行为
我认为,想要熟练掌握Linux下的TCP/IP网络编程,至少有三个层面的知识需要熟悉: 1. TCP/IP协议(如连接的建立和终止.重传和确认.滑动窗口和拥塞控制等等) 2. Socket I/O系统 ...
- TCP/IP网络协议栈(转载)
原文:http://www.cnblogs.com/xuanku/p/tcpip.html TCP/IP网络协议栈分为四层, 从下至上依次是: 链路层 其实在链路层下面还有物理层, 指的是电信号的传输 ...
随机推荐
- innerHtml写法
swt_center = "<div id='new_swt_wee'>"; swt_center += '<a href="javascript:vo ...
- wechat-php-sdk
wechat-php-sdk 微信公众平台php版开发包 支持消息加解密方式的明文模式.兼容模式.安全模式 支持自动接入微信公众平台(步骤) 功能模块 Wechat (处理自动接入.获取与回复微信消息 ...
- Frame与启动流程
1. frame与bounds的区别: frame是从屏幕的左上角开始计算位置,而bounds是从新添加view左上角作为(0,0)开始计算 bounds是以自身为参考系,所以左上角的点为原点 cen ...
- Linux服务器集群技术的概述
目前,越来越多的网站采用Linux操作系统,提供邮件.Web.文件存储.数据库等服务.也有非常多的公司在企业内部网中利用Linux服务器提供这些服务.随着人们对Linux服务器依赖的加深,对其可靠性. ...
- 转:小心,apc可能导致php-fpm罢工!
原文来自于:http://www.searchtb.com/2014/02/apc-lock-php-fpm.html 最近线上产品出现了502错误.一般出现502错误,都是php-fpm 进程处理请 ...
- Java中的那些名词术语(不断更新中)
在工作和学习中,总会遇到各种术语.岁月不饶人,记忆力越来越下降.在这里记录下那些曾经关注过学习过的东西. POJO: Plain Old Java Object DI: Dependency Inje ...
- BZOJ 3223 文艺平衡树
Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 ...
- [BZOJ 2350] [Poi2011] Party 【Special】
题目链接: BZOJ - 2350 题目分析 因为存在一个 2/3 n 大小的团,所以不在这个团中的点最多 1/3 n 个. 牺牲一些团内的点,每次让一个团内的点与一个不在团内的点抵消删除,最多牺牲 ...
- activiti入门3排他网关,并行网管,包含网关,事件网关(转)
网关用来控制流程的流向 网关可以消费也可以生成token. 网关显示成菱形图形,内部有有一个小图标. 图标表示网关的类型. 基本分支 首先 利用 流程变量 写个带有分支的一个基本流程 流程图: 部署 ...
- 使用 Spring Data JPA 简化 JPA 开发
从一个简单的 JPA 示例开始 本文主要讲述 Spring Data JPA,但是为了不至于给 JPA 和 Spring 的初学者造成较大的学习曲线,我们首先从 JPA 开始,简单介绍一个 JPA 示 ...