[CentOS7] 使用ip neighbor指令來偵測修改其他的節點

URL Link //n.sfs.tw/11049

2017-05-12 09:25:23 By 張○○

這近某機器遇到一個奇特的狀態,ipv6的突然找不到路由器,重啟網卡,重新啟動也一樣。後來直接把MAC設定上去後,解決了這個惱人問題。

OS

CentOS Linux release 7.3.1611 (Core)

查看其他的節點

# ip ne

fe80::8e60:4fff:fe2b:c1e1 dev eno16777984 lladdr 8c:60:4f:2b:c1:e1 STALE
2001:288:5000:80::1 dev eno16777984  FAILED
fe80::72e4:22ff:fe25:7b8f dev eno16777984 lladdr 70:e4:22:25:7b:8f router REACHABLE
192.168.56.4 dev eno33557248 lladdr 00:50:56:9b:08:e7 REACHABLE
163.28.10.207 dev eno16777984  FAILED
192.168.56.3 dev eno33557248 lladdr 00:50:56:9b:ef:34 DELAY
163.28.84.254 dev eno16777984 lladdr 70:e4:22:25:7b:8f STALE

其中ne是neighbor的懶惰寫法,也可以更懶寫成 ip n,其顯示結果為

1IP/IP6位址 2dev 介面卡id 3lladdr 這個設備二層地址(MAC) 4router 5狀態

1. IP或IP6位址,如果fe80開頭的IP6位址,代表那是link-local的IP6位址。

2. dev+介面卡的id,可由指令ip addr 來查看,特別注意的是不會出現本機的位址,因為這顯示的是鄰居節點。

3. lladdr+MAC位址,lladdr是link-layer address的縮寫,如果狀態是FAILED此欄不會出現。

4.如果是IPv6的router會出現這個字,否則不會出現

5. 狀態,會出現的狀態主要有幾種,代表的意義如下,以下內容是我研究過並不是翻譯文:

IMCOMPLETE 向鄰居節點發送NS的封包,但未接到鄰居回應

REACHABLE 鄰居節點回應了NA的封包表示已收到NS封包,節點可達性確認

STALE (過期)自從上次鄰居可達性狀態後過了ReachableTime之後都沒有再和此節點連繫過。ReachableTime預設會是隨機15~45之間,因此只要超過此時間未和此節點再交換封包(可能無資料交換),則進入此狀態。另一種情形是鄰居節點自動送過來NA,裡面的MAC位址不同

DELAY 自從上次節點可達性狀態後過了ReachableTime之後都沒有再和此節點連繫過,向鄰居發送NS封包,等待鄰居回應,進入此狀態,若鄰居有回應則進入REACHABLE 狀態,若在DELAY_FIRST_PROBE_TIME期間內無回應(一般而言是5秒),進入PROBE狀態。

PROBE 在DELAY狀態向鄰居發送NS封包,在DELAY_FIRST_PROBE_TIME期間內鄰居無回應,進入此狀態,此時每RETRANS_TIMER秒(預設1秒)發送NS封包直到回應,更改狀態為REACHABLE或達到MAX_UNICAST_SOLICIT限制為止(預設3次),此時狀態變為FAILED

FAILED PROBE狀態後無回應或初次向鄰居發送NS無回應進入此狀態。


PERMANENT 手動設定,系統不會向鄰居節點偵測可達性,只有管理員能刪除此清單

NONE 虛擬狀態,初始或刪除時預設狀態,在初始發送NS前或被從清單要被清掉前的狀態(EMPTY),理論上應該看不到這個狀態,因為太短暫。

NOARP 系統不會向鄰居節點偵測可達性,生命期終止後可被移除

查看失敗的鄰居

# ip ne show nud failed

查看鄰居節點資料

# ip -s ne ls 2001:288:5000:80::1

2001:288:5000:80::1 dev eno16777984 lladdr 00:50:56:9b:e5:30 ref 1 used 179/170/163 probes 1 DELAY

179/170/163 分別是 幾秒前被使用/幾秒前被確認可達性/幾秒前被刷新 ,查看全部

# ip -s ne

新增刪除修改節點

新增--新增後狀態變為 PERMANENT

# ip ne add 192.168.99.254 lladdr 00:80:c8:27:69:2d dev eth3

修改

# ip ne change 2001:288:5000:80::1 dev eno16777984  lladdr 70:e4:22:25:7b:8f

刪除--刪掉後狀態變為FAILED,不知多久才會被系統回收

# ip ne del 192.168.56.1 dev ens192

刷新--只有學來的才會清掉,刷新後狀態變為FAILED,不知多久才會被系統回收

# ip ne flush dev eth0

參考資料

[1] http://blog.xuite.net/mb1016.flying/linux/28884358

[2] http://blog.sina.com.cn/s/blog_5ec353710102uwn6.html

[3] https://www.ietf.org/rfc/rfc2461.txt

[4] http://man7.org/linux/man-pages/man8/ip-neighbour.8.html