Публичная страница проверки IP отвечает на один вопрос, и обычно не на тот, который вы задали. Она сообщает адрес выхода, который увидела страница; она не говорит, работает ли маршрут IPv6 через туннель, предпочёл ли хост IPv6 или откатился, и не пошло ли исключённое приложение другим путём. Авторизованный ресурс под вашим контролем правильно отвечает на более узкий вопрос, потому что вы видите оба конца. Инструкция ниже о том, как получить вывод, который можно защитить, а не о зелёном результате.

Шаг 1: скажите, какой маршрут IPv6 вы проверяете

Скажите это одной фразой. Запрос на собственный адрес IPv6 сервера туннеля проверяет туннель; запрос на хост за выходом проверяет выход IPv6 выхода; запрос на частный адрес IPv6 проверяет внутренний маршрут.

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

Шаг 2: убедитесь, что хост выбирает именно этот маршрут

ip -6 route get 2001:db8:1::10 печатает маршрут, адрес источника и интерфейс, который использовало бы ядро, и от этого факта зависит остальная часть теста.

Наличие интерфейса — не то же самое, что его выбор. У хостов с двойным стеком есть таблица приоритетов, и /etc/gai.conf в Linux может изменить, какое семейство победит для имени, которое разрешается в оба.

Шаг 3: используйте законную цель и законное имя

Если вы проверяете HTTPS, используйте то имя хоста, на которое выдан сертификат, и оставляйте проверку включённой; переход на буквальный адрес, чтобы тест прошёл, отключает ровно ту проверку, которая доказывает, что вы попали на нужный хост. Диагностический сервис под вашим контролем, отвечающий по известному имени с действительным сертификатом, — самая чистая цель. Он же даёт строку журнала на стороне сервера для сопоставления, чего проверялка третьей стороны никогда не даст.

Запустите запрос в форме, которая показывает использованный адрес: curl -6 -sS -o /dev/null -w '%{remote_ip} %{http_code}\n' https://test6.example.net/. Опция -6 принудительно задаёт семейство, и так вы отделяете «IPv6 не работает» от «IPv6 не был предпочтён».

Для чистой проверки доступности, где разрешён ICMPv6, достаточно ping -6 -c 3 2001:db8:1::10. Она доказывает путь и ничего выше него.

Шаг 4: сопоставьте оба конца

Когда у вас есть доступ к обоим концам, запустите tcpdump -ni any ip6 and host 2001:db8:1::10 на клиенте и эквивалент на ресурсе, с отметками времени, и убедитесь, что один и тот же поток виден на обоих. Именно это превращает правдоподобный результат в доказательство: один только взгляд клиента не отличает ответ от ресурса от ответа от чего-то посередине. Держите захват узким — одна цель, чтобы вывод оставался читаемым и чья-нибудь посторонняя сессия не попала в файл.

Повторите тест после переподключения, если беспокоит, переживает ли политика перезапуск. Состояние маршрутов и межсетевого экрана, применённое один раз при подключении, может отличаться от состояния, которое применяется заново, и разница проявляется только на втором подключении.

Проверьте случай отказа отдельно, если он нужен. Туннель, который блокирует IPv6 при падении, и тот, который его пропускает, — разные конструкции, и только одну из них можно подтвердить успешным запросом.

Шаг 5: запишите, что тест не доказал

Пятый шаг — записать, что тест не доказал, и именно эту часть обычно опускают. Успешный тест частной конечной точки не доказывает публичный выход IPv6, не доказывает поведение DNS и не покрывает приложения, исключённые из туннеля. Каждому из них нужна своя цель и своё наблюдение. Заметка «IPv6 работает после одного запроса к одному хосту» — не находка; это догадка с отметкой времени.

Запись, которую стоит сохранить, коротка: цель, имя, выбранный хостом адрес источника, наблюдённый удалённый адрес и время. RFC 7359 обсуждает, как проверить, что соответствующий путь IPv6 действительно пригоден, и это тот стандарт, к которому эта инструкция приближается более простыми средствами. Если для правдивости вывода нужна публичная проверялка, тест был недостаточно конкретным.

Похожие статьи