Linux IPv6 环回路由自动添加

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_raautoconf没什么区别。

有没有简单的方法可以监控哪个进程正在修改路由表?有谁知道罪魁祸首可能是什么吗?

答案1

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

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

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

答案2

(短期内我们解决了这个问题

# ip -6 addr add 2405:3c00:1:13::/128 dev  eth1
# ip -6 addr delete 2405:3c00:1:13::/128 dev  eth1
# route -6 | grep 3c00
2405:3c00:1:13::/64            ::                         U    256 0     0 eth1
2405:3c00:1:13::2/128          ::                         Un   0   1     0 lo

但这是一种愚蠢的伎俩。)

相关内容