ping6.net
Лучшие Практики

Отладка IPv6: исправление распространённых проблем подключения

Диагностируйте и исправьте проблемы IPv6-связности с этим пошаговым руководством. От «нет адреса» до «работает, но медленно» — решите реальные проблемы.

ping6.net14 декабря 2024 г.7 min read
IPv6отладкасвязностьсетьдебаггинг

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

TL;DR - Краткое резюме

Ключевые моменты:

  • Начните с трёх вопросов: Есть ли у вас адрес? Можете ли достичь по IP? Можете ли достичь локально?
  • Проверьте Router Advertisements, если у вас нет глобального адреса (только link-local)
  • ICMPv6 не должен быть заблокирован — он критичен для работы IPv6
  • Используйте traceroute6, чтобы найти, где останавливаются пакеты

Перейти к: Локальная конфигурация | Распространённые проблемы | Когда звонить провайдеру

Начните с трёх вопросов#

Перед запуском команд сузьте проблему:

  1. У вас есть IPv6-адрес? Если нет, проблема на уровне назначения (DHCP, SLAAC или router advertisements).
  2. Можете достичь IPv6-сайтов по адресу, но не по имени? DNS — виновник.
  3. Можете достичь link-local адресов, но ничего дальше? Проблемы маршрутизации или файрвола.

Эти три вопроса исключают 80% путей отладки.

Проверьте вашу локальную конфигурацию#

Начните с проверки, что ваше устройство имеет IPv6-адрес и знает свой шлюз.

Linux:

ip -6 addr show
ip -6 route show

macOS:

ifconfig
netstat -nr -f inet6

Windows:

ipconfig
netsh interface ipv6 show route

Ищите глобальный unicast-адрес (начинается с 2 или 3). Вы также должны увидеть link-local адрес (начинается с fe80::). Если у вас только link-local, ваш хост не получает правильный IPv6-префикс.

Проверьте Router Advertisements#

Большинство IPv6-сетей используют SLAAC (Stateless Address Autoconfiguration), где маршрутизаторы транслируют своё присутствие и сетевой префикс. Если у вашего устройства нет глобального адреса, router advertisements могут не доходить до вас.

Проверка приёма RA (Linux):

sudo rdisc6 eth0

Проверка приёма RA (macOS/Windows): Используйте Wireshark или tcpdump для захвата ICMPv6 type 134 (Router Advertisement) пакетов:

sudo tcpdump -i en0 'icmp6 and ip6[40] == 134'

Если вы не видите RA через 30 секунд, либо ваш маршрутизатор не анонсирует, либо что-то их фильтрует. Сначала проверьте настройки IPv6 вашего маршрутизатора.

Link-local адреса работают без какой-либо конфигурации маршрутизатора. Если они отказывают, у вас проблема уровня 2.

Найдите link-local адрес вашего шлюза:

# Linux
ip -6 route show default
 
# macOS/Windows
Используйте шлюз, показанный в таблице маршрутизации

Пропингуйте его с указанным интерфейсом:

# Linux
ping6 -c 4 fe80::1%eth0
 
# macOS
ping6 -c 4 fe80::1%en0
 
# Windows
ping -6 fe80::1%12

Замените fe80::1 на ваш фактический адрес шлюза и eth0/en0/12 на имя/номер вашего интерфейса. Если это отказывает, проверьте кабели, коммутаторы и WiFi-связность.

Тест интернет-связности#

Используйте проверенные IPv6-адреса для полного обхода DNS.

# Cloudflare DNS
ping6 2606:4700:4700::1111
 
# Google DNS
ping6 2001:4860:4860::8888
 
# ping6.net
ping6 2a07:8dc0:18:0:78:47ff:fe6e:da5a

Если они работают, ваш IPv6-стек функционален, и DNS — проблема (пропустите вперёд). Если они отказывают, протестируйте, является ли проблема локальной или upstream.

Проверьте разрешение DNS#

Многие отчёты «IPv6 не работает» на самом деле являются проблемами DNS. Ваше устройство может иметь связность, но не может разрешать AAAA-записи.

Тест поиска AAAA-записи:

# Использовать системный резолвер
nslookup -type=AAAA google.com
 
# Использовать специфичный DNS-сервер
dig @2001:4860:4860::8888 AAAA google.com
 
# Windows
nslookup -type=AAAA google.com 2001:4860:4860::8888

Если AAAA-запросы отказывают, но A-запросы (IPv4) успешны, ваш DNS-сервер может не иметь IPv6-связности или не настроен для обработки AAAA-записей. Попробуйте переключиться на Cloudflare (2606:4700:4700::1111) или Google (2001:4860:4860::8888) DNS-серверы.

Проверка, что DNS-сервер достижим через IPv6:

ping6 2606:4700:4700::1111

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

Анализ пути#

Когда вы можете пропинговать некоторые назначения, но не другие, используйте traceroute для нахождения, где пакеты останавливаются.

# Linux/macOS
traceroute6 google.com
 
# Windows
tracert -6 google.com

