新一代网络配置工具iproute

本文详细介绍Linux下的iproute网络配置工具,包括安装方法、目录结构、ip命令语法及具体应用场景,如网络设备配置、协议地址管理和neighbour表管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述:本文介绍全新的linux下的网络配置工具——iproute

一、简介
很多UNIX及类UNIX操作系统都提供了arp、ifconfig、route等网络配置工具。但是在linux 2.2及其以上的内核中使用这些工具时,常常会发生一些奇怪的现象。这是因为linux 2.2及其以上的内核中,网络子系统已经完全被重新设计过,重新设计过的网络子系统具有更高的性能和稳定性,但是也造成了与一些老的网络管理工具的不兼容。比如GRE通道已经成为了路由的一部分,因此我们需要完全不同的工具来配置我们的网络。于是,全新的网络配置工具——iproute诞生了。

二、安装
一般高版本的linux发行版本都包含了iproute,比如RedHat 7.1中自带了iproute-2.2.4.rpm安装包,可以使用简单的rpm –ivh iproute-2.2.4.rpm进行安装。安装完成后,其目录结构如下所示:
/etc/iproute2
/etc/iproute2/rt_dsfield
/etc/iproute2/rt_protos
/etc/iproute2/rt_realms
/etc/iproute2/rt_scopes
/etc/iproute2/rt_tables
/sbin/ifcfg
/sbin/ip
/sbin/rtmon
/sbin/tc
/usr/sbin/rtacct
/usr/share/doc/iproute-2.2.4
/usr/share/doc/iproute-2.2.4/README.decnet
/usr/share/doc/iproute-2.2.4/README.iproute2+tc
/usr/share/doc/iproute-2.2.4/RELNOTES
……

其中:
ip 命令是主要的配置命令;
tc 命令是用来进行流量控制的命令(traffic control);
rtmon 命令是用来产生链接、地址、路由信息记录文件的命令;
rtacct 命令用来查看数据包流量状态的命令;
ifcfg 类似以前的ifconfig命令,进行网络地址管理。

三、ip命令语法
ip 命令语法如下:
ip [ OPTIONS ] OBJECT [ COMMAND [ ARGUMENTS ]]
说明:

OPTIONS常用的有:
-V 打印iproute 信息
-r 将ip地址转换成域名
-s 输出更为详细的结果,如果连续使用多个-s可以得到更为详细的结果。

OBJECT 即为管理的对象,可以是:
Link 网络接口设备,通常为网卡
Address ip地址
Neighbour arp记录
Rule 路由策略
Maddress 多址广播地址
Mroute 多址路由规则
Tunnel ip通道

COMMAND 即指定对对象所执行的操作。对不同的对象可能有不一样的操作,常用的操作有添加(add)、删除(delete)、列表(list/show)、帮助(help)。可以通过help操作查看某一对象的全部操作。假如没有指定对象的操作,则认为缺省操作是进行list,如果该对象没有list操作,就认为缺省操作为help。

ARGUMENTS 即为操作参数,对不同的对象和操作,其可能的参数也不一样。但是一般只有两种类型的参数:
标志参数:一般就是一个关键字
值型参数:也就是具有一个参数及其参数值

在使用时,可以不写全,比如link可以写成l 或者 ln,只要能和其它对象区别开来即可,这有点象配置路由器。

以上就是iproute的一些简单介绍。在下一篇文章中,我们进一步深入下去,结合具体的实例为大家详细讲解具体的iproute 各种命令的用法。

 

*************************************************************************

 

前言:在上一讲中,向大家简单介绍了一下iproute的概况,在本文中将根据实例讲解ip命令的具体用法。讲解的时候我们将根据管理的对象来分别进行,关于对象的说明请看上一讲。

一、 ip link----网络设备配置
link 对象也即是指网络设备(网卡等),通过link 对象命令,我们可以查看及更改网络设备的属性。

ip link set ----设置网络设备的属性
操作参数:
dev name (缺省)
----指定要进行操作的网络设备名称 eg:ip link set dev eth0
up/down
----激活/禁用网络设备  eg:ip link set dev eth0 down
arp on / arp off
----在该网络设备上使用arp协议/禁用arp协议 eg:ip link set dev eth0  arp off
multicast on / multicast off
----打开/关闭多目传送 eg:ip link set dev eth0 multicast on
dynamic on / dynamic off
----打开/关闭动态标志
name NAME
----更改网络设备名称,如果该设备正在运行,则不要更改这个属性 eg:ip link set dev eth0  name eth10 或 ip link set eth0 name eth10
txqlen number
----设置传输队列长度
mtu number
----设置最大传输单元
address mac
----设置网络设备的MAC地址
broadcast mac
----设置网络设备的硬件广播地址

