Tentando ativar o IPv6 resulta em um erro "Não há rota para hospedar"

8

Estou configurando uma rede de pilha dupla em um servidor KVM usando endereços IPv4 e IPv6 estáticos fornecidos pelo meu provedor.

Eu introduzo todos os endereços, servidores de nomes e gateways conforme necessário ao instalar o Ubuntu. Depois disso, verifiquei o /etc/network/interfacesarquivo e notei que a estrofe do IPv6 estava ausente (uma ifconfigexecução confirmou isso); por isso, adicionei as linhas relevantes. Este é o arquivo final:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 151.236.18.86
        netmask 255.255.255.0
        network 151.236.18.0
        broadcast 151.236.18.255
        gateway 151.236.18.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 91.227.204.227 91.227.205.227
        dns-search mydomainname.com
iface eth0 inet6 static
        pre-up modprobe ipv6
        address 2001:b60:1000:151:236:18:86:0
        netmask 112
        gateway 2001:b60:1000::1
        dns-nameservers 2001:4860:4860::8888 2001:4860:4860::8844
        dns-search mydomainname.com

Em seguida, reiniciei a rede via sudo /etc/init.d/networking stop && sudo /etc/init.d/networking restarte notei que, enquanto o IPv4 estava funcionando, a conectividade IPv6 de saída não estava disponível (ainda não verifiquei a conectividade de entrada).

ifconfige ip -6 addrmostre que o endereço IPv6 é reconhecido:

eth0      Link encap:Ethernet  HWaddr 52:54:00:b1:27:87  
          inet addr:151.236.18.86  Bcast:151.236.18.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:feb1:2787/64 Scope:Link
          inet6 addr: 2001:b60:1000:151:236:18:86:0/112 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:16409 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1178 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1126656 (1.1 MB)  TX bytes:763658 (763.6 KB)

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 2001:b60:1000:151:236:18:86:0/112 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:feb1:2787/64 scope link 
       valid_lft forever preferred_lft forever

Pelo contrário, nenhuma rota padrão existe para a pilha IPv6:

$ ip -6 route
2001:b60:1000:151:236:18:86:0/112 dev eth0  proto kernel  metric 256 
fe80::/64 dev eth0  proto kernel  metric 256 

Tentar adicionar a rota ausente leva ao erro "Nenhuma rota para hospedar":

$ sudo ip -6 route add default via 2001:b60:1000::1
RTNETLINK answers: No route to host

O que poderia estar errado e como posso corrigir a configuração de rede para que a pilha IPv6 funcione?

Alessandro Menti
fonte

Respostas:

6

Dentro da sua máquina virtual, execute o seguinte:

ping6 ff02::2%eth0

Este ff02::2é o endereço multicast do IPv6 "todos os roteadores". O roteador no link responderá ao ping com seu próprio endereço. Por exemplo:

64 bytes from fe80::56e6:fcff:fef4:66f1: icmp_seq=1 ttl=64 time=0.347 ms

Você pode adicioná-lo como o gatewayendereço.

iface eth0 inet6 static
        .....
        gateway fe80::56e6:fcff:fef4:66f1
        .....
Michael Hampton
fonte
Eu fiz isso, três roteadores responderam (ninguém correspondia ao endereço de gateway que meu provedor me forneceu); Eu escolhi aquele com a menor latência e mudei a configuração da rede. Agora, a resolução de nomes funciona, mas a conectividade IPv6 não (eu publiquei ping6 -c 3 ipv6.google.com, o DNS encontrou o endereço, mas houve 100% de perda de pacotes). Alguma ideia?
Alessandro Menti
Três roteadores diferentes responderam? Seu provedor tem uma configuração ainda mais bizarra do que suspeitávamos. Neste ponto, só posso sugerir que você experimente cada um deles e veja se um deles funciona. Se nenhum deles funcionar, você precisará entrar em contato com o provedor para solicitar a gentileza de corrigir sua rede interrompida. :)
Michael Hampton
3

Sua máscara de rede deve ser 64. Com o IPv6, toda LAN é geralmente um / 64. Eu acho que seu provedor permite que você use um / 112 a partir desse / 64, mas você deve configurar um / 64 na interface.

Sander Steffann
fonte
Reconfigurei a pilha IPv6 para usar um / 64 netblock, infelizmente o problema persiste com os mesmos sintomas.
Alessandro Menti
Sinto muito, agora vejo que seu host está em 2001: b60: 1000: 151 :: / 64 e seu gateway em 2001: b60: 1000: 0 :: / 64. CDLAN deve ter-lhe dado a informação errada, ou a sua rede IPv6 é confuso e / ou afastamento da prática ...
Sander Steffann
1
Infelizmente, esse desvio estranho é muito comum entre os provedores de VPS.
Michael Hampton
1

Aconteceu que o comprimento da máscara de rede que o provedor me forneceu estava incorreto: o correto estava 48. Mudar fez o truque.

Alessandro Menti
fonte