Ищите:

  • Таймауты на хопе 1-2: Проблема локальной сети (шлюз, файрвол)
  • Таймауты после нескольких хопов: Проблема маршрутизации провайдера
  • Асимметричные маршруты или петли: Неправильная конфигурация BGP (свяжитесь с провайдером)

Вы также можете использовать наш инструмент Traceroute для просмотра задержки по хопам и определения, где пакеты отбрасываются.

Распространённые проблемы и исправления#

IPv6-адрес не назначен#

Симптомы: Показывается только fe80:: link-local адрес.

Причины:

  • Маршрутизатор не отправляет RA
  • DHCPv6-сервер недостижим
  • Интерфейс отключён для IPv6

Исправления:

  1. Проверьте, что маршрутизатор имеет включённый IPv6 и настроенное делегирование префикса
  2. Перезапустите сетевой интерфейс: sudo ifdown eth0 && sudo ifup eth0 (Linux) или переключите WiFi выкл/вкл
  3. Форсировать SLAAC: sudo dhclient -6 -r && sudo dhclient -6 (Linux)
  4. В Windows: netsh interface ipv6 reset и перезагрузка

Симптомы: Есть fe80:: адрес, можно пропинговать локальный канал, но нет интернета.

Причины:

  • Маршрутизатор отправляет RA без информации о префиксе
  • Файрвол блокирует ICMPv6
  • Неправильная конфигурация статического маршрута

Исправления:

  1. Проверьте, что маршрутизатор делегирует префикс /64 (не просто анонсирует себя)
  2. Убедитесь, что ICMPv6 не заблокирован: sudo ip6tables -L (Linux) или настройки Windows Firewall
  3. Вручную добавить маршрут по умолчанию (временно): sudo ip -6 route add default via fe80::1 dev eth0

Есть адрес, но нет связности#

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

Причины:

  • Провайдер блокирует трафик
  • Проблемы MTU (отказы фрагментации пакетов)
  • Файрвол отбрасывает установленные соединения

Исправления:

  1. Тест с линией поддержки провайдера (им может понадобиться активировать IPv6)
  2. Понизить MTU: sudo ip link set eth0 mtu 1280 (минимум IPv6)
  3. Проверить, что правила файрвола разрешают исходящий IPv6
  4. Проверить, что вы не за CGNAT, который обрезает IPv6

IPv6 медленнее IPv4#

Симптомы: Сайты загружаются, но с заметной задержкой по сравнению с IPv4.

Причины:

  • Накладные расходы туннеля (6to4, Teredo, 6rd)
  • Неоптимальная маршрутизация (пакеты идут длинным путём)
  • Проблемы таймаута Happy Eyeballs

Исправления:

  1. Если используется туннель, переключитесь на нативный IPv6 от провайдера
  2. Сравните хопы traceroute: traceroute google.com vs traceroute6 google.com
  3. Отключите туннели, если доступен нативный: netsh interface teredo set state disabled (Windows)
  4. Тест с нашим инструментом IPv6 Ping для измерения базовой задержки

Работает для некоторых сайтов, не для других#

Симптомы: Можно достичь Google, Cloudflare, но многие сайты отказывают.

Причины:

  • Сайты имеют сломанный IPv6 (неправильно настроенные AAAA-записи)
  • Отказы path MTU discovery
  • Файрвол блокирует специфичные префиксы

Исправления:

  1. Тест, действительно ли у сайта есть IPv6: dig AAAA example.com или используйте наш инструмент поиска DNS
  2. Если AAAA-запись существует, но отказывает, IPv6 сайта сломан (не ваша вина)
  3. Форсировать IPv4: Добавить запись в /etc/hosts (Linux/macOS) или C:\Windows\System32\drivers\etc\hosts (Windows)
  4. Сообщить оператору сайта (они могут не знать, что он сломан)

Когда связываться с вашим провайдером#

Звоните вашему провайдеру, если:

  • Маршрутизатор показывает «IPv6 не поддерживается» или «ожидание делегирования префикса»
  • Вам назначен префикс, но он немаршрутизируем (тест с внешним ping)
  • Traceroute показывает отказы сразу после выхода из вашей сети
  • Ни одно из вышеперечисленных исправлений не работает, и ваша конфигурация выглядит правильно

Перед звонком соберите:

  • Вывод из ip addr или ipconfig
  • Ваш назначенный IPv6-префикс
  • Результаты из ping6 2001:4860:4860::8888
  • Вывод traceroute, показывающий, где происходят отказы

Это значительно сокращает время звонка в поддержку.

Связанные статьи#

  • Включение IPv6 — Настройте IPv6 на ваших устройствах и маршрутизаторах перед отладкой проблем
  • Безопасность IPv6 — Узнайте о распространённых проблемах безопасности, которые могут влиять на связность

Протестируйте вашу конфигурацию IPv6

Используйте наши диагностические инструменты для проверки вашей настройки:

  • IPv6 Ping — Тест связности и задержки
  • Traceroute — Найдите, где отбрасываются пакеты
  • MTR — Комбинированный инструмент ping и traceroute для продвинутой диагностики
  • Поиск DNS — Проверьте, что AAAA-записи разрешаются правильно