Настройка сервера WireGuard в Linux (wg0, NAT, Peers)

12 мин чтения - 22 июня 2026 г.

hero section cover
Содержание
  • Когда использовать сервер WireGuard
  • Настройка сервера
  • Добавление и удаление пиров
  • Устранение неполадок
  • Ротация ключей и заранее согласованные ключи
Поделиться

Практическая настройка сервера 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 г.

Другие статьи
background image

У вас есть вопросы или вам нужно индивидуальное решение?

icon

Гибкие варианты

icon

Глобальный охват

icon

Мгновенное развертывание

icon

Гибкие варианты

icon

Глобальный охват

icon

Мгновенное развертывание