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:~ #