前言:在上一讲中,向大家简单介绍了一下iproute的概况,在本文中将根据实例讲解ip命令的具体用法。讲解的时候我们将根据管理的对象来分别进行,关于对象的说明请看上一讲。
一、 ip link—-网络设备配置
link 对象也即是指网络设备(网卡等),通过link 对象命令,我们可以查看及更改网络设备的属性。
ip link set —-设置网络设备的属性
操作参数:
dev name (缺省)
—-指定要进行操作的网络设备名称
up/down
—-激活/禁用网络设备
arp on / arp off
—-在该网络设备上使用arp协议/禁用arp协议
multicast on / multicast off
—-打开/关闭多目传送
dynamic on / dynamic off
—-打开/关闭动态标志
name name
—-更改网络设备名称,如果该设备正在运行,则不要更改这个属性
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命令一样的参数。