Я использую Debian 8 на vServer. После установки докера и включения IPv6 я заметил кое-что странное. Я не знаю, имеет ли docker какое-либо отношение к этому, просто я заметил эту проблему после установки.
Мой маршрут по умолчанию настроен на истечение после ок. 1800secs. Я на самом деле исчезает после этого тайм-аута. Это когда я (очевидно) теряю связь 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 с? Где я могу настроить это?
[edit 2016-05-14 16:08]
Добавление маршрута по умолчанию вручную, кажется, работает просто отлично. Это остается на месте. Но мне нужно иметь не истекающий маршрут после загрузки.
[edit 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
вирт-что говорит:
root@wopr:~# virt-what
kvm
[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
Ответы:
Похоже, я пропустил, что net.ipv6.conf.default.autoconf был установлен на 1. Добавление файла в /etc/sysctl.d для подавления этого при загрузке решило проблему для меня:
Теперь я получаю маршрут по умолчанию, который не истекает во время загрузки. Задача решена. Спасибо, что указал мне правильное направление, Сандер.
источник
1800 секунд звучит как тайм-аут по умолчанию для объявления маршрутизатора.
Мое первое предположение было бы, что есть маршрутизатор Cisco в сети, которая настроена
ipv6 nd ra suppress
на интерфейсе. В этом режиме маршрутизатор отправляет RA, когда хост запрашивает один с RS, но не обновляет его регулярно. Хост отправляет RS при запуске интерфейса, что объясняет, почему он получает маршрут по умолчанию после загрузки.Эта настройка является странной бесполезной настройкой Cisco. Маршрутизатор должен либо отправлять RA при запросе + регулярно (по умолчанию в Cisco), либо вообще не отправлять (
ipv6 nd ra suppress all
). Установка на полпутиipv6 nd ra suppress
вызывает странное поведение, подобное этому, и не должна использоваться.источник
accept_ra=0
будет установлен.На самом деле, помеченный ответ неверен. Проблема в том, что docker включает переадресацию на интерфейс (ы), и это заставляет ядро Linux игнорировать RA на этом конкретном интерфейсе, см .: https://www.mattb.net.nz/blog/2011/05/12/linux-ignores -ipv6-маршрутизатор-объявления-когда-экспедиторская-в-включен /
Таким образом, правильное решение в данном случае заключается в набор
accept_ra
к2
:вместо полного отключения обнаружения маршрута.
источник