8.2.10 Установка и настройка WireGuard VPN
WireGuard — современный VPN-протокол, известный своей высокой скоростью, минимализмом и надёжной криптографией. Это идеальный выбор для серверов на базе Ubuntu, когда требуется безопасное и простое в настройке VPN-решение.
Требования к серверу
- Услуга виртуального или выделенного сервера
- CPU: от 1 ядра, RAM: от 512 МБ
- ОС: Ubuntu 24.04 LTS
- Доступ root или через sudo
- свободный UDP-порт (по умолчанию — 51820).
Установка WireGuard
Перед установкой обновим систему:
sudo apt update && sudo apt upgrade -y
Установим WireGuard:
sudo apt install wireguard -y
WireGuard входит в ядро Linux начиная с версии 5.6, поэтому дополнительная установка DKMS или ядра не требуется.
Создание ключей
WireGuard использует пару ключей: приватный и публичный. На сервере выполним следующую команду для генерации ключей:
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
Проверьте права доступа:
chmod 600 /etc/wireguard/server_private.key
Публичный ключ вы будете использовать в конфигурациях клиентов.
Настройка WireGuard на сервере
Для начала выполним команду для определения Вашего сетевого интерфейста:
ip a
Выводом команды будет список сетевых интерфейстов из которых необходимо выбрать
Создайте конфигурационный файл /etc/wireguard/wg0.conf
:
sudo nano /etc/wireguard/wg0.conf
Пример содержимого. Замените <interface> на Ваш сетевых интерфейс и <private server key> на приватный ключ сервера:
[Interface]
Address = 10.0.0.1/24
PrivateKey = <private server key>
ListenPort = 51820
SaveConfig = true
# Разрешаем трафик через сервер
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o <interface> -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o <interface> -j MASQUERADE
Включаем IP-ретрансляцию:
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Запускаем WireGuard на сервере:
sudo systemctl start wg-quick@wg0.service
sudo systemctl enable wg-quick@wg0.service
Настройка firewall
ufw
sudo ufw allow 51820/udp
sudo ufw enable
iptables
iptables -I INPUT -p udp -m udp --dport 51820 -j ACCEPT
Добавление клиента
Для каждого клиента создаются отдельные ключи и IP-адрес. Данную команду будем выполнять на клиенте:
wg genkey | tee client1_private.key | wg pubkey > client1_public.key
После чего добавим созданого клиента на сервер используя полученный в предыдущем шаге client1_public.key
:
sudo wg set wg0 peer <client1_public_key> allowed-ips 10.0.0.2/32
Пример конфигурации клиента
Сохраните этот файл под именем client.conf
и используйте его в клиентском приложении WireGuard (на Linux, Windows, Android или iOS).
[Interface]
PrivateKey = <client1_private_key> # Вставьте здесь приватный ключ клиента
Address = 10.0.0.2/32 # IP-адрес клиента в VPN-сети
DNS = 1.1.1.1 # DNS-сервер, используемый через VPN
[Peer]
PublicKey = <server_public_key> # Публичный ключ сервера
Endpoint = <IP_сервера>:51820 # IP и порт сервера
AllowedIPs = 0.0.0.0/0, ::/0 # Проксификация всего трафика через VPN
PersistentKeepalive = 25 # Поддержание соединения (в секундах)
WireGuard в WSL2
Особенности WSL2:
Нельзя использовать AllowedIPs = 0.0.0.0/0 — это приведёт к потере доступа.
Используйте AllowedIPs = 10.0.0.0/24 — доступ к VPN-сети.
Подключение к внешнему интернету всё равно будет идти через Windows, а не через VPN.
Рекомендация: Если вам нужен полный VPN (интернет через WireGuard), используйте официальное приложение WireGuard для Windows.
Проверка работы
Команды для проверки:
sudo wg
ping 10.0.0.1
curl ifconfig.me
Ожидаемый результат:
sudo wg
— отображает активное соединение;ping
возвращает ответ от 10.0.0.1;curl
должен показать IP-адрес сервера (если трафик идет через VPN).