Linux IPv6 环回路由自动添加

Zan*_*hey 4 debian ipv6 linux-networking

我们有一台运行 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
Run Code Online (Sandbox Code Playgroud)

什么?

# 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
Run Code Online (Sandbox Code Playgroud)

我很好奇这条...13::/128路线是怎么到达的。在我将地址添加到界面后大约两秒钟,它就会出现。接口上未启用 radvd(8),取消设置accept_raautoconf没有什么区别。

有没有什么简单的方法可以监视哪个进程正在修改路由表?有谁对罪魁祸首可能有什么绝妙的想法吗?

Ben*_*cks 5

在任何 /64 子网中,::0 地址是子网路由器任播地址;它识别链路上的所有路由器。由于您已打开 net.ipv6.conf.all.forwarding,系统会将自身标识为路由器并加入该任播组。不幸的是,这种行为并没有真正记录或配置,因此您可能拥有正确的解决方案。

更理想的情况是不使用该地址,因为它在技术上是保留的,但您的 ISP 可能不提供此选项。

您可能已经注意到,该路线仅显示route -6而不显示ip -6 route。那是因为路线在local表中,而不是main. 您可以使用 来查看它ip -6 route list table local。只需删除 /128 路由就可以解决问题。

  • 太好了,谢谢。我设法说服上游放弃 ::0 地址。 (2认同)