WireGuard-сервер для доступа к офисной сети: пошаговая инструкция
Обновлено: октябрь 2026
Порядок такой: схема и адресация, установка и ключи, конфигурация сервера и первого клиента, затем — доступ сотрудников и проверка. Примеры приведены для Ubuntu Server 24.04 LTS; WireGuard имеет версию 1.0 и входит в ядро Linux начиная с 5.6, поэтому на актуальных дистрибутивах ничего собирать не нужно.
ВАШЕЙ ИНФРАСТРУКТУРЫ
Схема: что где стоит
Первый вопрос проектирования — где физически живёт сервер WireGuard. Ответ зависит от того, к чему нужен доступ, и принимается раньше всех остальных технических решений схемы.
Сервер внутри офиса — когда цель «из дома видеть офисные ресурсы»: учётную базу, файловые папки, камеры. Это небольшая машина или виртуальная машина на офисном гипервизоре с двумя свойствами: она видит офисную сеть и доступна из интернета по UDP — через проброшенный на роутере порт или белый адрес.
VPS в дата-центре — когда ресурсы, к которым нужен доступ, сами живут в облаке. Держать «вход в офис» на чужой площадке бессмысленно: туннель закончится там, где нет ни одного офисного ресурса.
Позже туннель на VPS можно объединить с офисным контуром в одну сеть, но начинать стоит с того варианта, где лежат ресурсы.
Дальше по тексту — первый вариант, как более частый. Адресация примера: офисная сеть 192.168.10.0/24, туннельная — 10.8.0.0/24, сервер WireGuard имеет адрес 192.168.10.5 в офисе и 10.8.0.1 в туннеле. Если у вас эти подсети заняты — замените на свои по всей инструкции, но не берите диапазон, совпадающий с домашней сетью сотрудника (типовые роутеры используют 192.168.0.0/24 и 192.168.1.0/24 — из-за этого маршруты «домой» перестают работать).
До настройки стоит определиться с двумя вещами. Порт: по умолчанию WireGuard использует UDP 51820 — пробросьте его на роутере или откройте на файрволе заранее. Учётные записи: ключ генерируется на каждое устройство, а не на человека — ноутбук и телефон одного сотрудника это два пира.
Отдельно про проброс порта: наружу открывается ровно один UDP-порт, ведущий на сервер WireGuard. Режим DMZ, отдающий наружу машину целиком, здесь не нужен и вреден: сервер видит офисную сеть, и лишняя открытость ему только мешает. На роутере с белым адресом это одно правило проброса; без белого адреса вопрос решается сервисом выделенного адреса у провайдера.
И последнее перед установкой: убедитесь, что у вас есть доступ к настройкам офисного роутера, — половина работы с WireGuard происходит именно там, в правиле проброса порта.
Установка и генерация ключей
Команды из инструкции копируются как есть; места, где нужно подставить свои значения — адреса, имена, ключи, — отмечены угловыми скобками.
Пакет ставится из штатного репозитория:
sudo apt update
sudo apt install wireguard
Ключи генерируются утилитой wg genkey. Сначала
запретим чтение создаваемых файлов всем, кроме владельца, затем
создадим пару для сервера и пару для первого клиента:
cd /etc/wireguard
umask 077
wg genkey | sudo tee server.key | wg pubkey | sudo tee server.pub
wg genkey | sudo tee client-ivanov.key | wg pubkey | sudo tee client-ivanov.pub
Для каждого клиента пара ключей своя; закрытые ключи клиентов передаются на их устройства, копии на сервере после настройки стоит удалить — серверу нужны только публичные ключи пиров.
Каталог /etc/wireguard с ключами — самая ценная часть установки: скопируйте его в надёжное место сразу, а не после первой же переустановки сервера. Права на файлы уже выставлены командой umask — закрытые ключи читает только root — и при переносе их стоит сохранить.
Проверьте, что пересылка пакетов включена — без неё сервер не будет передавать трафик клиентов в офисную сеть:
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system
Конфигурация сервера и первого клиента
Конфигурация сервера живёт в файле
/etc/wireguard/wg0.conf. Имя интерфейса после
сетевой карты уточните командой ip a — в примере это
eth0:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <содержимое server.key>
# NAT: трафик клиентов в офисную сеть
PostUp = iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
NAT в примере — самый простой способ дать клиентам доступ в офис. Альтернатива без NAT — статические маршруты на роутере офиса: «в 10.8.0.0/24 идти на 192.168.10.5». Она честнее для крупных схем, но требует прав на роутер; для начала NAT достаточно.
Если офисная сеть состоит из нескольких подсетей, NAT на сервере остаётся тем же, а вот в AllowedIPs клиентов добавляются все нужные диапазоны, и на межсетевых экранах между подсетями появляется правило для туннельной 10.8.0.0/24.
Запуск и добавление в автозагрузку:
sudo systemctl enable --now wg-quick@wg0
sudo wg show
Первая проверка сразу после запуска: sudo wg show
показывает интерфейс без пиров — на этом этапе это нормальная
картина, а ss -uln | grep 51820 подтверждает, что
порт слушается.
Если на сервере включён файрвол (ufw, nftables), добавьте к нему разрешение входящего UDP 51820 и проверьте политику пересылки — с политикой «запретить forward по умолчанию» клиенты увидят только сам сервер, но не офисную сеть.
Конфиг первого клиента — ноутбука сотрудника Иванова. У WireGuard официальные приложения для всех систем, формат конфигурации одинаков:
[Interface]
PrivateKey = <содержимое client-ivanov.key>
Address = 10.8.0.10/32
[Peer]
PublicKey = <содержимое server.pub>
Endpoint = vpn.company.ru:51820
AllowedIPs = 10.8.0.0/24, 192.168.10.0/24
PersistentKeepalive = 25
PersistentKeepalive = 25 нужен клиентам за
домашними роутерами: без периодических пакетов NAT-проброс
закрывается, и «утром всё работало, вечером отвалилось» —
ровно этот случай. Строку Endpoint замените на ваш адрес:
домен с A-записью на белый IP или сам IP.
Если офисные ресурсы открываются по именам, а не по адресам, добавьте в [Interface] клиента строку DNS с адресом внутреннего сервера имён — контроллера домена или роутера. Без неё туннель работает, а имена по-прежнему спрашиваются у провайдерского DNS, который про офисные имена не знает.
Раздача доступа сотрудникам
Каждому устройству — свой ключ и свой туннельный адрес. План адресации лучше зафиксировать до того, как адресов станет больше десяти:
| Диапазон | Кому |
|---|---|
| 10.8.0.1 | сервер |
| 10.8.0.10 – 10.8.0.99 | сотрудники, по адресу на устройство |
| 10.8.0.100 – 10.8.0.199 | подрядчики и сервисный доступ |
Новый пир добавляется на работающем сервере без разрыва остальных соединений:
wg genkey | sudo tee client-petrov.key | wg pubkey | sudo tee client-petrov.pub
sudo wg set wg0 peer <содержимое client-petrov.pub> allowed-ips 10.8.0.11/32
sudo wg-quick save wg0
Перед массовой выдачей конфигов стоит прогнать полный путь одному пилоту: установка, подключение из внешней сети, доступ к ресурсам, отзыв доступа. Пять минут на одном человеке экономят вечер объяснений на десяти.
wg-quick save записывает текущее состояние
интерфейса обратно в wg0.conf — без неё новый пир исчезнет после
перезагрузки. Отзыв доступа — операция того же порядка:
sudo wg set wg0 peer <публичный ключ> remove
sudo wg-quick save wg0
Практика, которая экономит время: список пиров с именами — «10.8.0.10 — иванов-ноут, 10.8.0.11 — петров-ноут, 10.8.0.12 — иванов-телефон» — ведётся там же, где хранятся адреса. Через год по голому списку публичных ключей авторство не вспомнит никто.
Конфиги доезжают до сотрудников по защищённому каналу — не вложением по публичной почте. На практике это настройка на месте, ссылка в корпоративном мессенджере или QR-код с экрана. В мобильных приложениях стоит задать пароль на профиль: конфиг в телефоне без пароля — это доступ к офису у каждого, кто поднимет аппарат. Для ноутбуков с полным туннелем в конфиг имеет смысл включить и DNS офиса — иначе запросы имён уйдут в чужую сеть открытым текстом.
AllowedIPs-стратегия
Одна строка в конфиге каждого пира определяет и маршрут, и границу доверия — поэтому её стоит осознанно выбрать, а не скопировать. Для сотрудников со «сплитом» (офис через туннель, интернет напрямую) это две подсети из примера выше; для служебных ноутбуков в недоверенных сетях — полный туннель 0.0.0.0/0; для подрядчика — адрес конкретного сервиса.
Как параметр устроен изнутри, какие значения за что отвечают и почему один адрес не должен встречаться дважды — разобрано в статье об AllowedIPs в WireGuard. Готовую строку для любого набора подсетей — включая режим «всё, кроме» — собирает калькулятор AllowedIPs.
Удобное свойство схемы: AllowedIPs меняется без перегенерации ключей. Расширили офис новой подсетью — допишите её сотрудникам и проверьте маршруты; сузили доступ подрядчику — правится одна строка его пира. Ключи остаются теми же, переустановка клиентам не требуется.
Стратегию стоит держать единой для всех сотрудников: смешанные конфигурации «у кого как» — источник трудноуловимых инцидентов. Исключения допустимы, но они фиксируются в том же адресном плане, что и всё остальное.
Адрес подрядчика из сервисного диапазона плана — 10.8.0.100 и дальше — заодно подсказывает правило файрвола: этой подсети разрешён вход только к согласованным сервисам.
Проверка и типовые проблемы
Диагностика начинается с sudo wg show. Две строки в
его выводе отвечают на большинство вопросов: latest
handshake — если рукопожатие свежее, ключи, Endpoint и
порт в порядке; transfer — если принятые байты
растут, туннель передаёт данные, а не просто держит сессию.
Дальше — по слоям: с клиента пингуется 10.8.0.1 (сервер в туннеле), затем офисный ресурс 192.168.10.x, затем, при полном туннеле, внешний адрес. Первая проверка отделяет установку соединения от маршрутизации, вторая — маршрутизацию от файрвола.
Список ниже отсортирован по частоте: первые два пункта закрывают большинство обращений в духе «WireGuard не работает».
- Handshake не проходит. Endpoint недоступен: порт не проброшен, протокол UDP закрыт файрволом, адрес изменился. Доступность порта проверяется снаружи офиса — изнутри проблема не видна.
- Handshake есть, трафика нет. AllowedIPs на одной из сторон или выключенный ip_forward на сервере — см. шаг 02.
- Соединение рвётся в простое. Клиент за NAT без PersistentKeepalive — добавьте строку в [Interface] клиента.
- Крупные файлы ходят, мелкие «зависают». Классический симптом завышенного MTU на пути; попробуйте в [Interface] клиента строку MTU = 1380.
- Работает у одного, не работает у другого. Сверьте AllowedIPs обоих пиров построчно: чаще всего у второго адрес занят или подсеть не вписана.
- Не работает только из некоторых сетей. Гостевые Wi-Fi и каптивные порталы часто пропускают только веб; UDP-пакеты до сервера не доходят. Симптом «дома работает, из кафе нет» описывает сеть, а не конфиг.
- Туннель живой, а имена офисных систем не открываются. Вопрос к DNS: адрес внутреннего сервера имён не вписан в [Interface] клиента или недоступен через туннель — см. шаг 03.
Когда всё заработало, схема фиксируется: адресный план, список пиров с владельцами, место хранения копии ключей и правило проброса на роутере. Эта записка позволит через два года добавить сотрудника за пять минут, а не восстанавливать логику по конфигам. Там же — контакт, по которому сообщат об утере ноутбука: отзыв пира занимает минуту.
Прогон всех проверок на свеженастроенном сервере занимает около двадцати минут; повторять его стоит после каждого изменения на роутере или файрволе офиса — именно их правки чаще всего тихо ломают туннель.
Частые вопросы
Сервер в офисе или всё-таки VPS?+
По месту, к которому нужен доступ. Офисные ресурсы — сервер в офисе; облачные сервисы — VPS рядом с ними. Туннель, «висящий» не там, где ресурсы, добавляет лишний прыжок и точку отказа.
Какой порт выбрать?+
Любой свободный UDP; 51820 — значение по умолчанию из документации. Смена порта слегка снижает шум от сканеров, но защитой не является — ключи защищают лучше.
Какое железо нужно под такой сервер?+
Минимальное: нагрузка от десятка клиентов на скромной виртуальной машине незаметна, шифрование выполняется быстро. Ограничением чаще бывает канал офиса, а не процессор.
Сколько клиентов выдержит такая схема?+
Адресный план /24 — более двухсот пиров; практический потолок задаётся шириной канала офиса. Для компании в несколько десятков устройств запас десятикратный.
Насколько безопасен сам WireGuard?+
Криптография современная и прошла независимый аудит; протокол сознательно минималистичен — настраивать в нём попросту мало чего. Практическая безопасность схемы складывается из обращения с ключами: кто и где их хранит, как отзывает, кто имеет доступ к каталогу на сервере.
Сотруднику нужен статический IP?+
Нет. Статический адрес или проброшенный порт нужен только серверу — стороне, к которой подключаются. Клиенты подключаются откуда угодно, включая мобильные сети.
А телефоны?+
Официальные приложения WireGuard для мобильных систем принимают тот же конфиг — удобнее всего в виде QR-кода, который генерируется из файла на сервере. Телефон — отдельный пир со своим адресом из плана.
Как правильно удалить доступ сотруднику?+
Удалить его пиры командой wg set … remove с
последующим wg-quick save и изъять устройства с
конфигами. Закрытый ключ сотрудника вне сервера остаётся
действительным до удаления пира — поэтому отзыв и состоит
из этих двух шагов.
Связанные материалы
Объединение двух офисов и удалённых сотрудников на роутерах — следующая ступень той же задачи: сценарий с адресным планом разобран в статье о MikroTik и WireGuard. Постановка VPN-доступа под вашу схему — направление VPN и удалённого доступа.