Debian / IPv6:デフォルトルートは1800秒後に期限切れになり、接続が失われます


10

私は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]

マシンは、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

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

dockerを除いて、このマシンで実行されている他のアプリケーションはそれほど多くありません。
ラジュエット2016年

回答:


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

起動時に期限切れにならないデフォルトのルートを取得しました。問題が解決しました。サンダー、私を正しい方向に向けてくれてありがとう。


最後に私は解決策を得ました!
schnawel007

4

1800秒は、ルーターアドバタイズメントのデフォルトタイムアウトのように聞こえます。

私の最初の推測はipv6 nd ra suppress、インターフェース上で構成されたネットワーク上にCiscoルーターがあることです。そのモードでは、ホストがRSでRAを要求すると、ルーターはRAを送信しますが、定期的に更新しません。ホストはインターフェースを起動するときにRSを送信します。これは、ブート後にデフォルトルートを取得する理由を説明します。

その設定は、奇妙で役に立たないシスコの設定です。ルーターは、要求されたときにRAを+定期的に(Ciscoのデフォルト)送信するか、まったく送信しない(ipv6 nd ra suppress all)必要があります。中間の設定ipv6 nd ra suppressは、このような奇妙な動作を引き起こすため、使用しないでください。


root @ wopr:〜#cat / proc / sys / net / ipv6 / conf / eth0 / accept_raは0になります。これは、eth0がRAを無視していることを意味していると思いますか?
ラジュエット2016年

1
はい、その場合はRAを使用していません。accept_ra=0設定される前に既に受け付けている可能性があります。
サンダーステファン2016年

0

実際、マークされた答えは間違っています。問題は、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

ルート検出を完全に無効にする代わりに。


これを追加しましたが、Dockerを実行しているホストはデフォルトルートを取得しません。別の非Dockerホストがデフォルトルートを取得します。
Lenne
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.