IPv6 no Amazon VPC: falta de rota padrão no Ubuntu

7

Agora, o Amazon tem estendido IPv6 suporte para VPC para a maioria das suas regiões globais, incluindo eu-west-1, estou tentando obter minhas instâncias conectadas. Infelizmente não consigo encaminhar para o trabalho.

Eu segui as etapas do guia de migração , isto é, eu associei um CIDR IPv6 ao nosso VPC, atribuí uma parte disso à nossa sub-rede 'pública', atualizei a tabela de rotas VPC para enviar ::/0 através do igw (gateway de internet), certifiquei-me de que a sub-rede pública e os endereços IPv6 atribuídos a algumas novas instâncias do Ubuntu 16.04 a partir do Console.

Eu então configurei o Ubuntu para obter o endereço atribuído via DHCPv6 como descrito aqui , adicionando iface eth0 inet6 dhcp à configuração de rede e reinicialização.

Quando reinicializo a instância, demora alguns minutos para iniciar, mas, por fim, consigo fazer login e ip a s mostra um endereço IPv4 global e IPv6 configurado.

No entanto, a rede v6 não está funcionando:

# ping6 www.google.com
connect: Network is unreachable

De fato, a tabela de rotas não tem uma rota padrão:

# ip -6 route
2001:DB8:1234:1234:1234:1234:1234:1234 dev eth0  proto kernel  metric 256
fe80::/64 dev eth0  proto kernel  metric 256  mtu 9001

A adição manual de uma rota v6 padrão, via ip -6 route add default dev eth0 , leva a uma tabela de roteamento com a aparência correta:

# ip -6 route
2001:DB8:1234:1234:1234:1234:1234:1234 dev eth0  proto kernel  metric 256
fe80::/64 dev eth0  proto kernel  metric 256  mtu 9001
default dev eth0  metric 1024

Infelizmente, isso resulta em um erro diferente:

# ping6 www.google.com
PING www.google.com(dh-in-x6a.1e100.net) 56 data bytes
From dh-in-x6a.1e100.net icmp_seq=1 Destination unreachable: Address unreachable
From dh-in-x6a.1e100.net icmp_seq=2 Destination unreachable: Address unreachable
From dh-in-x6a.1e100.net icmp_seq=3 Destination unreachable: Address unreachable

O cliente DHCPv6 não deve cuidar da adição de uma rota padrão? E por que eu não consigo alcançar o mundo lá fora mesmo assim?

    
por Martijn Heemels 27.01.2017 / 17:28

2 respostas

2

Descobri que perdi um passo no guia de migração.

Ao ativar o IPv6 em um VPC existente, algumas coisas, como tabelas de rotas e grupos de segurança, precisam ser atualizadas manualmente se você tiver feito modificações nos padrões.

Eu atualizei nossa tabela de rotas (conforme link ) e grupos de segurança (conforme link ), mas tinha esquecido de atualizar nossa rede ACL, como mencionado na mesma página.

Então, eu estava efetivamente fazendo o firewall de todo o tráfego IPv6. A adição de regras ALLOW de entrada e saída para ::/0 corrigiu meu problema para o Ubuntu 16.04 .

Para o Ubuntu 14.04 , houve um erro no guia de migração da Amazon, que já foi corrigido. O conselho para adicionar iface eth0 inet6 dhcp a /etc/networking/interfaces.d/eth0.cfg não funcionou, levando a um endereço IPv6 configurado, mas a uma rota padrão ausente.

Em vez disso, tive que iniciar o dhcp-client quando a interface surgiu, assim: up dhclient -6 . Acabei com a seguinte configuração de trabalho no arquivo /etc/networking/interfaces.d/eth0.cfg :

# The primary network interface
auto eth0
iface eth0 inet dhcp
    up dhclient -6 -v -pf /run/dhclient6.$IFACE.pid -lf /var/lib/dhcp/dhclient6.$IFACE.leases $IFACE

Parece que a Amazon atualizou seu guia de migração para dizer algo semelhante ( link ).

    
por 02.03.2017 / 10:57
3

Sua tabela de roteamento não parece correta. Esta linha parece muito errada:

default dev eth0  metric 1024

Esta linha diz que toda a Internet está conectada diretamente à sua interface eth0 sem precisar passar por nenhum roteador intermediário. Isso fará com que seu sistema envie solicitações de descoberta neighor na LAN para cada host que ele tentar alcançar. E se esse host não estiver diretamente conectado à sua LAN, ele não verá a solicitação de descoberta do vizinho.

Portanto, você não pode realmente esperar que nada funcione com essa tabela de roteamento. Com alguns roteadores, é possível configurar um roteador vizinho para contornar o seu erro de configuração. Mas você não deveria contar com isso. Em vez disso, você deve descobrir qual é o endereço de gateway correto e configurá-lo.

Aqui está um exemplo de como a entrada da tabela de roteamento se parece em uma máquina específica com conectividade funcional:

default via fe80::1 dev eth0  metric 1024  advmss 1220

A parte via fe80::1 é o que falta na sua. O endereço que você deve usar pode ser diferente de fe80::1 , você precisaria perguntar ao seu provedor qual endereço de gateway deve ser usado se eles não tiverem lhe contado. As duas maneiras que eu tenho visto principalmente provedores escolherem endereçar seu gateway são fe80::1 ou o /64 prefixo seguido por ::1 que no seu caso se tornaria 2001:DB8:1234:1234::1 .

A parte advmss 1220 não é absolutamente necessária, mas eu a incluo porque vai resolver alguns problemas de MTU.

Depois de corrigir a entrada da tabela de roteamento, as próximas etapas a serem testadas são verificar se o roteador está sendo exibido no seu cache vizinho. E, em seguida, use traceroute6 ou mtr para ver até onde você pode obter pacotes antes que eles sejam perdidos.

    
por 28.01.2017 / 20:39