Как я могу получить pingable IPv6-адрес моей машины?

14

когда я пытаюсь: $ ip -6 addr я получаю что-то вроде:

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

если я попытаюсь пинговать это с самой машины:

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

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

Что я делаю неправильно?

марафон
источник

Ответы:

24

Любой IPv6-адрес, который начинается с, fe80:является эквивалентом IPv4- 169.254.*.*адреса, т. Е. Это локальный адрес канала, доступный только в том сегменте сети, к которому он напрямую подключен, с использованием сетевой карты, которая специально подключается к этому сегменту. Однако, в отличие от IPv4, для сетевой карты вполне нормально иметь как локальный IPv6-адрес канала, так и один или несколько глобальных IPv6-адресов одновременно.

Поскольку fe80:адрес IPv6 является локальным для канала, вы должны указать сетевой интерфейс, который вы хотите использовать при проверке связи.

Пример:

$ 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
...

Вы также можете добавить интерфейс в конце адреса с помощью %знака: ping6 fe80::beae:c5ff:febe:a742%eth0.

Это требование только для локальных IPv6-адресов: вы можете пропинговать глобально маршрутизируемые IPv6-адреса без указания интерфейса.

$ 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
...
Телком
источник
Это также говорит scope linkпрямо в выводе :)
Хоббс
4
Так же, как приложение к ответу: вы также можете указать интерфейс в конце адреса:ping6 fe80::beae:c5ff:febe:a742%eth0
Ferrybig
@Ferrybig: спасибо за напоминание, обновил мой ответ.
Телеком
1
Обратите внимание, что если вы хотите пропинговать удаленный IPv6-адрес, ваш домашний маршрутизатор также должен поддерживать IPV6. Старые маршрутизаторы не всегда имеют программное обеспечение / обновление прошивки для поддержки соединения через ipv6. Скорее всего, вы получите следующее сообщение:ping6: UDP connect: No route to host
Даниэль Геллинг
4

От man ping6, вы должны сообщить ping, какой интерфейс вы используете:

-I интерфейсный адрес

Установить исходный адрес на указанный адрес интерфейса. Аргументом может быть числовой IP-адрес или имя устройства. При проверке связи с локальным IPv6-адресом эта опция обязательна.

Например, если ваш интерфейс eth0:

ping6 -I eth0 fe80::xxxxxx

или без -Iопции:

ping6 fe80:xxxxxx%eth0
garethTheRed
источник