ping ipv6 адрес Семейство адресов для имени узла не поддерживается

Вопрос или проблема

Используя ifconfig, чтобы увидеть ipv4 и ipv6 адреса eth0. Ping по ipv4 работает нормально, но ping по ipv6 дает:

Ошибка ping

Это означает, что сайт не разрешается в ip6 адрес, например, github.com имеет то же самое:

$ ping -4 github.com
PING github.de (140.82.114.18) 56(84) байт данных.
64 байта от lb-140-82-114-18-iad.github.com (140.82.114.18): icmp_seq=1 ttl=39 время=205 мс
64 байта от lb-140-82-114-18-iad.github.com (140.82.114.18): icmp_seq=2 ttl=39 время=228 мс
^C
--- статистика ping для github.de ---
2 пакета отправлено, 2 получено, 0% потеря пакетов, время 1001мс
rtt min/avg/max/mdev = 205.156/216.759/228.363/11.603 мс

$ ping -6 github.com
ping: github.de: Поддержка семейства адресов для имени хоста не предусмотрена

Когда вы используете адрес link-local в IPv6 (любой адрес в fe80::/16 является link-local), вы также должны указать интерфейс. Например, когда я пингу свой сервер с рабочего компьютера так:

ping fe80::6d9:f5ff:fe1c:45c8

Это всегда будет ошибкой, но если я пингую так:

ping fe80::6d9:f5ff:fe1c:45c8%enp0s31f6

Это будет успешно.

Причина в том, что адреса link-local… ну… локальны для ссылки. Без указания ссылки это бессмысленно. Это как сказать 123 главная улица, не уточняя, речь идет о Нью-Йорке, Торонто или Альбукерке, или говорить, что что-то находится в Спрингфилде, не уточняя, речь о Массачусетсе, Иллинойсе или Нью-Йорке (по этой причине Симпсоны происходят в Спрингфилде).

Формат имени интерфейса будет зависеть от вашей ОС. Пример выше относится к Linux, что-то похожее должно работать и в MacOS. Вы сможете получить имя интерфейса, выполнив команду “ifconfig” или “ip a” в терминале.
В Windows вы указываете его просто номером, который можете увидеть, выполнив команду “netsh interface ipv6 show interface” в командной строке или PowerShell и посмотрев в столбец “IDX” в результате.

Если у вас есть другой IP-адрес, который не находится в диапазоне fe80::/16, вам не нужно делать всю эту чепуху. Ищите что-то в диапазоне 2000::/4 (это глобальные униicast адреса) или fd00::/8 (это адреса локальной сети, что-то вроде 192.168.0.0/16, 172.16.0.0/12 или 10.0.0.0/8 в IPv4). Это те адреса, которые вы обычно будете использовать для обращения к другим машинам.

Ответ или решение

При попытке отправить пинг на IPv6-адрес, вы получили сообщение об ошибке "Address family for hostname not supported". Это означает, что указанное имя хоста не может быть разрешено в IPv6-адрес. Давайте разберем возможные причины и решения этой проблемы.

Причины проблемы

  1. Отсутствие IPv6-адреса: Не все веб-сайты и серверы поддерживают IPv6. Если вы пингуете адрес, который не имеет соответствующего IPv6-адреса, вы получите указанное сообщение об ошибке. Например, пинг до github.com с использованием IPv6 может не сработать, если данный сайт не имеет привязанного IPv6-адреса.

  2. Конфигурация сети: Убедитесь, что ваша сеть поддерживает IPv6. Если ваш маршрутизатор или провайдер интернета не поддерживает IPv6, вы не сможете отправить пинг на IPv6-адреса.

  3. Семейство адресов: Сообщение об ошибке указывает на то, что запрашиваемый хост не поддерживает адресацию IPv6. Это может быть связано с тем, что хост не имеет IPv6-адресов, или с настройками DNS, которые не возвращают IPv6-адреса.

Решения

  1. Проверка IP-адреса: Используйте команду dig или nslookup, чтобы проверить, есть ли у хоста IPv6-адрес. Например:

    dig AAAA github.com

    Если команда вернет пустой результат, это означает, что у github.com нет IPv6-адреса.

  2. Использование Link-Local адресов: Если вы используете link-local адрес (адреса в диапазоне fe80::/16), вам необходимо указать интерфейс, с которого отправляется запрос. Например:

    ping fe80::6d9:f5ff:fe1c:45c8%enp0s31f6

    Убедитесь, что вы правильно указали название интерфейса, которое можно найти с помощью команд ifconfig или ip a на Linux.

  3. Использование глобальных адресов: Если вы хотите пинговать другой компьютер в сети, убедитесь, что используете глобальный или уникальный локальный адрес (например, в диапазонах 2000::/4 или fd00::/8). Эти адреса могут быть использованы для связи между узлами, находящимися в разных подсетях.

  4. Проверка конфигурации: Убедитесь, что ваша система правильно настроена для работы с IPv6. Для Linux это может включать в себя проверку файла /etc/sysctl.conf на наличие строки net.ipv6.conf.all.disable_ipv6 = 0.

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

Оцените материал
Добавить комментарий

Капча загружается...