J'utilise Debian 8 sur un vServer. Après avoir installé Docker et activé IPv6, j'ai remarqué quelque chose d'étrange. Je ne sais pas si Docker a quelque chose à voir avec cela, c'est juste que j'ai remarqué ce problème après l'avoir installé.
Mon itinéraire par défaut est configuré pour expirer après env. 1800secs. En fait, je disparais après ce délai. C'est alors que je perds (évidemment) la connectivité 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
Pourquoi la déroute est-elle configurée pour expirer après 1800 s? Où puis-je configurer cela?
[modifier le 2016-05-14 16:08]
L'ajout manuel d'un itinéraire par défaut semble très bien fonctionner. Il reste en place. Mais j'ai besoin d'avoir une route non expirante après le démarrage.
[modifier 2016-05-14 16:13]
La machine fonctionne sur un hôte KVM hébergé par netcup.de. Il utilise le pilote virtio, comme recommandé par mon fournisseur.
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-ce qui dit:
root@wopr:~# virt-what
kvm
[edit 2016-05-14 15:34]
On dirait que j'ai raté ce qui net.ipv6.conf.default.autoconf
était réglé sur 1. Maintenant, j'ai ajouté un fichier dans /etc/sysctl.d pour supprimer cela au démarrage:
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
Réponses:
Il semble que j'ai raté que net.ipv6.conf.default.autoconf était réglé sur 1. L'ajout d'un fichier dans /etc/sysctl.d pour supprimer cela au démarrage a résolu le problème pour moi:
Maintenant, je reçois un itinéraire par défaut qui n'expirera pas au démarrage. Problème résolu. Merci de m'avoir pointé dans la bonne direction, Sander.
la source
1800 secondes sonne comme un délai d'expiration par défaut pour une annonce de routeur.
Ma première supposition serait qu'il y a un routeur Cisco sur le réseau configuré avec
ipv6 nd ra suppress
l'interface. Dans ce mode, le routeur enverra un RA lorsqu'un hôte en demande un avec un RS, mais ne le rafraîchit pas régulièrement. Un hôte envoie un RS lors de la mise en place de l'interface, ce qui expliquerait pourquoi il obtient une route par défaut après le démarrage.Ce paramètre est un paramètre Cisco étrange et inutile. Un routeur doit soit envoyer des AR lorsqu'il lui est demandé + régulièrement (par défaut sur Cisco), soit pas du tout (
ipv6 nd ra suppress all
). Le paramètre à mi-cheminipv6 nd ra suppress
provoque un comportement étrange comme celui-ci et ne doit pas être utilisé.la source
accept_ra=0
soit défini.En fait, la réponse marquée est fausse. Le problème est que Docker permet le transfert sur les interfaces et que le noyau Linux ignore les RA sur cette interface particulière, voir: https://www.mattb.net.nz/blog/2011/05/12/linux-ignores -ipv6-router-advertising-when-forwarding-is-enabled /
Ainsi, la bonne solution dans ce cas est de définir
accept_ra
sur2
:au lieu de désactiver complètement la découverte d'itinéraire.
la source