WireGuard Error: DNS resolution failed for endpoint hostname — Решение проблемы
Утилита wg-quick завершается с ошибкой при попытке разрешить доменное имя сервера, указанное в параметре Endpoint.
- Текст ошибки:
resolvconf: ... Failed to resolve endpoint hostname: Temporary failure in name resolutionилиName or service not known. - Интерфейс не поднимается при старте операционной системы до инициализации сети.
- При смене IP-адреса на стороне сервера (Dynamic DNS) туннель продолжает слать пакеты на старый IP-адрес.
- Команда
getent hosts <endpoint_domain>не возвращает валидный адрес.
1. Проверка разрешения имени утилитами системы
Проверьте доступность DNS-сервера и корректность резолвинга:
resolvectl query vpn.example.com
# Лиbo через dig
dig +short vpn.example.com @1.1.1.12. Исправление зависимостей в Systemd
Если интерфейс WireGuard пытается запуститься раньше, чем сеть и DNS-демон получили конфигурацию от DHCP, настройте зависимости юнита systemd:
# Создайте override файл:
systemctl edit wg-quick@wg0.serviceВставьте следующий блок:
[Unit]
After=network-online.target systemd-resolved.service
Wants=network-online.target3. Решение проблемы с Dynamic DNS (Reresolve Endpoint)
WireGuard разрешает DNS-имя Endpoint **только один раз** при старте интерфейса. Если IP-адрес сервера изменился, туннель зависнет. Установите скрипт автоматического обновления DNS:
# Установка скрипта обновления для WireGuard
apt-get install -y wireguard-tools
# Запуск официального скрипта reresolve-dns в cron:
/usr/share/doc/wireguard-tools/examples/reresolve-dns/reresolve-dns.sh /etc/wireguard/wg0.conf4. Временная замена доменного имени на прямой IP-адрес
Для быстрой проверки укажите прямой IPv4/IPv6 адрес в /etc/wireguard/wg0.conf:
[Peer]
PublicKey = <Server_PublicKey>
Endpoint = 198.51.100.25:518205. Перезапуск службы
systemctl restart wg-quick@wg0 Частые вопросы (FAQ)
Отслеживает ли WireGuard изменение IP-адреса Endpoint по домену автоматически?
Нет. Архитектура ядра WireGuard принципиально не содержит DNS-клиента. Резолвинг выполняет утилита пространства пользователя wg-quick строго в момент инициализации.
Как автоматически переподключать туннель при смене IP у Dynamic DNS (No-IP, DuckDNS)?
Используйте systemd-таймер со скриптом reresolve-dns.sh, который опрашивает DNS каждые 2–5 минут и выполняет команду 'wg set wg0 peer <Key> endpoint <IP:Port>' при смене адреса.
Почему DNS ломается после выполнения wg-quick up?
Если в секции [Interface] указан параметр DNS = ..., wg-quick перезаписывает /etc/resolv.conf. При некорректном IP DNS-сервера резолвинг всех имен в системе перестает работать.
Можно ли указать несколько Endpoint для резервирования?
Нет, секция [Peer] может содержать только один Endpoint. Отказоустойчивость реализуется внешними средствами балансировки или BGP-маршрутизацией.