· 17 мин чтения

WireGuard VPN на Linux-сервере: корпоративная настройка под ключ

Семёнов Евгений, директор АйТи Фреш. WireGuard стал моим основным VPN-инструментом с 2020 года. За 15+ лет я прошёл все поколения VPN: PPTP, OpenVPN, IPsec, SSL VPN. WireGuard — первый, который настраивается за полчаса, работает на всех платформах и не тормозит на CPU старого маршрутизатора. В статье — готовая инструкция по развёртыванию корпоративного WireGuard-сервера на Linux для доступа сотрудников к внутренним ресурсам офиса.

Почему WireGuard

Короткий список преимуществ, которые я проговариваю клиенту:

Что нужно перед установкой

КомпонентТребование
ОСDebian 12 / AlmaLinux 9 / Ubuntu 24.04 LTS
Ресурсы1 vCPU, 1 ГБ RAM, 10 ГБ диск
СетьВнешний IP, открытый UDP-порт (по умолчанию 51820)
Доступroot или sudo
МаршрутизацияМаршруты в офисную подсеть, если нужен site-to-site

Установка

# Debian/Ubuntu
apt update && apt install -y wireguard wireguard-tools qrencode iptables-persistent

# AlmaLinux/Rocky
dnf install -y epel-release
dnf install -y wireguard-tools qrencode

# Включаем форвардинг
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/99-wireguard.conf
sysctl -p /etc/sysctl.d/99-wireguard.conf

Генерация ключей сервера

cd /etc/wireguard
umask 077
wg genkey | tee server_privatekey | wg pubkey > server_publickey

cat server_privatekey
cat server_publickey

Я всегда храню приватные ключи только на сервере, в бэкапах — зашифрованные. Публичные ключи — в отдельном текстовом реестре, который ведёт админ.

Конфигурация сервера /etc/wireguard/wg0.conf

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <содержимое server_privatekey>
SaveConfig = false

# NAT маршрутов во внешнюю сеть
PostUp   = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# Пример peer
[Peer]
# Иван Петров, ноутбук
PublicKey = <pubkey клиента>
AllowedIPs = 10.8.0.2/32

Генерация ключей клиента и его конфиг

# На сервере или клиенте
wg genkey | tee client01_priv | wg pubkey > client01_pub

# Конфиг клиента ivan.conf
[Interface]
PrivateKey = <client01_priv>
Address = 10.8.0.2/32
DNS = 10.10.1.2

[Peer]
PublicKey = <server_publickey>
Endpoint = vpn.example.ru:51820
AllowedIPs = 10.8.0.0/24, 10.10.0.0/16
PersistentKeepalive = 25

Для мобильных устройств удобно генерировать QR-код прямо в терминале:

qrencode -t ansiutf8 < /etc/wireguard/clients/ivan.conf

Запуск и автозапуск

systemctl enable --now wg-quick@wg0
systemctl status wg-quick@wg0

# Проверка
wg show
ip a show wg0

Firewall и безопасность

Site-to-Site между офисами

Типичный сценарий — офис и виртуальный сервер в дата-центре МТС на Dell Xeon Platinum 8280. Поднимаем WireGuard на обоих концах, даём роли peer-to-peer, прописываем AllowedIPs с обеих сторон:

# На стороне ДЦ
[Peer]
# Office-Main
PublicKey = <pubkey_office>
AllowedIPs = 10.8.0.10/32, 192.168.10.0/24
Endpoint = office.example.ru:51820
PersistentKeepalive = 25

# На стороне офиса
[Peer]
PublicKey = <pubkey_dc>
AllowedIPs = 10.8.0.1/32, 10.10.0.0/16
Endpoint = vpn.example.ru:51820
PersistentKeepalive = 25

Мини-кейс: VPN для 42 удалёнщиков

