VPSРейтинг
VPNОбновлено: февраль 2026 · 10 мин чтения

Как настроить WireGuard VPN на VPS: пошаговый гайд 2026

WireGuard — самый быстрый и простой VPN-протокол. Настройка сервера занимает 10 минут на чистом Ubuntu 22.04. Все команды готовы к копированию.

Что понадобится

  • • VPS с Ubuntu 22.04 LTS (минимум 1 vCPU, 512 МБ RAM)
  • • Root-доступ по SSH
  • • Открытый UDP-порт на файрволле (по умолчанию 51820)
  • • 10–15 минут времени

Нет VPS? Смотрите рейтинг провайдеров для VPN — тариф от 150₽/мес.

Почему WireGuard, а не OpenVPN

WireGuard появился в 2018 году и быстро стал стандартом. Вот почему он лучше:

ПараметрWireGuardOpenVPN
Строк кода~4 000~70 000
СкоростьДо 10 Гбит/сдо 1 Гбит/с
КриптографияChaCha20, Curve25519Устаревшие алгоритмы
ПротоколUDP толькоUDP / TCP
Смена сети (WiFi→LTE)Без разрываПереподключение
Сложность настройкиПростаяСредняя
Встроен в ядро LinuxС 5.6 (2020)Нет (userspace)

Меньше кода = меньше уязвимостей. Работа в ядре Linux = максимальная скорость без userspace-накладных расходов.

Шаг 1: Установка WireGuard на сервер

Подключитесь к серверу по SSH и выполните:

Обновляем систему и ставим WireGuard
apt update && apt upgrade -y
apt install -y wireguard

На Ubuntu 22.04 WireGuard уже есть в стандартных репозиториях. На CentOS/AlmaLinux установка чуть сложнее:

Для CentOS/AlmaLinux 9
dnf install -y epel-release
dnf install -y wireguard-tools

Шаг 2: Генерация ключей

WireGuard использует пары ключей (приватный + публичный). Генерируем для сервера:

Генерируем ключи сервера
cd /etc/wireguard
wg genkey | tee server.key | wg pubkey > server.pub
chmod 600 server.key

Теперь ключи для первого клиента (выполняем здесь же, на сервере — удобнее):

Генерируем ключи клиента
wg genkey | tee client1.key | wg pubkey > client1.pub

Сохраните значения ключей — они понадобятся в конфигах:

Просматриваем ключи
cat server.key   # приватный ключ сервера — только в server.conf
cat server.pub   # публичный ключ сервера — в конфиг клиента
cat client1.key  # приватный ключ клиента — только в конфиг клиента
cat client1.pub  # публичный ключ клиента — в server.conf
Важно: Приватные ключи (server.key, client1.key) нельзя передавать никому. Публичные ключи (*.pub) — безопасны для передачи.

Шаг 3: Конфигурация сервера

Создаём файл конфигурации /etc/wireguard/wg0.conf:

Определяем сетевой интерфейс сервера
ip -o -4 route show to default | awk '{print $5}'
# Запомните название интерфейса (eth0, ens3, ens18 и т.д.)

Создаём конфиг (замените ПРИВАТНЫЙ_КЛЮЧ_СЕРВЕРА и ПУБЛИЧНЫЙ_КЛЮЧ_КЛИЕНТА на реальные значения,eth0 на имя вашего интерфейса):

/etc/wireguard/wg0.conf
[Interface]
PrivateKey = ПРИВАТНЫЙ_КЛЮЧ_СЕРВЕРА
Address = 10.0.0.1/24
ListenPort = 51820
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 = ПУБЛИЧНЫЙ_КЛЮЧ_КЛИЕНТА
AllowedIPs = 10.0.0.2/32
Пояснения:
  • Address = 10.0.0.1/24 — IP сервера в VPN-сети
  • ListenPort = 51820 — UDP-порт WireGuard (можно изменить)
  • PostUp/PostDown — правила NAT для маршрутизации трафика клиентов
  • AllowedIPs = 10.0.0.2/32 — IP клиента в VPN-сети
Устанавливаем права на файл конфига
chmod 600 /etc/wireguard/wg0.conf

Шаг 4: IP-форвардинг и NAT

Без IP-форвардинга сервер не будет перенаправлять трафик клиентов в интернет. Это самая частая причина «VPN подключён, но интернета нет».

Включаем IP-форвардинг
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf
sysctl -p

Проверяем, что применилось:

Проверка IP-форвардинга
sysctl net.ipv4.ip_forward
# Должно вернуть: net.ipv4.ip_forward = 1

Правила iptables (PostUp/PostDown) уже прописаны в конфиге wg0.conf — они применятся автоматически при запуске и остановке интерфейса.

Шаг 5: Запуск и автозапуск

