Debian / IPv6:默认路由在 1800 秒后过期,失去连接

laj*_*tte 11 networking debian routing ipv6 docker

我在 vServer 上运行 Debian 8。安装 docker 并启用 IPv6 后,我注意到一些奇怪的事情。不知道docker和这个有没有关系,只是安装后发现这个问题。

我的默认路由配置为在 ca 后过期。1800 秒。在此超时后,我实际上消失了。这是我(显然)松散 IPv6 连接的时候。

root@wopr:~#  ip -6 route
xxxx:yyyy:zzz:xxxx::/64 dev eth0  proto kernel  metric 256
fe80::/64 dev eth0  proto kernel  metric 256
fe80::/64 dev br-5c1ce68ea951  proto kernel  metric 256
fe80::/64 dev br-61f6bbfdbe87  proto kernel  metric 256
[a lot more routed for my docker containers]
default via fe80::1 dev eth0  proto ra  metric 1024  expires 1259sec hoplimit 64
Run Code Online (Sandbox Code Playgroud)

为什么将路由配置为在 1800 秒后过期?我在哪里可以配置这个?

[编辑 2016-05-14 16:08]

手动添加默认路由似乎工作得很好。它保持原样。但是我需要在启动后有一个非过期的路由。

[编辑 2016-05-14 16:13]

该机器在 netcup.de 托管的 KVM 主机上运行。它正在使用我的提供商推荐的 virtio 驱动程序。

root@wopr:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback
iface lo inet6 loopback

auto eth0
iface eth0 inet dhcp

iface eth0 inet6 static
       address xxxx:yyyy:zzz:xxxx::1
       netmask 64
       gateway fe80::1
Run Code Online (Sandbox Code Playgroud)

virt-what 说:

root@wopr:~# virt-what
kvm
Run Code Online (Sandbox Code Playgroud)

[edit 2016-05-14 15:34] 看起来我错过了net.ipv6.conf.default.autoconf设置为 1 的设置。现在我在 /etc/sysctl.d 中添加了一个文件以在启动时抑制它:

root@wopr:~# cat /etc/sysctl.d/ipv6.conf
net.ipv6.conf.default.accept_ra=0
net.ipv6.conf.default.autoconf=0
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.all.autoconf=0
net.ipv6.conf.eth0.accept_ra=0
net.ipv6.conf.eth0.autoconf=0
Run Code Online (Sandbox Code Playgroud)

laj*_*tte 8

看起来我错过了 net.ipv6.conf.default.autoconf 被设置为 1。在 /etc/sysctl.d 中添加一个文件以在启动时抑制它为我解决了这个问题:

root@wopr:~# cat /etc/sysctl.d/ipv6.conf
net.ipv6.conf.default.accept_ra=0
net.ipv6.conf.default.autoconf=0
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.all.autoconf=0
net.ipv6.conf.eth0.accept_ra=0
net.ipv6.conf.eth0.autoconf=0
Run Code Online (Sandbox Code Playgroud)

现在我得到了一条不会在启动时过期的默认路由。问题解决了。谢谢你给我指明了正确的方向,桑德。


San*_*ann 5

1800 秒听起来像是路由器广告的默认超时。

我的第一个猜测是网络上有一个配置ipv6 nd ra suppress在接口上的 Cisco 路由器。在这种模式下,当主机通过 RS 请求一个 RA 时,路由器将发送一个 RA,但不会定期刷新它。主机在启动接口时发送 RS,这将解释为什么它在启动后获得默认路由。

该设置是一个奇怪的无用 Cisco 设置。路由器应该在询问 + 时定期发送 RA(Cisco 的默认设置),或者根本不发送 ( ipv6 nd ra suppress all)。中途设置ipv6 nd ra suppress会导致这样的奇怪行为,不应使用。