实例:
1.设置网络设备的MAC地址
ip link set eth0 address 88:88:88:44:44:44
注意:在设置前要先执行 ip link set eth0 down,设置完成后再执行ip link set eth0 up
2.禁用网络接口
ip link set eth0 down

ip link show----查看网络设备属性
操作参数:
dev name (缺省)
----指定要进行操作的网络设备名称
up
----仅仅显示正在运行的网络设备的属性

输出格式:
[bye2000@mng bye2000]$ ip link show
1: lo: <LOOPBACK,UP> mtu 3924 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100
link/ether 88:88:88:44:44:ee brd ff:ff:ff:ff:ff:ff
说明:
第一个数字是网络设备的数字标识,这是一个唯一的标识;
第二部分是网络设备名称,如eth0,lo,这部分也是唯一的,不能相同;
mtu表示最大传输单元,这是跟网络接口层特性相关的,在以太网中,RFC894定义的以太帧格式的mtu是1500字节;而RFC1042定义的帧格式中,mtu是1492字节。当然RFC894定义的帧格式是最常用的。qdisc 表示网络接口所使用的队列算法,noqueue表示该接口不进行排队,pfifo_fast表示先进先出;

尖括号中的部分:
UP表示该网络设备正在工作;
LOOPBACK表示这是一个回送设备,该接口发出的数据报不会被传到网络上;
BROADCAST表示该网络设备可以将数据报传送给子网内的所有主机;
POINTTOPOINT表示该网络设备是一个点对点连接的一端,所有该设备发出的数据报都将被对端节点所接收,所有对端发出的数据报也将被本设备所接收。
MULTICAST表示该网络设备具有接收和发送多目传送(multicast)的能力;
PROMISC表示网络设备处于混杂模式,这时该设备将进行监听并将监听到的数据传递给内核,即使这些数据不是发送给该主机的。通常用于网络探测。
ALLMULTI表示网络设备将接收所有多目传送的数据报,通常用于多目传送路由器。
NOAPP 这个参数在使用不同的协议时具有不同的意义。但通常表示不需要地址解析。
DYNAMIC 表示该网络设备可以动态的建立和删除。
SLAVE表示该网络设备与其他网络设备绑定在一起,形成逻辑上的一个网络设备。

link/ether表示接口硬件类型,后面是网络设备的硬件地址;
brd 后面的是网络设备的硬件广播地址。

ip –s link show----带上-s参数,将打印出网络设备的统计数据
比如:
[bye2000@mng bye2000]$ ip -s link show
1: lo: <LOOPBACK,UP> mtu 3924 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
RX: bytes packets errors dropped overrun mcast
0 0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 0 0 0 0
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100
link/ether 88:88:88:44:44:ee brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
134346 1368 0 0 0 902
TX: bytes packets errors dropped carrier collsns
21922 316 0 0 0 0
说明:
RX:表示接收
TX:表示发送
bytes:表示已接收/发送的数据字节数;
packets:表示已接收/发送的数据报数目;
errors:表示在接收/发送时出现的错误次数;
dropped:表示因为系统资源不足而导致丢包的数目;
overrun:表示在接收数据包时,因为系统出现错误或系统反应太慢而导致丢包的数目;
mcast:表示接收到的多目传送数据包数目;
carrier:表示物理连接出错的次数;
collsns:表示出现以太冲突的次数。


二、 ip address---协议地址管理
address对象(可以简写成address, addr, a)就是指网络设备上的ip地址。每一个网络设备都会有至少一个协议地址。可以通过该命令查看网络设备的地址和地址属性,以及添加/删除地址。

ip address add---添加新的协议地址
操作参数:
dev name
----指定要进行操作的网络设备名称
local ADDRESS (缺省)
----协议地址,地址的格式由使用的协议所决定,比如在ipv4协议中,地址的格式为用小数点分隔的四个十进制数,后面可以用/连接子网掩码的位数,比如192.168.1.100/24。
peer ADDRESS
----使用点对点连接时对端的协议地址。
broadcast ADDRESS
----协议广播地址,可以简写成brd,此外可以简单的在后面加上“+”表示广播地址由协议地址主机位全置1组成,“-”则表示主机位全置0。
label NAME
----地址标志,为了和linux 2.0中的别名相兼容,该标志由该网络设备名称开头,后面用“:”接上地址名称,比如eth0:3等等。
scope SCOPE_VALUE
----地址范围,可能的值有:
1. global:说明该地址全局有效;
2. site:说明该地址只在本地站点内有效,该值只在ipv6中使用;
3. link:只在该网络设备上有效;
4. host:只在该主机上有效;

实例:
1. 添加回送地址
ip addr add 127.0.0.1/8 dev lo brd + scope host
2. 添加ip地址
ip addr add 10.0.0.1/24 brd + dev eth0 label eth0:3

ip address delete----删除协议地址
可以简写成delete, del, d
实例:
删除回送地址:
ip addr del 127.0.0.1/8 dev lo

