Настройка сервера WireGuard в Linux (wg0, NAT, Peers)
12 мин чтения - 22 июня 2026 г.

Практическая настройка сервера WireGuard для Linux: ключи, файл wg0.conf, NAT, управление пирами с помощью syncconf и команды для устранения неполадок, которые на самом деле используют системные администраторы.
Запускайте сервер WireGuard, если вам нужен частный доступ к размещённой инфраструктуре без открытия портов администрирования для общедоступного Интернета. Он использует аутентификацию по открытому ключу, работает внутри ядра Linux начиная с версии 5.6 и, после запуска, не мешает работе системы. В этой статье рассказывается, когда следует использовать сервер WireGuard, как его запустить wg0и как поддерживать работу пиров в повседневной эксплуатации.
Когда использовать сервер WireGuard
Большинство сценариев использования можно разделить на три категории: удалённый доступ, соединения «сервер-сервер» и маршрутизация «узел-узел».
Для удаленного доступа запустите сервер на VPS или выделенном хосте и направляйте административный трафик через туннель. Настройте AllowedIPs на каждом узле частную подсеть управления (например, 10.0.0.0/24), чтобы через туннель проходил только трафик для внутренних систем. Всё остальное остаётся в локальном соединении пользователя. Если пользователи подключаются из домашних или мобильных сетей, добавьте PersistentKeepalive = 25 на стороне клиента, чтобы сеансы NAT не разрывались.
Для соединений «сервер-сервер» установите параметр AllowedIPs узким. Обычно достаточно одной /32 или небольшую бэкенд-подсеть. Это позволяет избежать попадания в туннель постороннего трафика и обеспечивает предсказуемость маршрутизации.
Связь «сайт-сайт» отличается. Хост WireGuard выступает в качестве шлюза между подсетями, поэтому необходимо включить пересылку IP-адресов, а правила NAT должны направлять обратный трафик через нужный интерфейс.
| Шаблон | AllowedIPs область действия | Наилучшее соответствие | Сложность настройки |
|---|---|---|---|
| Удаленный доступ | Частные подсети, например 10.0.0.0/24 | Доступ администраторов и разработчиков | Низкий |
| От сервера к серверу | Конкретные IP-адреса или подсеть бэкэнда | Точка-точка между хостами | От низкого до среднего |
| Между сайтами | Вся удаленная локальная сеть, например /24 | Маршрутизация «шлюз-шлюз» | От среднего до высокого |
| Доступ к частным услугам | Только внутренняя подсеть (разделенный туннель) | Изоляция бэкенд-сервисов | Средняя |
Настройка сервера
Сервер хранит закрытый ключ, по умолчанию прослушивает UDP 51820 и завершает туннель. Одна и та же базовая настройка подходит для всех трёх вышеупомянутых сценариев.
Ключи и файл wg0.conf
Сгенерируйте пару ключей сервера:
wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.keyЗащитите закрытый ключ:
sudo chmod 600 /etc/wireguard/server_private.keyЗакрытый ключ остаётся на сервере. Открытый ключ — это то, что вы передаёте партнёрам.
Создайте /etc/wireguard/wg0.conf:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <SERVER_PRIVATE_KEY>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o <PUBLIC_IFACE> -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o <PUBLIC_IFACE> -j MASQUERADE
[Peer]
PublicKey = <CLIENT_PUBLIC_KEY>
AllowedIPs = 10.8.0.2/32Найдите исходящий интерфейс, в который нужно вставить <PUBLIC_IFACE> следующим образом:
ip -o -4 route show to default | awk '{print $5}'Переадресация, брандмауэр и NAT
Откройте порт прослушивания:
sudo ufw allow 51820/udpВключите IP-переадресацию, добавив эту строку в файл /etc/sysctl.conf:
net.ipv4.ip_forward = 1Примените изменения без перезагрузки:
sudo sysctl -pФайл PostUp и PostDown строки в wg0.conf добавляют и удаляют правило маскировки NAT при включении или отключении интерфейса. Без них обратный трафик из локальной сети никогда не доходит до партнёра.
Включение туннеля
wg-quick обеспечивает работу интерфейса, маршрутизацию и обработку PostUp/PostDown хуки:
sudo wg-quick up wg0Для автоматического запуска после перезагрузки включите модуль systemd:
sudo systemctl enable --now wg-quick@wg0Проверьте состояние с помощью:
sudo wg showНедавняя latest handshake строка подтверждает, что туннель работает. Если она выглядит устаревшей или пустой, проверьте брандмауэр, ключи с обеих сторон и настройки партнера AllowedIPs.
Добавление и удаление пиров
Каждому пиру требуется собственная пара ключей. Сгенерируйте её на клиенте, а затем добавьте открытый ключ пира в wg0.conf в новый [Peer] блоке с AllowedIPs записью, в которой указывается его IP-адрес туннеля.
Используйте /32 для одного устройства:
AllowedIPs = 10.8.0.3/32Это предотвращает ситуацию, когда один узел пытается использовать адреса, назначенные другому. Для доступа с разделенным туннелем укажите только те частные подсети, которые должны проходить через туннель, например AllowedIPs = 10.8.0.0/24.
Примените изменения конфигурации без прерывания активных сеансов:
sudo wg syncconf wg0 <(wg-quick strip wg0)Удаление узла-партнера осуществляется аналогичным образом. Удалите его [Peer] блок из wg0.conf и запустите syncconf заново.
Устранение неполадок
Если узел подключается, но не может установить связь с каким-либо ресурсом на другой стороне, причина, как правило, кроется в одном из четырёх факторов:
- Отключена переадресация IP
- Отсутствует правило маскировки NAT
- Указан неверный исходящий интерфейс в правиле NAT
AllowedIPsне включает адрес назначения
Проверьте перенаправление:
cat /proc/sys/net/ipv4/ip_forwardДолжно вернуть 1. Если возвращается 0, значит изменение sysctl не применилось или не было сохранено.
Проверьте правило NAT и исходящий интерфейс:
sudo iptables -t nat -L POSTROUTING
ip route get 1.1.1.1Вторая команда показывает фактическое имя исходящего интерфейса, например ens3, enp1s0, или eth0. Оно должно совпадать с интерфейсом в правиле MASQUERADE.
Если сам хэндшейк отсутствует, проверьте, открыт ли порт UDP 51820 открыт на брандмауэре и у любого провайдера выше по цепочке, а также убедитесь, что обе стороны имеют правильный открытый ключ друг друга.
Для узлов, находящихся за домашним или мобильным NAT, который прерывает неактивные UDP-сессии, установите PersistentKeepalive = 25 на клиенте.
Ротация ключей и заранее согласованные ключи
Для туннелей, которые остаются активными в течение нескольких месяцев, следует производить ротацию ключей примерно раз в год. Сгенерируйте новую пару ключей, обновите оба конца и примените с помощью wg syncconf. Не используйте один и тот же закрытый ключ для двух узлов. Это приводит к конфликтам маршрутизации и нарушает обмен данными между ними.
Для добавления дополнительного уровня безопасности поверх аутентификации по открытому ключу добавьте предварительно согласованный ключ для каждого узла:
wg genpskДобавьте результат в виде PresharedKey = <PSK> в [Peer] блоке с обеих сторон. WireGuard включает PSK в процесс установления соединения, поэтому злоумышленник, который каким-либо образом взломает один из асимметричных ключей, всё равно не сможет расшифровать трафик без него.
Полезные повседневные команды:
| Команда | Назначение |
|---|---|
wg show | Узлы, установка соединения, счетчики трафика |
wg show wg0 transfer | Счётчики байтов для wg0 |
wg show all dump | Машинно-читаемый вывод для скриптов мониторинга |
wg syncconf wg0 <(wg-quick strip wg0) | Применение изменений конфигурации без прерывания сеансов |
wg genpsk | Генерация предварительно согласованного ключа |
Если вам нужен стабильный, общедоступный хост для завершения туннелей WireGuard и маршрутизации частного трафика в вашу инфраструктуру, ознакомьтесь с тарифами FDC на VPS без ограничений трафика.

Цифровая усталость глаз: как защитить зрение в мире, где мы проводим много времени перед экранами
Всю день смотрите в экран? Узнайте, как снизить цифровую утомляемость глаз с помощью проверенных методов и инструментов. Это руководство незаменимо для удаленных сотрудников, разработчиков и всех, кто работает в сфере технологий.
4 мин чтения - 21 мая 2025 г.
Почему важно иметь мощный VPS без ограничений по трафику
8 мин чтения - 9 мая 2025 г.

У вас есть вопросы или вам нужно индивидуальное решение?
Гибкие варианты
Глобальный охват
Мгновенное развертывание
Гибкие варианты
Глобальный охват
Мгновенное развертывание