读书人

ip下令手册(一)

发布时间: 2012-07-04 19:33:55 作者: rapoo

ip命令手册(一)

ip命令手册(一)

摘要
  ip是iproute2软件包里面的一个强大的网络配置工具,它能够替代一些传统的
网络管理工具。例如:ifconfig、route等。这个手册将分章节介绍ip命令及其选
项。  
????本文的原文在
????http://defiant.coinet.com/iproute2/ip-cref/(2002-10-15?18:40:46)
------------------------------------
By?nixe0n



作者:Alexey?N.Kuznetsov

编译:nixe0n

1.关于这篇文档

2.ip命令的语法

3.ip的错误信息

4.ip?link--配置网络设备

4.1.ip?link?set--改变设备的属性

4.2.ip?link?show--显示设备属性

5.ip?address--协议地址管理

5.1.ip?address?add--添加一个新的协议地址

5.2.ip?address?delete--删除一个协议地址

5.3.ip?address?show--显示协议地址

5.4.ip?address?flush--清除协议地址

6.ip?neighbour--neighbour/arp表管理命令

6.1.ip?neighbour?add?--?添加一个新的邻接条目
??????ip?neighbour?change--修改一个现有的条目
??????ip?neighbour?replace--替换一个已有的条目

6.2.ip?neighbour?delete--删除一个邻接条目

6.3.ip?neighbour?show--显示网络邻居的信息

6.4.ip?neighbour?flush--清除邻接条目


1.关于这篇文档

  ip是iproute2软件包里面的一个强大的网络配置工具,本文将分章节介绍ip命
令及其选项。为了便于理解,作者在本文中列举了很多示例。但是,正如作者所说
,这不是一个教程,而是一个使用手册。


2.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上的通道?

  另外,所有的对象名都可以简写,例如:address可以简写为addr,甚至是a。


  COMMAND设置针对指定对象执行的操作,它和对象的类型有关。一般情况下,
ip支持对象的增加(add)、删除(delete)和展示(show或者list)。有些对象不支持
所有这些操作,或者有其它的一些命令。对于所有的对象,用户可以使用help命令
获得帮助。这个命令会列出这个对象支持的命令和参数的语法。如果没有指定对象
的操作命令,ip会使用默认的命令。一般情况下,默认命令是list,如果对象不能
列出,就会执行help命令。

  ARGUMENTS是命令的一些参数,它们倚赖于对象和命令。ip支持两种类型的参
数:flag和parameter。flag由一个关键词组成;parameter由一个关键词加一个数
值组成。为了方便,每个命令都有一个可以忽略的默认参数。例如,参数dev是
ip?link命令的默认参数,因此ip?link?ls?eth0等于ip?link?ls?dev?eth0。我们
将在后面的章节详细介绍每个命令的使用,命令的默认参数将使用default标出。


  几乎所有的关键词都可以简写为前几个字母。在交互工作时,简写的方式非常
方便,但是我们不建议在脚本中使用简写形式。另外,在讲述过程中,所有的“官
方”简写方式都会在文章中列出。


3.ip的错误信息

  由于以下原因,ip可能会操作失败:

命令行语法错误:一个未知的关键词(an?unknown?keyword);错误的IP地址格式
(incorrectly?formated?IP?address)。在这种情况下,ip会打印出错误信息然后
退出,在错误信息中会包含失败的原因。有时ip也会打印帮助信息。?
参数不能通过一致性校验。?
由于用户没有提供足够的信息,造成ip无法从参数中编译出内核请求。?
内核返回某些系统调用的错误。ip使用perror(3)输出错误信息,因此输出的错误
信息包含一段注释以及系统调用号。?
内核返回RTNETLINK请求错误。这类错误信息以"RTNETLIK?answers"开头。?
?

  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:?<BROADCAST,MULTICAST,UP>?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:?<NOARP,UP>?mtu?1480?qdisc?noqueue
????link/sit?0.0.0.0?brd?0.0.0.0

kuznet@alisa:~?$?ip?link?ls?dummy
2:?dummy:?<BROADCAST,NOARP>?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是网络接口传输队列的默认长度。

  网络接口可以有如下标志:

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服务器的广播地址。

  使用这个命令不会显示多播地址,需要使用ip?maddr?ls命令。详情请参考第
9节ip?maddr?ls。


统计信息

  使用-statistics选项,ip命令会打印出网络接口的统计信息,例如:

kuznet@alisa:~?$?ip?-s?link?ls?eth0
3:?eth0:?<BROADCAST,MULTICAST,UP>?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
kuznet@alisa:~?$

