Пошаговое руководство по развёртыванию WireGuard VPN-сервера на Ubuntu VPS.
- Подключение к серверу
- Установка WireGuard
- Создание папок и генерация ключей
- Просмотр ключей
- Открытие порта
- Конфигурация сервера
- Включение IP Forwarding
- Запуск VPN
ssh -i ~/ssh-key.key ubuntu@IP_адрес_VPSsudo apt update && sudo apt upgrade -y
sudo apt install wireguard -y# Переходим в режим root
sudo -i
cd /etc/wireguard
# umask 077 — ограничивает права доступа к создаваемым файлам
umask 077
# Генерируем ключи сервера и клиента
wg genkey | tee server_private.key | wg pubkey > server_public.key
wg genkey | tee client_private.key | wg pubkey > client_public.key
# Pre-Shared Key (PSK) — дополнительный ключ для усиленной защиты (опционально)
wg genpsk# Краткий список всех сетевых интерфейсов (важно для настройки маршрутизации)
ip -br link
# Ключи сервера
cat /etc/wireguard/server_private.key
cat /etc/wireguard/server_public.key
# Ключи клиента
cat /etc/wireguard/client_private.key
cat /etc/wireguard/client_public.key💡 При использовании Варианта А (рекомендуемого) этот шаг пропустите — порт открывается и закрывается автоматически через PostUp/PostDown.
# Выполнять только если выбран Вариант Б!
iptables -I INPUT -p udp --dport 51820 -j ACCEPTnano /etc/wireguard/wg0.conf[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <ВСТАВИТЬ server_private.key>
# =============================================================
# Выберите ОДИН из двух вариантов правил маршрутизации:
# =============================================================
# ✅ Вариант А — РЕКОМЕНДУЕТСЯ (порт управляется автоматически, шаг 4 не нужен)
# Порт открывается при старте VPN и закрывается при остановке — ничего не забудешь
PostUp = iptables -I FORWARD -i wg0 -j ACCEPT; iptables -I FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE; iptables -I INPUT -p udp --dport 51820 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE; iptables -D INPUT -p udp --dport 51820 -j ACCEPT
# Вариант Б — простой (порт нужно открыть вручную на шаге 4)
# PostUp = iptables -I FORWARD -i wg0 -j ACCEPT; iptables -I FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
# PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
[Peer]
PublicKey = <ВСТАВИТЬ client_public.key>
AllowedIPs = 10.8.0.2/32
⚠️ Заменитеens3на фактическое имя вашего сетевого интерфейса из выводаip -br link.
sudo nano /etc/sysctl.confНайдите строку и раскомментируйте её (удалите #):
net.ipv4.ip_forward=1
Применяем изменения:
sudo sysctl -p
# Проверка — должна вернуть 1
sysctl net.ipv4.ip_forwardsudo systemctl enable wg-quick@wg0 # добавить в автозапуск
sudo systemctl start wg-quick@wg0 # запустить соединениеwg show # статистика подключения и список пиров| Команда | Описание |
|---|---|
sudo systemctl status wg-quick@wg0 |
Статус сервиса |
sudo systemctl restart wg-quick@wg0 |
Перезапуск соединения |
sudo systemctl stop wg-quick@wg0 |
Остановка соединения |
sudo systemctl enable wg-quick@wg0 |
Добавить в автозапуск |
sudo systemctl disable wg-quick@wg0 |
Убрать из автозапуска |
sudo systemctl reset-failed wg-quick@wg0 |
Сбросить ошибку сервиса |
ip rule show | grep 100
ip route show table 100| Хост | IP-адрес |
|---|---|
| Сервер | 10.8.0.1 |
| client1 | 10.8.0.2 |
| client2 | 10.8.0.3 |
Протестировано на Ubuntu 22.04 / 24.04 LTS