Запускаем WireGuard и добавляем в автозапуск
systemctl enable --now wg-quick@wg0

Проверяем статус:

Статус сервиса
systemctl status wg-quick@wg0
# Должно быть: active (exited) — это нормально для WireGuard

wg show
# Покажет: интерфейс, публичный ключ, порт, список пиров

Открываем порт в файрволле:

UFW — открываем UDP-порт WireGuard
ufw allow 51820/udp
ufw status
Если используете iptables напрямую (без ufw):iptables -A INPUT -p udp --dport 51820 -j ACCEPT

Шаг 6: Настройка клиента

Создаём конфиг для клиента. Его можно сохранить в файл или превратить в QR-код для мобильных устройств.

Конфиг клиента (wg-client1.conf)

Конфиг клиента (замените значения на свои)
[Interface]
PrivateKey = ПРИВАТНЫЙ_КЛЮЧ_КЛИЕНТА
Address = 10.0.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = ПУБЛИЧНЫЙ_КЛЮЧ_СЕРВЕРА
Endpoint = ВАШ_IP_СЕРВЕРА:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
  • AllowedIPs = 0.0.0.0/0 — весь трафик идёт через VPN
  • PersistentKeepalive = 25 — поддерживает соединение за NAT
  • DNS = 1.1.1.1 — используем Cloudflare DNS через VPN

Windows и macOS

Скачайте официальное приложение WireGuard с wireguard.com/install. Нажмите «Add Tunnel» → «Import from file» и выберите файл конфига. Включите тоннель кнопкой Activate.

Android и iOS

Установите WireGuard из App Store / Google Play. Для быстрого импорта сгенерируйте QR-код прямо на сервере:

Генерация QR-кода для мобильных клиентов
apt install -y qrencode
qrencode -t ansiutf8 < /etc/wireguard/wg-client1.conf

В приложении нажмите «+» → «Scan QR code» и наведите на терминал.

Linux (клиент)

Подключение на Linux-клиенте
apt install -y wireguard
cp wg-client1.conf /etc/wireguard/wg0.conf
wg-quick up wg0         # включить
wg-quick down wg0       # выключить
systemctl enable wg-quick@wg0  # автозапуск

Шаг 7: Проверка подключения

После подключения клиента проверьте на сервере:

Статус активных пиров
wg show
# В разделе peer должно появиться: latest handshake, transfer: N KiB received, N KiB sent

На стороне клиента убедитесь, что IP сменился:

Проверка IP через curl (Linux-клиент)
curl https://ifconfig.me
# Должен вернуть IP вашего VPS, а не домашний IP

Проверьте доступность внутреннего адреса сервера:

Пинг сервера через VPN-туннель
ping 10.0.0.1
# Ответы подтверждают, что туннель работает

Добавление новых клиентов

Каждый новый пользователь — новая пара ключей и новый IP в VPN-сети:

Генерация ключей для клиента 2
cd /etc/wireguard
wg genkey | tee client2.key | wg pubkey > client2.pub

Добавляем нового пира в конфиг сервера:

Добавляем в /etc/wireguard/wg0.conf
[Peer]
# Клиент 2
PublicKey = ПУБЛИЧНЫЙ_КЛЮЧ_КЛИЕНТА_2
AllowedIPs = 10.0.0.3/32

Применяем без перезапуска сервиса (активные клиенты не отключатся):

Горячее добавление пира
wg addconf wg0 <(wg-quick strip wg0)
# Или полный перезапуск:
systemctl restart wg-quick@wg0

Конфиг для клиента 2 аналогичен первому — только приватный ключ клиента 2 и адрес 10.0.0.3/24.

Типичные проблемы и решения

VPN подключён, но интернета нет

Решение: Проверьте IP-форвардинг: sysctl net.ipv4.ip_forward (должно быть = 1). Проверьте PostUp правила в конфиге: выполните iptables -t nat -L и убедитесь, что MASQUERADE есть.

Клиент не может подключиться (таймаут)

Решение: Проверьте, открыт ли UDP-порт: nc -zvu YOUR_IP 51820. Убедитесь, что wg-quick@wg0 запущен (systemctl status). Проверьте файрволл провайдера — некоторые VPS требуют открывать порты в панели управления.

DNS не работает через VPN

Решение: Добавьте в [Interface] клиента: DNS = 1.1.1.1. Убедитесь, что AllowedIPs включает ::/0 для IPv6. На некоторых системах нужно: PostUp = resolvectl dns wg0 1.1.1.1.

WireGuard не запускается: «Cannot find device wg0»

Решение: Ядро слишком старое или модуль не загружен. Проверьте: uname -r (нужно 5.6+). На старых ядрах установите: apt install -y wireguard-dkms.

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

Смотрите также