?

  RX:和TX:分别是接收和发送统计信息的开头。得到的统计信息包括:

bytes?网络接口发送或者收到的字节数。如果字节数超过数据类型能够表示的最大
数值,就会造成回卷。因此,你如果想连续监视这个指标,需要一个用户空间的监
控进程周期性地保存这个数据。?
packets?网络接口收到或者发送的数据包个数。?
errors?发生错误的次数。?
dropped?由于系统资源限制,而丢弃数据包的数量。?
overrun?由于发生堵塞,收到的数据包被丢弃的数量。如果接口发生堵塞,就意味
着内核或者你的机器太慢,无法处理收到的数据。?
mcast?收到的多播数据包数量,只有很少的设备支持这个选项。?
carrier?连接介质出现故障的次数,例如:网线接触不好。?
collsns?以太网类型介质发生冲突的事件次数。?
compressed?压缩数据包的总数。这个指标只适用于使用VJ头压缩的网络接口。?

  如果-s选项出现两次或者更多次,ip会输出更为详细的错误信息统计。

kuznet@alisa:~?$?ip?-s?-s?link?ls?eth0
3:?eth0:?<BROADCAST,MULTICAST,UP>?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
????RX?errors:?length???crc?frame???fifo????missed
???????????0????0???0???0???0
????TX:?bytes??packets??errors??dropped?carrier?collsns
????178558497??1783946??332?0???332?35172
????TX?errors:?aborted??fifo????window??heartbeat
???????????0????0???0???332
kuznet@alisa:~?$

?

  这些错误的名字是纯以太化的,对于其它种类的设备,这些域可能有不同的解
释。


5.ip?address--协议地址管理

缩写?address、addr、a?
对象?这里的地址是绑定到网络设备上的协议(IP或者IPv6)地址。每个网络设备至
少应该有一个协议地址。而且,一个网络设备可以绑定多个协议地址。
ip?addr命令能够显示网络设备的协议地址及其性质,添加新的地址,删除旧的地
址。?
命令?add、delete、flush和show(或者list)?

5.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显示的是广
播地址。

  *注2:有关scope,在附录A中有更为详细的解释。


示例

在回环设备上添加一个回环地址:?
#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

?

5.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:?<BROADCAST,MULTICAST,UP>?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的所有地址:?
netadm@amber:~?#?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?***
netadm@amber:~?#

取消所有以太网卡的IP地址?
netadm@amber:~?#?ip?-4?addr?flush?label?"eth0"

最后一个例子是对IPv6地址的操作。在启动了转发或者关闭了自动配置之后,你需
要取消通过无状态地址自动配置获得的主机地址:?
netadm@amber:~?#?ip?-6?addr?flush?dynamic

?


6.ip?neighbour--neighbour/arp表管理命令

缩写?neighbour、neighbor、neigh、n?
对象?邻接(neighbour)对象实现同一网段协议地址和链路层地址的绑定。在内核中
,这些条目被组织到表中。IPv4的相邻表也被叫做ARP表。
ip?neighbour命令支持对条目及其属性的显示、添加和删除。?
命令?add、change、replace、delete、fulsh、show(或者list)?

  附录B将详细描述如何使用ip管理代理ARP/NDISC。

6.1.ip?neighbour?add?--?添加一个新的邻接条目
??????ip?neighbour?change--修改一个现有的条目
??????ip?neighbour?replace--替换一个已有的条目


缩写:add、a;change、chg;replace、repl


简介:这三个命令用来建立一个邻接表的条目或者更新现有的邻接表条目。


参数

to?ADDRESS(default)?相邻的协议地址。可以是IPv4或者IPv6。?
dev?NAME?和相邻节点连接的设备。?
lladdr?LLADDRESS?邻居的链路层地址。LLADDRESS可以为空。?
nud?NUD_STATE?邻接条目的状态。nud是Neighbour?Unreachability?Detection的
缩写。可能的状态包括:
permanent--邻接条目永远有效并且只能由管理员删除。
noarp--邻接条目有效,不必对其有效性进行确认。在其生命期期满时会被删除。

reachable--在超时时间之内,这个邻接条目是有效的。
stale--这个邻接条目是有效的,但是比较可疑。如果条目是有效的,ip?neigh不
会改变邻接状态,也不会修改其地址。
?


示例

在设备eth0上,为地址10.0.0.3添加一个permanent?ARP条目:?
ip?neigh?add?10.0.0.3?lladdr?0:0:0:0:0:1?dev?eth0?nud?perm

