Estou executando o Debian 8 em um vServer. Depois de instalar o docker e ativar o IPv6, notei algo estranho. Não sei se o docker tem algo a ver com isso, é só que notei esse problema depois de instalá-lo.
Minha rota padrão está configurada para expirar após ca. 1800seg. Na verdade, eu desapareço após esse tempo limite. É quando eu (obviamente) perco a conectividade 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
Por que a rota está configurada para expirar após 1800 s? Onde posso configurar isso?
[editar 2016-05-14 16:08]
Adicionar uma rota padrão manualmente parece funcionar bem. Ele fica parado. Mas eu preciso ter uma rota não expirada após a inicialização.
[editar 14/05/2016 16:13]
A máquina está sendo executada em um host KVM hospedado pelo netcup.de. Ele está usando o driver virtio, conforme recomendado pelo meu provedor.
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-o que diz:
root@wopr:~# virt-what
kvm
[edit 2016-05-14 15:34]
Parece que eu perdi o que net.ipv6.conf.default.autoconf
foi definido como 1. Agora eu adicionei um arquivo no /etc/sysctl.d para suprimir isso na inicialização:
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
Respostas:
Parece que eu perdi que net.ipv6.conf.default.autoconf foi definido como 1. Adicionar um arquivo em /etc/sysctl.d para suprimir isso na inicialização resolveu o problema para mim:
Agora, recebo uma rota padrão que não expira no momento da inicialização. Problema resolvido. Obrigado por me apontar na direção certa, Sander.
fonte
1800 segundos soa como um tempo limite padrão para um anúncio de roteador.
Meu primeiro palpite seria que existe um roteador Cisco na rede configurado com
ipv6 nd ra suppress
a interface. Nesse modo, o roteador envia um RA quando um host solicita um com um RS, mas não o atualiza regularmente. Um host envia um RS ao ativar a interface, o que explicaria por que ele obtém uma rota padrão após a inicialização.Essa configuração é uma configuração estranha e inútil da Cisco. Um roteador deve enviar RAs quando solicitado + regularmente (o padrão na Cisco) ou não (
ipv6 nd ra suppress all
). A configuraçãoipv6 nd ra suppress
intermediária causa um comportamento estranho como esse e não deve ser usada.fonte
accept_ra=0
ser definido.Na verdade, a resposta marcada está errada. O problema é que o docker habilita o encaminhamento nas interfaces e faz com que o kernel do Linux ignore os RAs nessa interface específica, consulte: https://www.mattb.net.nz/blog/2011/05/12/linux-ignores -ipv6-router-propagandas-quando-encaminhamento-está-ativado /
Portanto, a solução correta nesse caso é definir
accept_ra
como2
:em vez de desativar completamente a descoberta de rotas.
fonte