私は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
ルートが1800秒後に期限切れになるように構成されているのはなぜですか?これはどこで設定できますか?
[編集2016-05-14 16:08]
デフォルトルートを手動で追加しても問題なく動作するようです。それは置かれたままです。しかし、私は起動後に無期限のルートが必要です。
[編集2016-05-14 16:13]
マシンは、KVMホストはnetcup.deによってホストされています。プロバイダーが推奨する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
virt-何が言う:
root@wopr:~# virt-what
kvm
[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
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
起動時に期限切れにならないデフォルトのルートを取得しました。問題が解決しました。サンダー、私を正しい方向に向けてくれてありがとう。
1800秒は、ルーターアドバタイズメントのデフォルトタイムアウトのように聞こえます。
私の最初の推測は、インターフェイスにipv6 nd ra suppress
を使用して構成されたCiscoルーターがネットワーク上にあることです。そのモードでは、ホストがRSでRAを要求すると、ルーターはRAを送信しますが、定期的に更新しません。ホストはインターフェースを始動するときにRSを送信します。これは、ブート後にデフォルトルートを取得する理由を説明します。
その設定は、奇妙で役に立たないシスコの設定です。ルーターは、要求されたときにRAを+定期的に(Ciscoのデフォルト)送信するか、まったく送信しない(ipv6 nd ra suppress all
)必要があります。中間設定ipv6 nd ra suppress
は、このような奇妙な動作を引き起こすため、使用しないでください。
実際、マークされた答えは間違っています。問題は、Dockerがインターフェイスでの転送を有効にし、Linuxカーネルがその特定のインターフェイスのRAを無視するようにすることです。次を参照してください https://www.mattb.net.nz/blog/2011/05/12/linux-ignores-ipv6-router-advertisements-when-forwarding-is-enabled /
したがって、この場合の正しい解決策は、accept_ra
から2
:
# cat /etc/sysctl.d/ipv6.conf
net.ipv6.conf.default.accept_ra=2
net.ipv6.conf.all.accept_ra=2
net.ipv6.conf.eth0.accept_ra=2
ルート検出を完全に無効にする代わりに。