Linux IPv6环回路由被自动添加

我们有一台运行Debian Lenny的路由器,这个路由器已经快速路由IPv6好几个月了。 我们的上游已经build议,我们的地址范围正在改变,并且都在运行,所以我想我会添加第二个地址进行testing。

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

有没有简单的方法来关注哪个进程正在修改路由表? 有没有人有什么聪明的想法可能是什么罪魁祸首?

在任何/ 64子网中,:: 0地址是子网路由器任播地址; 它标识链路上的所有路由器。 由于您打开了net.ipv6.conf.all.forwarding,系统将自己标识为路由器并join该任播组。 不幸的是,这种行为没有真正的logging或configuration,所以你可能有正确的解决scheme。

更理想的是不使用这个地址,因为它在技术上是保留的,但是这可能不是你的ISP的select。

您可能已经注意到,路由只显示与route -6而不是ip -6 route 。 这是因为路线是在local表中,而不是main 。 你可以用ip -6 route list table local查看它。 只要删除该/ 128路线可能会伎俩。

(从短期来看,我们已经解决了这个问题

 # 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 

但是这是一个麻烦的黑客。)