Como obtenho o endereço IPv6 pingável da minha máquina?

13

quando tento: $ ip -6 addr recebo algo como:

inet6 fe80::d773:9cf0:b0fd:572d/64 scope link

se eu tentar fazer ping na própria máquina:

$ ping6 fe80::d773:9cf0:b0fd:572d/64
unknown host

$ ping6 fe80::d773:9cf0:b0fd:572d
connect: Invalid argument

O que estou fazendo de errado?

maratona
fonte

Respostas:

23

Qualquer endereço IPv6 que comece com fe80:é equivalente ao 169.254.*.*endereço IPv4 , ou seja, é um endereço local de link, acessível apenas no segmento de rede ao qual está diretamente conectado, usando a NIC que se conecta especificamente a esse segmento. Ao contrário do IPv4, no entanto, é perfeitamente normal que uma NIC tenha o endereço IPv6 local do link e um ou mais endereços IPv6 globais simultaneamente.

Como um fe80:endereço IPv6 é link-local, você deve especificar a interface de rede que deseja usar ao executar o ping.

Exemplo:

$ ping6 fe80::beae:c5ff:febe:a742
connect: Invalid argument

$ ping6 -I eth0 fe80::beae:c5ff:febe:a742
PING fe80::beae:c5ff:febe:a742(fe80::beae:c5ff:febe:a742) from fe80::beae:c5ff:febe:a742%eth0 eth0: 56 data bytes
64 bytes from fe80::beae:c5ff:febe:a742%eth0: icmp_seq=1 ttl=64 time=0.182 ms
64 bytes from fe80::beae:c5ff:febe:a742%eth0: icmp_seq=2 ttl=64 time=0.167 ms
...

Você também pode acrescentar a interface no final do endereço usando o %sinal: ping6 fe80::beae:c5ff:febe:a742%eth0.

Esse requisito é apenas para endereços IPv6 locais de link: você pode executar ping em endereços IPv6 roteáveis ​​globalmente sem especificar a interface.

$ ping6 2a00:1450:400f:80a::200e  # that's ipv6.google.com
PING 2a00:1450:400f:80a::200e(2a00:1450:400f:80a::200e) 56 data bytes
64 bytes from 2a00:1450:400f:80a::200e: icmp_seq=1 ttl=55 time=17.6 ms
64 bytes from 2a00:1450:400f:80a::200e: icmp_seq=2 ttl=55 time=19.6 ms
...
telcoM
fonte
Ele também diz scope linkdireita na saída :)
hobbs
4
Apenas como um apêndice à resposta: você também pode especificar a interface no final do endereço:ping6 fe80::beae:c5ff:febe:a742%eth0
Ferrybig
@Ferrybig: obrigado por me lembrar, atualizei minha resposta.
TelcoM 13/0218
1
Observe que, se você desejar executar ping em um endereço IPv6 remoto, o seu roteador doméstico também precisará oferecer suporte ao ipv6. Os roteadores mais antigos nem sempre têm a atualização de software / firmware para suportar uma conexão pelo ipv6. Você provavelmente receberá a seguinte mensagem:ping6: UDP connect: No route to host
Daniel Gelling
4

Em man ping6, você deve informar ao ping qual interface você está usando:

-I endereço da interface

Defina o endereço de origem para o endereço de interface especificado. O argumento pode ser o endereço IP numérico ou o nome do dispositivo. Ao executar ping no endereço local do link IPv6, esta opção é necessária.

Por exemplo, se sua interface é eth0:

ping6 -I eth0 fe80::xxxxxx

ou, sem a -Iopção:

ping6 fe80:xxxxxx%eth0
garethTheRed
fonte