К основному содержимому

WireGuard VPN на VPS: быстрая установка и настройка

Безопасность · 19.04.2026 · 6 мин чтения
Иллюстрация к статье «WireGuard VPN на VPS: быстрая установка и настройка»

WireGuard — современный VPN-протокол, в 2–5 раз быстрее OpenVPN. Встроен в Linux ядро с версии 5.6. Настройка занимает 10 минут.

Установка WireGuard на сервере

sudo apt update
sudo apt install -y wireguard

# Включить IP forwarding
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

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

cd /etc/wireguard
sudo wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key
sudo chmod 600 server_private.key

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

[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = $(cat /etc/wireguard/server_private.key)
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]
# Клиент 1
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.0.0.2/32

Запуск WireGuard

sudo systemctl enable --now wg-quick@wg0
sudo wg show  # Проверить статус

Конфиг клиента

[Interface]
Address = 10.0.0.2/24
PrivateKey = CLIENT_PRIVATE_KEY
DNS = 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = YOUR-VPS-IP:51820
AllowedIPs = 0.0.0.0/0  # Весь трафик через VPN

QR-код для телефона

sudo apt install -y qrencode
qrencode -t ansiutf8 < /etc/wireguard/client.conf
💡 Для быстрой установки со всеми настройками используйте скрипт: curl -fsSL https://get.vpnsetup.net/wg | sudo bash
⚠️ Откройте порт 51820/UDP в UFW: sudo ufw allow 51820/udp

Установка WireGuard

sudo apt update && sudo apt install -y wireguard

# Включить IP forwarding
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

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

[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = $(cat server_private.key)
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]
PublicKey = $(cat client_public.key)
AllowedIPs = 10.0.0.2/32
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
sudo ufw allow 51820/udp

Почему WireGuard лучше OpenVPN

WireGuard работает в ядре Linux, использует современную криптографию (ChaCha20, Poly1305) и требует минимальной конфигурации. Скорость в 2–4 раза выше OpenVPN.

Конфигурация клиента

[Interface]
Address = 10.0.0.2/24
PrivateKey = CLIENT_PRIVATE_KEY
DNS = 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = YOUR_SERVER_IP:51820
AllowedIPs = 0.0.0.0/0  # Весь трафик через VPN
PersistentKeepalive = 25

Частые ошибки при настройке WireGuard

Handshake did not complete after 5 seconds

RTNETLINK answers: Operation not permitted

read from tunnel: connection timed out

Interface wg0 is not activated: Address family not supported
СообщениеПричинаРешение
Handshake did not complete after 5 secondsПорт 51820/UDP закрыт файрволом сервера или провайдера, либо публичные ключи сторон перепутаны местамиПроверить sudo ufw allow 51820/udp и сверить, что PublicKey клиента совпадает с тем, что прописан в [Peer] на сервере
RTNETLINK answers: Operation not permittedКоманда запущена без прав root или интерфейс wg0 уже поднят с другими параметрамиВыполнять команды через sudo, при конфликте сначала wg-quick down wg0, затем поднять заново
read from tunnel: connection timed outHandshake прошёл, но трафик не идёт — чаще всего забыли включить net.ipv4.ip_forward или не настроен MASQUERADEПроверить sysctl net.ipv4.ip_forward (должно быть 1) и правила iptables -t nat -L POSTROUTING
Address family not supportedВ конфиге указан IPv6-адрес, а на сервере отключена поддержка IPv6 в ядреИспользовать только IPv4-адресацию в Address/AllowedIPs либо включить IPv6 в системе

WireGuard против OpenVPN: практическое сравнение

ПараметрWireGuardOpenVPN
Размер кодовой базы~4000 строк, встроен в ядро Linux с версии 5.6~100 000 строк, работает в user space
ПротоколТолько UDPUDP или TCP на выбор
КриптографияФиксированный набор: ChaCha20, Poly1305, Curve25519Настраиваемый набор шифров, включая устаревшие для совместимости
Проход через строгие файрволы, блокирующие UDPХуже — нет fallback на TCPЛучше — можно работать по TCP 443, маскируясь под HTTPS

Когда WireGuard не подходит

  • Сеть клиента блокирует исходящий UDP целиком (некоторые корпоративные и мобильные сети) — WireGuard не умеет работать через TCP, здесь выручит только OpenVPN на 443/tcp
  • Нужна детальная аутентификация пользователей логином и паролем с интеграцией в LDAP/RADIUS — WireGuard авторизует только по публичному ключу, без встроенной поддержки пользовательских учёток
  • Требуется официальная поддержка на устаревших ОС без современного ядра — на старых системах нужен userspace-бэкенд, что усложняет установку по сравнению с OpenVPN
  • Политика безопасности требует аудируемого набора алгоритмов шифрования с возможностью замены — в WireGuard криптонабор фиксирован намеренно и не настраивается

Проверка, что туннель реально работает

# На сервере: время последнего handshake должно быть недавним
sudo wg show wg0 latest-handshakes

# На клиенте: реальный внешний IP должен смениться на серверный
curl -s https://ifconfig.me

# Сквозная проверка задержки через туннель
ping -c 4 10.0.0.1
  1. Выполните wg show на сервере и убедитесь, что у пира есть свежий latest handshake, а не «(none)»
  2. С клиента, подключённого через VPN, проверьте внешний IP через curl ifconfig.me — он должен совпадать с IP сервера, а не с домашним
  3. Прогоните ping до внутреннего адреса сервера (10.0.0.1) — стабильные ответы подтверждают, что трафик реально идёт через туннель
  4. Проверьте счётчики трафика в wg show wg0 transfer — если растёт только transmit, а receive нулевой, сервер не получает ответный трафик, и дело в NAT или маршрутизации

Базовую настройку файрвола перед поднятием VPN разбирает статья UFW на VPS, а усиление защиты самого SSH-доступа к серверу — материал хардненинг SSH.

Частые вопросы

В чём разница между VPS и VPN?

VPS — это арендованный виртуальный сервер, отдельная вычислительная машина с собственной операционной системой, на которой можно установить любое ПО, включая VPN. VPN — это технология зашифрованного туннеля для передачи трафика через такой сервер. Иными словами, VPS — это инфраструктура, а VPN — один из сервисов, который на ней разворачивают, как описано в данном руководстве.

Почему WireGuard обычно быстрее OpenVPN?

WireGuard работает прямо в ядре Linux и использует небольшой фиксированный набор современных алгоритмов шифрования, тогда как OpenVPN работает в пользовательском пространстве и поддерживает широкий, настраиваемый набор шифров ради совместимости. Меньший объём кода и работа на уровне ядра дают заметный прирост скорости и меньшую задержку по сравнению с OpenVPN.

Что делать, если сеть клиента полностью блокирует исходящий UDP?

В этом случае WireGuard не поможет — у протокола нет возможности работать по TCP. Единственный практичный выход — использовать OpenVPN, настроенный на порт 443 по TCP, который маскируется под обычный HTTPS-трафик и проходит через строгие корпоративные или мобильные файрволы там, где UDP-трафик целиком заблокирован.

Как проверить, что VPN-туннель реально передаёт трафик, а не просто подключен?

Проверки статуса подключения недостаточно — нужно убедиться, что данные действительно идут через туннель. Свежий latest handshake на сервере, смена внешнего IP на клиенте и растущие оба счётчика трафика, приём и передача, подтверждают реальную работу VPN. Если растёт только исходящий трафик, а входящий остаётся нулевым, проблема в маршрутизации или NAT.

Статья помогла?
← Назад в базу знаний Задать вопрос поддержке