IPv6: ping6 do host externo funciona, mas não pode pingar no mesmo host [ubuntu 12.04]

1

Eu tenho um problema estranho com o ipv6 no Ubuntu 12.04.

Existem dois hosts, diretamente conectados à internet. Ambos atribuíram uma rede / 64. Eles estão configurados corretamente com um ponto de extremidade / 128 e um pode pingar o outro e vice-versa. Meu plano era terminar uma sub-rede / 112 do meu ipv6 / 64 atribuído à interface para ter muitos endereços para uso em vhosts do apache2. Mas esse não é o ponto.

Anfitrião A:

$ ifconfig
eth0      Link encap:Ethernet  HWaddr (...)
          inet6 addr: fe80::5246:5dff:(...)/64 Scope:Link
          inet6 addr: 2a01:xxx:xxx:000A::2/64 Scope:Global

$ route -A inet6
Kernel IPv6 routing table
Destination                    Next Hop                   Flag Met Ref Use If
2a01:xxx:xx:000A::/64          ::                         U    256 0     0 eth0
fe80::/64                      ::                         U    256 0     0 eth0
::/0                           fe80::1                    UG   1024 0     0 eth0
::/0                           ::                         !n   -1  1  5689 lo
::1/128                        ::                         Un   0   1    18 lo
2a01:xxx:xx:000A::2/128        ::                         Un   0   1   202 lo
2a01:xxx:xx:000A::/112        ::                         U    1024 0     0 lo
fe80::5246:5dff:fea1:977c/128  ::                         Un   0   1    86 lo
ff00::/8                       ::                         U    256 0     0 eth0
::/0                           ::                         !n   -1  1  5689 lo

O host B pode fazer ping6 2a01: xxx: xx: 000A :: [0001-FFFF] corretamente e funciona como eu esperava. Mas no Host A, eu não consigo pingar meus próprios endereços. Se eu tentar pingar 2a01: xxx: xxx: 000A :: n, recebo este:

$ ping6 2a01:xxx:xxx:000A::3
PING (...) 56 data bytes
ping: sendmsg: Invalid argument
ping: sendmsg: Invalid argument
ping: sendmsg: Invalid argument

Eu suspeito da tabela de roteamento, mas eu brinquei com ela há muito tempo e mesmo usando o google eu não consigo trabalhar.

Alguma idéia? Obrigado.

    
por t2m 13.04.2013 / 13:12

1 resposta

2

Você configurou 2a01: xxx: xx: 000a :: / 112 em lo. O prefixo mais específico ganha *, então você está tentando fazer o ping de um endereço IP (:: 3) em sua interface que não está lá. Você deve apenas configurar todos os endereços que você precisa em eth0 e remover a rota / 112 e / 128 de lo.

*) Como funciona: as decisões de roteamento são feitas procurando-se a rota "mais específica". Isso significa a rota com a maior máscara de prefixo. No seu caso:

2a01: xxx: xxx: 000A :: 3

Este endereço está nas seguintes redes:

::/0                           fe80::1                    UG   1024 0     0 eth0
2a01:xxx:xx:000A::/64          ::                         U    256 0     0 eth0
2a01:xxx:xx:000A::/112        ::                         U    1024 0     0 lo

O mais específico é a rede com máscara / 112, de modo que é onde o pacote é roteado. Como esta é a sua interface (e você não tem o IP configurado) o ping falha.

    
por 13.04.2013 / 20:54