Debian
Linux IPv6 環迴路由自動添加
我們有一台執行 Debian Lenny 的路由器,幾個月來一直在愉快地路由 IPv6。我們的上游已經告知我們的地址範圍正在改變,並且兩者目前都在執行,所以我想我會添加第二個地址進行測試。
ip -6 addr add 2405:3c00:1:13::2/64 dev eth1
# ping6 2405:3c00:1:13:: (our upstream router) 64 bytes from 2405:3c00:1:13::2: icmp_seq=1 ttl=64 time=0.089 ms
什麼?
# ip -6 route get 2405:3c00:1:13:: local 2405:3c00:1:13:: from :: via :: dev lo table local proto none src 2405:3c00:1:13::2 metric 0 mtu 16436 advmss 16376 hoplimit 4294967295 # route -6 | grep 2405 2405:3c00:1:13::/64 :: U 256 0 1 eth1 2405:3c00:1:13::/128 :: Un 0 1 0 lo 2405:3c00:1:13::2/128 :: Un 0 1 0 lo
我很好奇這
...13::/128
條路線是如何到達的。在我將地址添加到界面後大約兩秒鐘出現。界面上未啟用 radvd(8),取消設置accept_ra
並autoconf
沒有區別。有什麼簡單的方法可以關注哪個程序正在修改路由表?有沒有人對罪魁禍首有什麼絕妙的想法?
在任何 /64 子網中, ::0 地址是子網路由器任播地址;它辨識鏈路上的所有路由器。由於您打開了 net.ipv6.conf.all.forwarding,系統將自己標識為路由器並加入該選播組。不幸的是,這種行為並沒有真正記錄或可配置,因此您可能擁有正確的解決方案。
更理想的是不使用該地址,因為它在技術上是保留的,但這可能不是您的 ISP 的選項。
您可能已經註意到該路線僅顯示為
route -6
而不顯示ip -6 route
。那是因為路由在local
表中,而不是main
. 你可以看到它ip -6 route list table local
。只需刪除該 /128 路線就可以解決問題。