Debian / IPv6: маршрут за замовчуванням закінчується через 1800 секунд, втрачаючи зв’язок


10

Я запускаю Debian 8 на vServer. Після установки докера та включення IPv6 я зазначив щось дивне. Я не знаю, чи Docker має щось спільне з цим, я просто помітив цю проблему після її встановлення.

Мій маршрут за замовчуванням налаштовано, щоб закінчитися після приблизно. 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

За винятком докера, на цій машині працює не так багато інших програм.
lajuette

Відповіді:


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 секунд звучить як час очікування за рекламою маршрутизатора за замовчуванням.

Першим моїм припущенням було б, що в мережі є маршрутизатор Cisco, який налаштований ipv6 nd ra suppressна інтерфейсі. У цьому режимі маршрутизатор відправлятиме RA, коли хост запитує один з RS, але не оновлює його регулярно. Хост надсилає RS під час підключення інтерфейсу, що пояснює, чому він отримує маршрут за замовчуванням після завантаження.

Цей параметр - дивна марна настройка Cisco. Маршрутизатор повинен або надсилати 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?
lajuette

1
Так, у такому випадку це не використання РА. Можливо, він уже прийняв попередньо accept_ra=0встановлений.
Сандер Стеффан

0

Власне, позначена відповідь неправильна. Проблема полягає в тому, що докер дозволяє пересилати інтерфейс (и) і змушує ядро ​​Linux ігнорувати RA на цьому конкретному інтерфейсі, дивіться: https://www.mattb.net.nz/blog/2011/05/12/linux-ignores -ipv6-маршрутизатор-оголошення-коли переадресація вмикається /

Таким чином, правильне рішення в даному випадку полягає в набір 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

замість того, щоб повністю відключити пошук маршруту.


Я додав це, досі хост-докер, який працює, не отримує маршрут за замовчуванням. Ще один не-докерський хост отримує маршрут за замовчуванням.
Ленна
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.