Używam Debian 8 na serwerze vServer. Po zainstalowaniu dokera i włączeniu protokołu IPv6 zauważyłem coś dziwnego. Nie wiem, czy doker ma z tym coś wspólnego, po prostu zauważyłem ten problem po jego zainstalowaniu.
Moja domyślna trasa jest skonfigurowana do wygaśnięcia po ok. 1800secs. Właściwie znika po tym czasie. To wtedy (oczywiście) tracę łączność 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
Dlaczego trasa jest skonfigurowana tak, aby wygasała po 1800 s? Gdzie mogę to skonfigurować?
[edycja 2016-05-14 16:08]
Ręczne dodanie domyślnej trasy wydaje się działać dobrze. Pozostaje na miejscu. Ale po uruchomieniu muszę mieć nie wygasającą trasę.
[edycja 2016-05-14 16:13]
Maszyna działa na hoście KVM hostowanym przez netcup.de. Korzysta ze sterownika virtio, zgodnie z zaleceniami mojego dostawcy.
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-co mówi:
root@wopr:~# virt-what
kvm
[edytuj 2016-05-14 15:34]
Wygląda na to, że tęskniłem za tym net.ipv6.conf.default.autoconf
ustawionym na 1. Teraz dodałem plik w /etc/sysctl.d, aby ukryć to podczas bootowania:
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
Odpowiedzi:
Wygląda na to, że spóźniłem się na ustawienie net.ipv6.conf.default.autoconf na 1. Dodanie pliku w /etc/sysctl.d w celu wyeliminowania tego problemu podczas rozruchu rozwiązało problem:
Teraz dostaję domyślną trasę, która nie wygasa w czasie uruchamiania. Problem rozwiązany. Dzięki, że wskazałeś mi właściwy kierunek, Sander.
źródło
1800 sekund brzmi jak domyślny limit czasu dla reklamy routera.
Najpierw sądzę, że w sieci jest router Cisco skonfigurowany
ipv6 nd ra suppress
w interfejsie. W tym trybie router wyśle RA, gdy host zażąda RS z RS, ale nie odświeża go regularnie. Host wysyła RS podczas uruchamiania interfejsu, co wyjaśnia, dlaczego dostaje domyślną trasę po uruchomieniu.To ustawienie jest dziwnym, bezużytecznym ustawieniem Cisco. Router powinien albo regularnie wysyłać RA na żądanie + regularnie (domyślnie w Cisco), albo wcale (
ipv6 nd ra suppress all
). Ustawienie w połowieipv6 nd ra suppress
powoduje takie dziwne zachowanie i nie należy go używać.źródło
accept_ra=0
.Właściwie zaznaczona odpowiedź jest zła. Problem polega na tym, że doker umożliwia przekazywanie na interfejsie (interfejsach) i powoduje, że jądro Linuksa ignoruje RA na tym konkretnym interfejsie, patrz: https://www.mattb.net.nz/blog/2011/05/12/linux-ignores -ipv6-router-adsments-when-forwarding-is-enabled /
Więc poprawnym rozwiązaniem w tym przypadku jest do zestawu
accept_ra
do2
:zamiast całkowicie wyłączać wykrywanie trasy.
źródło