ip address show---查看协议地址
可以简写成show, list, lst, sh, ls, l。
dev name (缺省)
----指定要进行操作的网络设备名称
scope SCOPE_VALUE
----地址范围
to PREFIX
----列出指定地址的协议地址属性
label PATTERN
----列出匹配条件的协议地址,这里可以使用shell风格的正则表达式
dynamic and permanent
----仅对ipv6有效,指定是动态还是静态地址
primary and secondary
----主要还是次要地址

输出格式实例:
[bye2000@mng bye2000]$ ip addr show eth0
3: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100
link/ether 00:80:c8:57:01:79 brd ff:ff:ff:ff:ff:ff
inet 202.203.85.41/27 brd 202.203.85.63 scope global eth0

说明:
第一二行与ip link show eth0命令的输出一样,都是关于链路层的信息。

ip address flush---刷新协议地址
可以简写成flush, f,并且该命令具有同show命令一样的参数。
说明:该命令可能具有一定的危险,一旦出错可能就无法恢复。


实例:删除所有以202开头的ip地址
[bye2000@mng bye2000]$ ip -s -s a f to 202/8
3: eth0 inet 202.203.85.41/27 brd 202.203.85.63 scope global eth0
*** Round 1, deleting 1 addresses ***3
*** Flush is complete after 1 round ***
本例中,-s –s表示打印出详细信息,a就是address的缩写,f则是flush的缩写。

三、 ip neighbour----neighbour/arp表管理
neighbour对象(可以简写成neighbour, neighbor, neigh, n)在协议地址和硬件地址之间建立起一种绑定关系,并且neighbour记录通常是以表的形式组织的,ipv4中的neighbour表就是为大多数人所熟知的ARP表。

ip neighbour add----添加neighbour记录
ip neighbour change----更改已存在的neighbour记录
ip neighbour replace----添加新的neighbou记录或更改已存在的neighbour记录

可以简写成add, a; change, chg; replace, repl。
说明:这三条命令可以添加新的neighbour记录或者更改已有的neighbour记录。

操作参数:
to ADDRESS (缺省)
----指定协议地址,可以是ipv4或者ipv6的
dev NAME
----指定网络设备名称
lladdr LLADDRESS
----指定硬件地址
nud NUD_STATE
----指定neighbour的nud值,nud(Neighbour Unreachability Detection)即邻居不可到达检测,可以是以下值:
permanent----说明该记录将永久有效,只能出于管理的目的将其删除。
noarp----说明该记录有效,但是在其生存时间到达以后可以被删除。
reachable----说明该记录有效,直到可到达超时溢出。
stale----说明该记录有效,但是其有效性值得怀疑。

实例:
1. 添加arp记录:
ip neigh add 10.0.0.3 lladdr 0:0:0:0:0:1 dev eth0 nud perm
2. 修改arp记录:
ip neigh chg 10.0.0.3 dev eth0 nud reachable

ip neighbour delete---删除neighbour记录
说明:该命令(可以简写为delete, del, d)可以用来删除neighbour记录。该命令的操作参数和ip neigh add命令一致,只不过忽略了lladdr 和 nud参数。

实例:
ip neigh del 10.0.0.3 dev eth0

警告:尝试删除一条由内核产生的nud为noarp的记录可能会产生不可预期的后果。

ip neighbour show---显示neighbour记录
说明:该命令显示当前系统的neighbour表。可以简写成show, list, sh, ls。

操作参数:
to ADDRESS (缺省)
----指定协议地址,可以是ipv4或者ipv6的
dev NAME
----指定网络设备名称
unused
----只显示当前没有被使用neighbour记录。
nud NUD_STATE
----指定neighbour的nud值

实例:
[bye2000@mng bye2000]$ ip neigh show
202.203.85.33 dev eth0 lladdr 00:80:3e:91:03:f3 nud reachable
202.203.85.37 dev eth0 lladdr 00:50:ba:f2:b7:e5 nud reachable

nud(neighbour unreachability detection)的值描述:
----none 邻居的状态是空的
----incomplete 邻居的状态正在解析过程中
----reachable 邻居的状态是有效的,是可以到达的
----stale 邻居的状态是有效的,但是不一定可以到达,所以在通信之前内核会检查其是
否可以到达。
----delay 内核检查邻居状态的数据报已经发出,正在等待邻居的回应。
----probe 等待邻居的确认超时。
----failed 解析失败。
----noarp 邻居的状态是有效的,并且系统不会再尝试检查其状态。
----permanent 同noarp,但是只有系统管理员可以删除此类记录。

除了none, failed 和 incomplete状态以外,其他状态都会显示硬件地址。

ip neighbour flush---刷新arp记录
可以简写成flush, f,并且该命令具有同show命令一样的参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值