Перейти к содержимому
VDS · Приложения и боты

Личный VPN на WireGuard

Как поднять WireGuard на VDS за десять минут: ключи, конфигурация сервера и клиента, маршрутизация трафика и доступ к внутренним службам машины.

Обновлено 23 августа 2026 г.

WireGuard — самый простой из современных VPN: несколько десятков строк конфигурации, высокая скорость и работа поверх UDP. На VDS-1 его хватает на несколько устройств, полоса до 500 Мбит/с при этом остаётся общей с остальными службами машины.

Установка и ключи

apt update && apt install -y wireguard
umask 077
wg genkey | tee /etc/wireguard/server.key | wg pubkey > /etc/wireguard/server.pub
wg genkey | tee /etc/wireguard/client1.key | wg pubkey > /etc/wireguard/client1.pub

umask 077 обязателен: приватный ключ, доступный на чтение всем, обесценивает весь VPN.

Включите пересылку пакетов:

echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-wg.conf
sysctl --system

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

/etc/wireguard/wg0.conf:

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <содержимое server.key>
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

[Peer]
PublicKey = <содержимое client1.pub>
AllowedIPs = 10.8.0.2/32

Имя внешнего интерфейса уточните командой ip route get 1.1.1.1. Запуск:

systemctl enable --now wg-quick@wg0
wg show
ufw allow 51820/udp

Клиент

[Interface]
Address = 10.8.0.2/24
PrivateKey = <содержимое client1.key>
DNS = 1.1.1.1

[Peer]
PublicKey = <содержимое server.pub>
Endpoint = ВАШ_АДРЕС:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

AllowedIPs = 0.0.0.0/0 заворачивает весь трафик через машину. Если VPN нужен только для доступа к внутренним службам, поставьте 10.8.0.0/24 — обычный интернет тогда пойдёт напрямую.

Для телефона тот же конфиг удобно передать QR-кодом:

apt install -y qrencode
qrencode -t ansiutf8 < client1.conf

Каждому устройству — свой ключ и свой блок [Peer]. Один ключ на всех означает, что при потере телефона придётся переделывать доступ всем.

Доступ к службам машины

VPN — самый чистый способ добраться до базы и панелей, не открывая их в интернет:

listen_addresses = 'localhost,10.8.0.1'

Подробнее — удалённое подключение к базе и панели для базы.

Частые ошибки

СимптомПричина
Рукопожатие есть, интернета нетНе включён ip_forward или нет правила MASQUERADE
latest handshake пустойЗакрыт UDP 51820 или неверный Endpoint
Соединение рвётся за NATНет PersistentKeepalive = 25 на клиенте
Сайты не открываются, IP пингуетсяНе задан DNS в конфиге клиента
После перезагрузки VPN не поднялсяСлужба не в автозапуске: systemctl enable wg-quick@wg0

Профиль клиента содержит приватный ключ — это готовый доступ к вашей сети. Не пересылайте конфиги в открытых чатах и удаляйте отозванные [Peer] из wg0.conf, а не просто выключайте устройство.