转来的,非原创,感谢源作者,源链接已经不可用了,这里表示感谢。
1.ip命令的语法
ip命令的用法如下:
ip [OPTIONS] OBJECT [COMMAND [ARGUMENTS]]
其中,OPTIONS是一些修改ip行为或者改变其输出的选项。所有的选项都是以
-字符开头,分为长、短两种形式。目前,ip支持如下选项:
-V,-Version 打印ip的版本并退出。
-s,-stats,-statistics 输出更为详尽的信息。如果这个选项出现两次或者多次,
输出的信息将更为详尽。
-f,-family 这个选项后面接协议种类,包括:inet、inet6或者link,强调使用的
协议种类。如果没有足够的信息告诉ip使用的协议种类,ip就会使用默认值inet或
者any。link比较特殊,它表示不涉及任何网络协议。
-4 是-family inet的简写。
-6 是-family inet6的简写。
-0 是-family link的简写。
-o,-oneline 对每行记录都使用单行输出,回行用字符代替。如果你需要使用wc、
grep等工具处理ip的输出,会用到这个选项。
-r,-resolve 查询域名解析系统,用获得的主机名代替主机IP地址。
注意:以上的选项不能叠加写在一起,要分开写。
OBJECT是你要管理或者获取信息的对象。目前ip认识的对象包括:
link 网络设备
address 一个设备的协议(IP或者IPV6)地址
neighbour ARP或者NDISC缓冲区条目
route 路由表条目
rule 路由策略数据库中的规则
maddress 多播地址
mroute 多播路由缓冲区条目
tunnel IP上的通道
2.ip link--配置网络设备
对象 link由网络设备,对应的命令显示以及设备的状态变化组成。
命令 set和show(或者list)
2.1.ip link set--改变设备的属性
缩写:set、s
参数:
dev NAME(default) 指定进行操作的网络设备
up/down 起动/关闭设备。
例如:ip link set dev eth0 up
arp on/off 改变网络设备的NOARP选项。
如果设备处于UP状态,不允许进行这个操作。不过,内核和ip都不会对在这种情况
下的这个操作进行检查。在设备处于运行状态下改变这个选项会造成无法预料的后
果。
multicast on/off 改变网络设备的MULTICAST选项。
dynamic on/off 改变网络设备的DYNAMIC选项。
name NAME 把设备的名字改为NAME(例如:eth0)。如果设备处于运行状态或者已经
配置了地址,建议不要进行这个操作。
txqueuelen NUMBER或者txqlen NUMBER 改变设备传输队列的长度。
例如:ip link set dev eth0 txqueuelen 100
mtu NUMBER 改变网络设备MTU(最大传输单元)的值。
例如:ip link set dev eth0 mtu 1500
address LLADDRESS 修改网络设备的MAC地址。
例如:ip link set dev eth0 address 00:01:4f:00:15:f1
broadcat LLADDRESS或者brd LLADDRESS 修改数据链路层广播地址。
注意:对于大多数的网络设备(例如:以太网),修改链路层广播地址会对网络造成
破坏。因此,如果对此没有很深的理解,最好不要使用这个操作。
peer LLADDRESS 当使用点对点连接时,使用这个操作可以修改对端的数据链路层
地址。
注意:ip不能修改PROMISC或者ALLMULTI选项。这两个选项已经比较陈旧,而
且也不应该随便修改。
2.2.ip link show--显示设备属性
缩写:show、list、lst、sh、ls、l
参数
dev NAME(default) NAME指定网络设备名称,例如:eth0。如果省略了这个参数,
所有的设备属性就都会被列出。
up 只显示处于活动状态网络接口的信息。
输出格式
kuznet@alisa:~ $ ip link ls eth0
3: eth0: mtu 1500 qdisc cbq qlen 100
link/ether 00:a0:cc:66:18:78 brd ff:ff:ff:ff:ff:ff:
kuznet@alisa:~ $ ip link ls sit0
5: sit0@NOME: mtu 1480 qdisc noqueue
link/sit 0.0.0.0 brd 0.0.0.0
kuznet@alisa:~ $ ip link ls dummy
2: dummy: mtu 1500 qdisc noop
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
kuznet@alisa:~ $
其中,qdisc(queuing discipline)显示这个网络接口使用的排队算法。noqueue表示
不对数据包进行排队;noop表示这个网络接口出于黑洞模式,也就是所有进入本网
络设备的数据会直接被丢弃。qlen是网络接口传输队列的默认长度。
网络接口可以有如下标志:
UP 这个设备处于运行状态,可以接收、发送数据包。
LOOPBACK 这个接口不能用于和其它的主机通讯,所有发送到这个接口的数据包都
会返回,而且这种接口只能接收反弹回来的数据包。
BROADCAST 这个设备具有把数据包发送到所有主机的能力。以太网连接是一个很典
型的例子。
POINTTOPOINT 两个节点之间是直接连接的。某个接点发出的所有数据包都会发到
对端节点,接收到的所有数据包也都是从对端节点发过来的。
MULTICAST 这个标志表示设备具有多播能力,能够把数据包发送到某些相邻的网络
节点。实际上,广播是多播的一个特例,它的多播组包括连接上的所有节点。
从定义上,POINTTOPOINT和BROADCAST连接都属于多播。
*如果网络接口的标志不属于LOOPBACK、BROADCAST和POINTTOPOINT的任何一个
,就假定是NMBA(Non-Broadcast Multi-Access)类型。这是最为普遍的一个标志。
PROMISC 设备处于混杂模式,接收连接上的所有数据,不管目的地址是否是自己。
通常,这种模式主要用于网桥和网络监视。
ALLMULTI 设备接收连接上的所有多播数据包,多播路由器(muliticast router)使
用这种模式。
NOARP 这个标志和其它的标志不同,它的含义和涉及的网络协议有关。它一般表示
这个设备无需地址解析,软件或者硬件不必借助于系统协议栈的帮助就知道如何把
数据包投递到目的地。
DYNAMIC 这个标志表示这个网络接口是动态建立和撤消的。
SLAVE 表示这个接口被绑定到其它的网络接口。
*除此之外,还有其它一些标志。这些标志或者已经过时(例如:NOTRAILERS)
,或者还没有实现(如:DEBUG),或者只是特定于某些设备(例如:MASTER、
AUTOMEDIA、PORTSEL)。因此,在此我们不作讨论。
*对于PROMISC和ALLMULTI标志,ifconfig和ip显示的值是不同的。ip link
ls命令显示的是设备的真正状态,而ifconfig显示的是自己设置的虚拟设备状态。
显示信息的第二行包含和链路层地址(MAC地址)相关的信息。其中,第一个词
(ether、sit)定义接口的硬件类型。而接口的硬件类型又决定MAC地址的格式和语
法。默认的格式是硬件的MAC地址和广播地址(如果是点对点连接方式,就是对端的
地址),地址是用冒号隔开的16进制数字。不过,默写类型的连接有其特定的地址
格式,例如:IP通道的地址格式是用点分开的IP地址。
NBMA(Non-Broadcast Multi-Access)连接没有明确定义的广播地址和对端地址
。不过,这个域包含一些有用的信息,例如:倚赖于ARP服务器的广播地址。
统计信息
使用-statistics选项,ip命令会打印出网络接口的统计信息,例如:
$ ip -s link ls eth0
3: eth0: mtu 1500 qdisc cbq qlen 100
link/ether 00:a0:cc:66:18:78 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
2449949362 2786187 0 0 0 0
TX: bytes packets errors dropped carrier collsns
178558497 1783946 332 0 332 35172
RX:和TX:分别是接收和发送统计信息的开头。得到的统计信息包括:
bytes 网络接口发送或者收到的字节数。如果字节数超过数据类型能够表示的最大
数值,就会造成回卷。因此,你如果想连续监视这个指标,需要一个用户空间的监
控进程周期性地保存这个数据。
packets 网络接口收到或者发送的数据包个数。
errors 发生错误的次数。
dropped 由于系统资源限制,而丢弃数据包的数量。
overrun 由于发生堵塞,收到的数据包被丢弃的数量。如果接口发生堵塞,就意味
着内核或者你的机器太慢,无法处理收到的数据。
mcast 收到的多播数据包数量,只有很少的设备支持这个选项。
carrier 连接介质出现故障的次数,例如:网线接触不好。
collsns 以太网类型介质发生冲突的事件次数。
compressed 压缩数据包的总数。这个指标只适用于使用VJ头压缩的网络接口。
如果-s选项出现两次或者更多次,ip会输出更为详细的错误信息统计。
3.ip address--协议地址管理
缩写 address、addr、a
对象 这里的地址是绑定到网络设备上的协议(IP或者IPv6)地址。每个网络设备至
少应该有一个协议地址。而且,一个网络设备可以绑定多个协议地址。
ip addr命令能够显示网络设备的协议地址及其性质,添加新的地址,删除旧的地
址。
命令 add、delete、flush和show(或者list)
3.1.ip address add--添加一个新的协议地址
缩写:add、a
参数
dev NAME 被操作的设备名
local ADDRESS(default) 接口的地址,地址格式和协议有关。IPv4地址使用.进行
分隔,而IPv6地址使用冒号分隔。ADDRESS可以跟着一个斜杠和表示掩码位数的十
进制数字。
peer ADDRESS 点对点接口对端的地址。ADDRESS也可以跟着一个斜杠和表示掩码位
数的十进制数字。
broadcast ADDRESS 接口的广播地址。为了方便,可以使用+和-(注1)代替广播地
址。例如:
ip addr add local 192.168.1.1/24 brd + dev eth0
ip addr add local 192.168.1.1/28 brd - dev eth0
label NAME 为每个地址设置一个字符串作为标签。为了和Linux-2.0的网络别名兼
容,这个字符串必须以设备名开头,接着一个冒号,例如:
#ip addr add local 192.168.4.1/28 brd + label eth0:1 dev eth0
scope SCOPE_VALUE(注2) 设置地址的有效范围,它用于内核为数据包设置源地址
。有效的范围在/etc/iproute2/tr_scopes文件列出,系统预先设定了一些范围值
:
global 这个地址全局有效。
site 这个地址是局部连接,也就是只有目标地址是这个设备地址时,才有效。
site (只适用于IPv6)地址在站点内部有效。
host 地址在主机内部有效。
*注1:使用-,ip addr ls显示的是网络地址;使用+,ip addr ls显示的是广
播地址。
示例
在回环设备上添加一个回环地址:
#ip addr add 127.0.0.1/8 dev lo brd + scope host
在以太网接口eth0上增加一个地址10.0.0.1,掩码长度为24位(155.155.155.0),
标准广播地址,标签为eth0:Alias:
#ip addr add 10.0.0.1/24 brd + dev eth0 label eth0:Alias
3.2.ip address delete--删除一个协议地址
缩写:delete、del、d
参数
这个命令的参数和ip addr add命令的参数一致。其中,只有设备名是必需的
参数,其它都是可选的。如果没有给定除设备名之外的其它参数,ip就会删除这个
设备的第一个地址。
示例
删除回环设备的一个回环地址。不过,最好不要作这种尝试。
#ip addr del 127.0.0.1/8 dev lo
以下shell代码可以取消设备上的所有IP地址。
while ip -f inet add del dev eth0;do
:nothing
done
另外,可以使用ip addr flush命令取消IP地址
5.3.ip address show--显示协议地址
缩写:show、list、lst、sh、ls、l
参数
dev NAME(default) 设备的名字
scope SCOPE_VAL 只列出这个范围的地址
to PREFIX 只列出和PREFIX匹配的地址,例如:
ip addr ls to 192.168.1.1
label PATTERN 只列出标签匹配PATTERN的地址,PATTERN是一个shell风格的正则
表达式。
dynamic和permanent 这两个参数只适用于IPv6。使用dynamic,ip就只列出动态地
址;使用permanent,ip就只列出固定地址。
tentative 这个参数只适用于IPv6,只列出没有通过重复地址检测[参考2]的地址
。
deprecated 这个参数只适用于IPv6,只列出deprecated[参考2]地址。
primary和secondary 只列出主(primary)或从(secondary)地址。
输出格式
duznet@alisa:~ $ ip addr ls eth0
3: eth0: mtu 1500 qdisc cbq qlen 100
link/ether 00:a0:cc:66:18:78 brd ff:ff:ff:ff:ff:ff
inet 193.233.7.90/24 brd 193.233.7.255 scope global eth0
inet6 3ffe:2400:0:1:2a0:ccff:fe66:1878/64 scope global dynamic
valid_lft forever preferred_lft 604746sec
inet6 fe80::2a0:ccff:fe66:1878/10 scope link
duznet@alisa:~ $
输出的头两行和ip link ls的输出是相同的。
接着是IP和IPv6地址、广播地址以及其它的地址属性:范围(scope)、标志
(flag)和标签(label)。地址标志由内核设置,系统管理员不能修改。目前,内核
定义了以下标志:
secondary 为输出的数据包选择默认源地址时,内核不使用这个地址。如果一个设
备已经有了一个地址,又给它设置了同一网段的不同地址,第二个地址就成为从
(secondary)地址。例如:eth0已经有一个地址192.168.1.108/24,如果又给它一
个地址192.168.1.3/24,192.168.1.3/24的就会被内核标记为从地址。
dynamic 这个地址是通过无状态的自动配置建立的(stateless
autoconfiguration)[参考2]。如果地址仍然有效,在输出中,还包括两个时间信
息。preferred_lft期满后,地址就会变成deprecated状态;valiid_lft期满后,
地址将失效。
deprecated 这个地址是不允许的,也就是说,地址虽然有效,但是不能使用它建
立新的连接。
tentative 由于重复地址监测[参考2]还没有完成或者监测失败,这个地址不能使
用。
5.4.ip address flush--清除协议地址
缩写:flush、f
简介
这个命令可以清除按照某种条件选择的协议地址。
参数
这个命令的参数和ip address show相同。唯一的区别是,如果不给定参数它
什么都不会做。
警告
这个命令(和后面讨论的所有flush命令)非常危险。如果出现错误,将无法恢
复,它会清除被操作的地址。
statistics选项
如果在ip addr flush命令中使用了-statistics选项,命令将输出更为详尽的
信息。输出的信息包括删除地址的数目和清理地址列表的圈数。如果使用了两次
-s选项,ip addr flush会按照上节叙述的格式输出所有被删除的地址。
示例
删除属于私网10.0.0.0/8的所有地址:
# ip -s -s a f to 10/8
2: dummy inet 10.7.7.7/16 brd 10.7.255.255 scope global dummy
3: eth0 inet 10.10.7.7/16 brd 10.10.255.255 scope global eth0
4: eth1 inet 10.8.7.7/16 brd 10.8.255.255 scope global eth1
*** Round 1,deleting 3 addresses ***
*** Flush is complete after 1 round ***
取消所有以太网卡的IP地址
# ip -4 addr flush label "eth0"
最后一个例子是对IPv6地址的操作。在启动了转发或者关闭了自动配置之后,你需
要取消通过无状态地址自动配置获得的主机地址:
# ip -6 addr flush dynamic
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/133735/viewspace-1083303/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/133735/viewspace-1083303/