Туннель поднимается, рукопожатие завершается, и разрешение имён останавливается. В конфигурации пира ничего не изменилось, потому что строка DNS никогда не была её частью. Она принадлежит помощнику настройки, а значит, сбой живёт в инструментах резолвера хоста, а не в ключах WireGuard.

Прочитайте первое сообщение, которое вывел помощник, а не последнее, и разница между отсутствующим инструментом и недоступным сервером станет очевидной.

Строка DNS — функция помощника

Основные поля конфигурации описывают пиров, ключи и разрешённые адреса. Разрешение имён добавляется сверху тем скриптом, который поднимает интерфейс, и каждая реализация делает это по-своему. Настольный клиент может управлять DNS через собственную службу, скрипт дистрибутива может вызвать одну из нескольких утилит резолвера, а контейнер может не делать ни того, ни другого. Файл конфигурации не может сказать, какой из этих путей задействован.

Поэтому файл конфигурации может быть корректным для протокола и всё равно сбоить при настройке: сбой принадлежит хуку, которого протокол никогда не видит.

Запись расширенного поля в основную конфигурацию и ожидание, что инструмент протокола его примет, создаёт ту же путаницу с другой стороны. Два парсера читают разные файлы.

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

Прочитайте первую ошибку, которую выводит помощник

Поднимите интерфейс на переднем плане и читайте вывод по порядку. Отсутствующая утилита резолвера, неудачный хук и недоступный сервер останавливают одну и ту же команду в разных местах, и у каждого своё исправление.

wg-quick up wg0
resolvectl status wg0
ip route get 10.66.0.1

Первая команда сообщает о ходе настройки, вторая показывает, какие серверы интерфейс теперь требует, а третья — действительно ли адрес резолвера доступен через туннель. Резолвер, который настроен, но не маршрутизируется, даёт тайм-ауты вместо ошибок конфигурации, поэтому обе проверки идут вместе. Чтение только вывода состояния даёт уверенный и неверный вывод.

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

Какой резолвер на самом деле есть у хоста

Современные хосты Linux часто запускают локальный stub-резолвер, поэтому адрес, который устанавливает помощник, потребляется этим stub-ом, а не приложениями напрямую. Ручное редактирование сгенерированного файла может выглядеть работающим до следующего переподключения, когда помощник переписывает его.

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

Внутренние имена заслуживают отдельной проверки. Публичный резолвер может восстановить обычный просмотр, но сделать так, чтобы каждое корпоративное имя сбоило, — это обратное тому, для чего был туннель. Спросите у предполагаемого сервера внутреннее имя, прежде чем заключать, что DNS исправлен.

Очистка важна не меньше настройки

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

Устаревшее состояние легко заметить, когда начинаешь его искать. Список резолверов может указывать на адрес на интерфейсе, которого больше нет, а домен поиска может пережить сеть, которую вы покинули сегодня утром. Любое из этого делает следующее подключение непредсказуемым, и ни то ни другое не появляется в собственном выводе состояния туннеля. Проверка занимает десять секунд и экономит следующему человеку час.

Держите диагностику отдельно от исправления. Если сбоит каждое назначение, а не только поиск имён, подозреваемые — маршруты и пересылка, а строка DNS отвлекает. Руководство wg-quick документирует, какие поля оно обрабатывает и какие принадлежат протоколу, и эта граница — весь ответ на большинство таких сообщений.

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