把状态改为reachable?
ip?neigh?chg?10.0.0.3?dev?eth0?nud?reachable

?

6.2.ip?neighbour?delete--删除一个邻接条目


缩写:delete、del、d


简介

  这个命令用来删除一个邻接条目


参数

  这个命令的参数和ip?neigh?add命令的相同,只不过lladdr和nud将被忽略。



示例

删除设备eth0上的一个ARP条目10.0.0.3?
ip?neigh?del?10.0.0.3?dev?eth0

?

  执行了删除命令之后,被删除的条目不会马上消失,它会在系统的下次垃圾收
集时被删除。如果被操作的条目正在使用,将不能被删除。


警告

  如果试图删除或者手工修改一个由内核建立的noarp条目,会导致一些不可预
知的行为。

6.3.ip?neighbour?show--显示网络邻居的信息


缩写:show、list、sh、ls


简介

  这个命令用于显示网络邻居信息。


参数

to?ADDRESS(default)?指定要显示的地址?
dev?NAME?只显示设备NAME的邻居?
unused?只显示当前没有使用的邻居?
nud?NUD_STATE?只列出处于NUD_STATE状态的邻接条目。NUD_STATE的值下面将会介
绍。nud?all表示所有的状态。这个选项可以使用多次。如果缺少这个选项,ip会
列出除none和noarp状态的所有条目。?


输出格式

duznet@alisa:~?$?ip?neigh?ls
::?dev?lo?lladdr?00:00:00:00:00:00?nud?noarp
fe80::200:cff:fe76:3f85?dev?eth0?lladdr?00:00:0c:76:3f:86?router?
????nud?stale
0.0.0.0?dev?lo?lladdr?00:00:00:00:00:00?nud?noarp
193.233.7.254?dev?eth0?lladdr?00:00:0c:76:3f:85?nud?reachable
193.233.7.85?dev?eth0?lladdr?00:e0:1e:63:39:00?nud?stale
kuznet@alisa:~?$

?

  每行的第一部分是网络邻居的协议地址。第二部分是设备名。省下的部分是这
个邻接条目的信息。

  lladdr是这个设备的链路层地址。

  nud是条目代表连接的状态。下面是状态的完整列表和简单描述:

none?网络邻居的状态为空。?
incomplete?这个邻居正在被解析。?
reachable?网络邻居有效并且可达。?
stale?邻居有效,但是可能不可达。因此,内核将在首次传输时进行检查。?
delay?一个数据包已经发到处于stale的网络邻居,内核在等待应答信息。?
probe?delay计时器过期,还没有收到确认信息。内核开始使用ARP/NDISC消息包探
测这个网络邻居。?
failed?解析失败。?
noarp?网络邻居有效,不必检查。?
permanent?这是一个noarp条目,只有系统管理员可以从邻接表中把它删除。?

  在这些状态中,除了none、faliled和incomplete.

  IPVv6网络邻居可以有一个叫做router的标志,它表示这个节点是一个IPv6路
由器。


-statistics

  -statistics选项可以显示很多有用的信息。例如:

kuznet@alisa:~?$?ip?-s?n?ls?193.233.7.254
193.233.7.254.?dev?eth0?lladdr?00:00:0c:76:3f:85?ref?5?
????used?12/13/20?nud?reachable
kuznet@alisa:~?$

?

  输出信息里面多了ref和用斜缸分开的三个时间。ref表示有多少用户使用这个
条目;三个时间分别是使用时间、确认时间和刷新时间。因此,上面输出中的时间
表示:

条目12秒之前刚刚使用过;?
13秒之前被确认;?
20秒之前被更新。?
?

6.4.ip?neighbour?flush--清除邻接条目


缩写:flush、f


简介

  这个命令用来清除符合某个条件的邻接表条目。


参数

  这个命令的参数和ip?neigh?sh相同。不同之处是,如果没有参数,它什么也
不会做。而且,默认情况下,被删除的条目不包括处于permanent和noarp状态的条
目。


-statistics

  使用了-statistics选项,这个命令的输出将更为详尽。它会输出删除的条目
数和清除邻接表遍历的次数。如果使用了两个-s选项,命令的输出将包括被删除条
目的信息。


示例

netadm@alisa:~?#?ip?-s?-s?n?f?193.233.7.254
193.233.7.254?dev?eth0?lladdr?00:00:0c:76:3f:85?ref?5?
????used?12/13/20?nud?reachable

***?Round?1,deleting?1?entries?***
***?Flush?is?complete?after?1?round?***
netadm@alisa:~?#

读书人网 >操作系统

热点推荐