ip的所有操作都是原子操作。例如,如果ip执行失败,它不会系统的任何东西,ip link command例外,它会修改某些设备参数。
我们无法列出所有的错误信息,尤其是语法错误。不过,错误信息的意思都非常明确。下面,我们列举一些经常出现的错误信息:
内核不支持netlink(netlink用于在内核模块和用户之间传递信息),会出现以下错误信息:
Cannot open netlink socket: Invalid value
内核不支持RTNETLINK,会出现以下错误信息:
Cannot talk to rtnetlink: Connect refused
Cannot send dump request: Connect refused
如果在编译内核时没有配置CONFIG_IP_MULTIPLE_TABLES选项。在使用ip规则时会出现和下面的信息类似的错误信息:
kuznet@kaise $ ip rule list
RTNETLINK error: Invalid argument
dump terminated
|
4.ip link--配置网络设备
| 对象 |
link由网络设备,对应的命令显示以及设备的状态变化组成。 |
| 命令 |
set和show(或者list) |
4.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选项。这两个选项已经比较陈旧,而且也不应该随便修改。
注意:如果同时修改多个参数,任何一个修改失败,ip都会立即取消操作。这种情况可能使系统进入无法预料的状态。为了避免出现这种情况,尽量不要使用ip link set同时修改多个参数,例如:ip link set dev eth0 mtu 1500 txqueuelen 100。
4.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:~ $
|
在显示的信息中,每个引号之前的数字是一个接口索引,用于识别网络接口。这个数字后面是网络接口的名字(例如:eth0、dummy等),它也和网络接口一一对应。不过,在某些情况下,例如:驱动模块被卸载,对应的接口名就会从列表中消失,而其它新创建的接口就会使用相同的名字。系统管理员可以ip link set name修改接口的名字。
接口名可以是别的,或者是@NONE。这意味着这个设备被绑定到其它的设备,例如数据包被发送到这个设备,由这个设备封装,并从master设备发出。如果设备名字是NONE,就表示master设备是未知的。
接着,我们看到的是mtu(Maximal Transfer Unit,最大传输单元)。它决定这个接口单个数据包能够传输多少数据。
qdisc(queuing discipline)显示这个网络接口使用的排队算法。noqueue表示不对数据包进行排队;noop表示这个网络接口出于黑洞模式,也就是所有进入本网络设备的数据会直接被丢弃。qlen是网络接口传输队列的默认长度。
网络接口可以有如下标志:
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一篇:RedHat7.2下Apache与Tomcat4整合实例
下一篇:使用reiserfs格式安装RH8
【文章评论】
【收藏本文】
【推荐好友】
【打印本文】
【我要投稿】 【论坛讨论】