IPv6 работает отдельно от IPv4
Компьютер может быть подключён по двум протоколам одновременно, и их исправность не связана друг с другом. Сайт открывается по IPv4, но не отвечает по IPv6, или наоборот. Поэтому обычный ping, который выбирает протокол по ответу DNS, не отвечает на вопрос, работает ли IPv6. Для этого нужен явный ключ.
В Windows команда выглядит так: ping -6 example.com. В Linux она работает так же, кроме того, там часто есть отдельная программа ping6. В macOS для IPv6 используется команда ping6. Ключ -4 в Windows и Linux, наоборот, заставляет использовать IPv4, что удобно для сравнения двух протоколов на одном имени.
Главное отличие в адресах: вместо четырёх десятичных чисел используются восьмёрки шестнадцатеричных групп через двоеточие, например 2001:db8::1. Этот блок зарезервирован для документации, поэтому мы используем его в примерах.
Перед проверкой полезно определить ожидания. Если провайдер не выдаёт IPv6, неудача команды ожидаема, и сообщать об этом как о неисправности не нужно. Если же IPv6 заявлен, а проверка не проходит, это основание для обращения в поддержку с результатами команд.
Пошаговая проверка от локального узла к внешнему
Проверять нужно по цепочке, как и при диагностике IPv4, чтобы понять, на каком участке связь пропадает.
- Loopback: ping -6 ::1. Проверяет работу стека IPv6 на самом компьютере. Ответ должен приходить всегда.
- Собственный адрес: возьмите адрес из ipconfig или ip addr и проверьте ping на него. Так убеждаемся, что адрес назначен.
- Шлюз: адрес роутера в локальной сети часто начинается с fe80::. Для него нужен идентификатор интерфейса.
- Внешний узел: ping -6 example.com. Если имя не находится, проверьте отдельно наличие AAAA-записи и работу DNS.
- Сравнение с IPv4: выполните ping -4 example.com и сопоставьте результаты.
Отдельно посмотрите, есть ли у адаптера глобальный адрес IPv6, а не только адрес fe80:: с областью канала. Если глобального адреса нет, доступ наружу по IPv6 невозможен, и ping -6 к внешнему узлу заведомо не пройдёт.
Сохраняйте вывод каждого шага: он пригодится при обращении к провайдеру. Важно, чтобы в сообщении были указаны адрес источника, адрес цели и точный текст ошибки. Такая информация позволяет специалисту сразу перейти к делу без уточняющих вопросов.
Адреса fe80:: и идентификатор интерфейса
Адреса link-local начинаются с fe80:: и действуют только в пределах одного сегмента. Такой адрес есть у каждого интерфейса с включённым IPv6, но одного адреса недостаточно, ведь у компьютера несколько адаптеров, и система должна знать, через какой отправлять запрос. Поэтому к адресу добавляют зону через знак процента.
| Система | Пример (адрес условный) | Что за суффикс |
|---|---|---|
| Windows | ping fe80::1%12 | номер интерфейса из вывода ipconfig или netsh interface show interface |
| Linux | ping -6 fe80::1%eth0 | имя интерфейса, например eth0 |
| macOS | ping6 fe80::1%en0 | имя интерфейса, например en0 |
Без суффикса ping для fe80:: обычно завершается ошибкой, потому что непонятно, через какой интерфейс идти. Это одна из самых частых причин недоумения при первых попытках.
Номер интерфейса в Windows виден в конце строки «Локальный IPv6-адрес канала» как суффикс после знака процента. Копируйте его целиком вместе с числом.
Как читать результаты
Ответ выглядит почти так же, как при IPv4, только вместо TTL в Windows отображается значение времени жизни пакета (hop limit) в строке. Пример вывода (пример):
Ответ от 2001:db8::1: время=12мс
Отсутствие ответа означает разные вещи в зависимости от сообщения.
| Сообщение | Вероятная причина |
|---|---|
| Не удаётся найти узел, ошибка имени | у имени нет AAAA-записи или не работает DNS |
| Сбой передачи или нет маршрута | нет глобального адреса или шлюза IPv6 |
| Превышен интервал ожидания | узел не отвечает на ICMPv6 или фильтр отбрасывает пакеты |
| Ответ приходит только на ::1 | IPv6 включён, но провайдер его не выдаёт |
Ошибка при обращении к имени не всегда говорит о неисправности вашей сети: многие сайты просто не имеют IPv6. Для проверки выбирайте имя, о котором известно, что оно доступно по IPv6, и сравнивайте его с результатом других устройств в вашей сети.
ICMPv6 намного важнее, чем ICMP в IPv4: через него работает обнаружение соседей и определение MTU. Поэтому полная блокировка ICMPv6 на роутере ломает сеть.
Обратите внимание и на время ответа: сравните ping -4 и ping -6 к одному имени. Разница в несколько миллисекунд нормальна, но большое отставание одного протокола указывает на разные маршруты или на проблемы с одним из них. Сохраните обе серии результатов для сравнения.
Если IPv6 не работает: что проверить
Убедитесь, что провайдер вообще выдаёт IPv6: это указано в договоре или в личном кабинете. Многие домашние сети до сих пор работают только по IPv4, и в этом нет неисправности.
Затем проверьте настройки адаптера: протокол IPv6 должен быть включён в свойствах подключения. Проверьте роутер: в разделе настроек IPv6 должен быть выбран способ получения адреса, которого требует провайдер. Наконец, сравните с другим устройством: если оно получает глобальный адрес, а компьютер нет, дело в системе или в адаптере.
Если вы отключали IPv6 намеренно, ping -6 будет неудачным по замыслу. Помните, что полное отключение может ухудшить работу некоторых приложений, которые предпочитают этот протокол. Подробнее о самом протоколе читайте в словаре на странице про IPv6, а о состоянии адресов на странице про ipconfig /all.
Для наглядности сохраните вывод ipconfig или ip addr до и после изменений в настройках. Сравнение показывает, появился ли глобальный адрес и не сменился ли шлюз, и избавляет от догадок. Перезагрузка роутера и повторное подключение адаптера тоже входят в разумный порядок действий перед обращением к провайдеру.