Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

WG_DNS_RESOLVE_FAIL Сетевое оборудование и VPN

WireGuard Error: DNS resolution failed for endpoint hostname — Решение проблемы

Обновлено: 24.08.2026 · Официальная документация ↗

Утилита 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.1

2. Исправление зависимостей в Systemd

Если интерфейс WireGuard пытается запуститься раньше, чем сеть и DNS-демон получили конфигурацию от DHCP, настройте зависимости юнита systemd:

# Создайте override файл:
systemctl edit wg-quick@wg0.service

Вставьте следующий блок:

[Unit]
After=network-online.target systemd-resolved.service
Wants=network-online.target

3. Решение проблемы с 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.conf

4. Временная замена доменного имени на прямой IP-адрес

Для быстрой проверки укажите прямой IPv4/IPv6 адрес в /etc/wireguard/wg0.conf:

[Peer]
PublicKey = <Server_PublicKey>
Endpoint = 198.51.100.25:51820

5. Перезапуск службы

systemctl restart wg-quick@wg0
💡 Практика специалистов: Если вы используете параметр DNS = X.X.X.X в конфигурации WireGuard, убедитесь, что адрес этого DNS-сервера входит в диапазон AllowedIPs, иначе запросы к нему будут отброшены ядром.

Частые вопросы (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-маршрутизацией.

Полезные материалы
Рекомендуем