Коротко: Основу любого конфига составляют два блока: [Interface] описывает ваше устройство (приватный ключ, адрес, порт), а [Peer] — удалённый узел. Endpoint задаёт публичный адрес и порт для подключения, AllowedIPs определяет, какой трафик пойдёт в туннель, а DNS настраивает разрешение имён внутри VPN. Ключи должны совпадать на обеих сторонах и никогда не передаваться третьим лицам.
AllowedIPs: Конфиг WireGuard часто вызывает путаницу у тех, кто видит его впервые: секции Interface и Peer, странные ключи и загадочные IP-диапазоны. Разбираем, что именно скрывается за каждым параметром и как правильно читать этот текстовый файл, чтобы VPN заработал без сюрпризов.
Основные причины
| Причина | Что это значит |
|---|---|
| Неправильно указан Endpoint | Если публичный IP-адрес или порт в Endpoint неверны, устройство не сможет связаться с пиром и соединение не установится. |
| AllowsIPs задан без понимания маршрутизации | Слишком широкий диапазон вроде 0.0.0.0/0 на одном из пиров может перенаправить весь интернет-трафик в туннель, а на другом — перехватывать чужой трафик, если сервер настроен некорректно. |
| Игнорирование DNS в секции Interface | Без указания DNS серверов запросы к внутренним именам сети не будут разрешаться, а ручная правка resolv.conf на клиентах неудобна. |
| Отсутствие PersistentKeepalive за NAT | Если клиент находится за NAT и не отправляет периодические пакеты, сервер теряет возможность инициировать соединение, и туннель разрывается. |
| Несовпадение ключевых пар | Каждый Peer проверяет, что публичный ключ соответствует приватному ключу противоположной стороны. При ошибке в копировании или подмене ключа соединение не состоится. |
| Путаница с портом ListenPort и Endpoint | ListenPort задаёт порт, на котором интерфейс слушает входящие соединения, а Endpoint — порт, на который отправляются исходящие пакеты. Их значения могут не совпадать, что часто сбивает с толку. |
| Неправильное количество секций Peer | Одна сторона конфига может ожидать определённый набор пиров, а фактический файл содержит лишние или недостающие записи, из-за чего туннель не поднимается. |
Что проверить сначала
- Сверьте публичные ключи в секции [Peer] одной стороны с приватными ключами другой стороны.
- Проверьте IP-адрес и порт в Endpoint: сервер должен быть доступен из сети клиента (пинг до адреса, проброс порта при необходимости).
- Убедитесь, что адрес в секции [Interface] не конфликтует с другими сетями и принадлежит маршрутизируемому диапазону VPN.
- Проконтролируйте, что AllowedIPs на клиенте включает маршрут до серверного туннельного адреса, а на сервере — адреса клиентов, которым разрешён доступ.
- Посмотрите, задан ли DNS-сервер в конфиге клиента, если предполагается работа с внутренними именами.
- Выполните проверку синтаксиса: не пропущена ли квадратная скобка, нет ли лишних пробелов в ключах.
- Узнайте, одинаковы ли версии протокола на обеих сторонах — хотя сам WireGuard обратно совместим, старая версия может не поддерживать новые опции.
- Проверьте, установлен ли параметр PersistentKeepalive для пиров, которые находятся за NAT и должны инициировать соединения по требованию.
- Убедитесь, что файл конфига не содержит посторонних символов после закрывающих скобок и имеет права доступа, препятствующие чтению посторонними.
Пошаговое решение
- Откройте конфигурационный файл (обычно wg0.conf или сохранён в приложении) и найдите раздел [Interface].
- Прочитайте PrivateKey — это секретный ключ вашего устройства; убедитесь, что он не скомпрометирован и используется только на одном узле.
- Изучите Address — это IP-адрес и маска подсети, которые присвоены вашему WireGuard-интерфейсу в рамках VPN-сети.
- Определите ListenPort — порт, на котором интерфейс ожидает входящие пакеты; проверьте, не занят ли он другим приложением.
- Обратите внимание на необязательный параметр DNS: перечисленные адреса будут отправлены системе для разрешения имён при активации туннеля.
- Перейдите к секции [Peer] (каждая такая секция описывает одного удалённого участника).
- В PublicKey прочитайте публичный ключ пира — он должен в точности совпадать с приватным ключом, сгенерированным на удалённой стороне.
- Endpoint укажите публичный IP-адрес и порт (например, 203.0.113.5:51820), к которому ваш интерфейс будет отправлять зашифрованные пакеты.
- AllowsIPs объясняет, какие адреса будут маршрутизироваться через этого пира: одиночный IP (10.0.0.2/32) или целая подсеть (192.168.1.0/24), 0.0.0.0/0 захватывает весь трафик.
- Если оба пира находятся за NAT или один из них не имеет постоянного IP, добавьте PersistentKeepalive = 25 в секцию Peer, чтобы поддерживать сессию активной.
- Убедитесь, что симметрично настроены обе стороны: AllowedIPs клиента должен содержать IP сервера, а сервера — IP клиента.
- Сохраните конфиг и примените его командой wg-quick up или через графический интерфейс; проверьте статус туннеля командой wg show.
Проверить проблему WireGuard
Введите ошибку, симптом или часть конфигурации: handshake, AllowedIPs, DNS, MTU, Endpoint.
FAQ
Что означает AllowedIPs = 0.0.0.0/0 и когда это опасно?
Такая запись направляет весь трафик устройства (интернет и локальные сети) в туннель. На клиенте это используют для полного обхода блокировок, но на серверной стороне широкий AllowedIPs недопустим без тщательной фильтрации: иначе сервер начнёт маршрутизировать чужой трафик либо перехватывать пакеты клиента.
Можно ли удалить Endpoint и всё равно подключиться?
Без Endpoint WireGuard не знает, куда отправлять исходящие пакеты для этого пира, поэтому подключение станет невозможным. Исключение — если соединение инициируется с другой стороны и ваш интерфейс просто ожидает входящие пакеты на ListenPort, но для полноценного двунаправленного канала Endpoint обязателен.
Что такое PersistentKeepalive и когда его ставить?
PersistentKeepalive отправляет пустой пакет подтверждения через заданный интервал в секундах. Он нужен, когда один из узлов находится за NAT или файрволом, который закрывает неиспользуемые соединения. Типичное значение — 25 секунд, чтобы не потерять доступ при длительных паузах.
Как проверить, что конфиг написан без синтаксических ошибок?
Запустите в терминале `wg-quick strip /путь/к/конфигу` — утилита укажет на пропущенные секции или опечатки. Также можно попытаться добавить интерфейс временно с настройками из файла и проверить вывод `wg show`.
Итог
Умение читать конфиг WireGuard снимает большинство барьеров при настройке: понимание Interface, Peer, Endpoint, AllowedIPs и DNS превращает туннель из чёрного ящика в прозрачный инструмент. Используйте это руководство как шпаргалку при первичной установке или аудите существующих соединений, и большинство типовых проблем исчезнут на этапе проверки параметров.