Январь 2026. Клиент — IT-интегратор, перевёл сотрудников на гибридный график, нужен стабильный VPN для доступа к серверу 1С, MS SQL, Jira и файл-шаре. Использовали OpenVPN, жаловались на скорости 20 Mbps и разрывы.

Собрал новый VPN на виртуалке Debian 12 в дата-центре МТС, 2 vCPU, 2 ГБ RAM, внешний IP на гигабитном канале 40G Mellanox. Роутинг в офисную сеть через GRE-туннель до граничного MikroTik. За 2 рабочих дня сгенерировал конфиги 42 пользователям, отправил PDF-инструкции с QR-кодами и ссылками на клиенты.

Результат: скорость скачивания от корпоративного файл-сервера через тоннель у домашних клиентов — 180–220 Mbps против 22 на OpenVPN. CPU на сервере в пике — 14%. Стоимость проекта — 42 000 руб., включая миграцию и две недели сопровождения. Обращений «не работает VPN» за 2 месяца — ноль.

Автоматизация выдачи конфигов

Для 20+ клиентов вручную добавлять peer — муторно. Я использую простой bash-скрипт, который генерирует ключи, прописывает peer в wg0.conf, применяет без рестарта и отдаёт QR или PDF:

#!/bin/bash
CLIENT_NAME=$1
CLIENT_IP=$2
SERVER_PUB=$(cat /etc/wireguard/server_publickey)
CLIENT_PRIV=$(wg genkey)
CLIENT_PUB=$(echo "$CLIENT_PRIV" | wg pubkey)

cat >> /etc/wireguard/wg0.conf <<EOF

[Peer]
# $CLIENT_NAME
PublicKey = $CLIENT_PUB
AllowedIPs = $CLIENT_IP/32
EOF

wg addconf wg0 <(wg-quick strip wg0)

cat > /etc/wireguard/clients/${CLIENT_NAME}.conf <<EOF
[Interface]
PrivateKey = $CLIENT_PRIV
Address = $CLIENT_IP/32
DNS = 10.10.1.2

[Peer]
PublicKey = $SERVER_PUB
Endpoint = vpn.example.ru:51820
AllowedIPs = 10.8.0.0/24, 10.10.0.0/16
PersistentKeepalive = 25
EOF

qrencode -t ansiutf8 < /etc/wireguard/clients/${CLIENT_NAME}.conf

Типовые ошибки

Мониторинг и логи

# Краткий статус
wg show

# Последний handshake клиента
wg show wg0 latest-handshakes

# Подсчёт трафика по peer
wg show wg0 transfer

# Системный лог
journalctl -u wg-quick@wg0 -f

У нас на практике я ставлю Prometheus-exporter для WireGuard и Grafana-дашборд с графиком активных клиентов, скорости и последних handshake — помогает быстро находить уснувшие устройства.

Развернём WireGuard VPN для вашего офиса

Настрою сервер на вашей виртуалке или размещу в дата-центре МТС, создам конфиги для всех сотрудников, подключу site-to-site между офисами, настрою мониторинг. Типовой проект — 1–3 рабочих дня. Опыт VPN — 15+ лет, сейчас основной инструмент.

Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш

FAQ — частые вопросы

Чем WireGuard лучше OpenVPN и IPsec?
Проще конфиг, быстрее, современная криптография, модуль в ядре.
Нужен ли WireGuard-серверу внешний IP?
Да, классическая схема. Клиенты могут быть за NAT.
Можно ли использовать WireGuard в России в 2026?
Для корпоративных VPN — да. Для обхода блокировок нужны обфускаторы поверх.
Какие клиенты WireGuard существуют?
Официальные для Windows, macOS, Linux, iOS, Android, OpenWRT.
Как поднять HA?
Два сервера + keepalived/DNS round-robin и синхронизация конфигов через git.

Подпишитесь на рассылку ITfresh

Раз в неделю — практические гайды для руководителя IT и сисадмина: безопасность, 1С, миграции, резервные копии, лайфхаки из реальных проектов.

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.