8.2.10 Установка и настройка WireGuard VPN

The Host Banner WireGuard

WireGuard — современный VPN-протокол, известный своей высокой скоростью, минимализмом и надёжной криптографией. Это идеальный выбор для серверов на базе Ubuntu, когда требуется безопасное и простое в настройке VPN-решение.

Требования к серверу

Установка WireGuard

Перед установкой обновим систему:

sudo apt update && sudo apt upgrade -y

system update

Установим WireGuard:

sudo apt install wireguard -y

install wireguard

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> на приватный ключ сервера:

/etc/wireguard/wg0.conf
[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

retronstlation

Запускаем 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).

client.conf
[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

wg show

Ожидаемый результат:

  • sudo wg — отображает активное соединение;
  • ping возвращает ответ от 10.0.0.1;
  • curl должен показать IP-адрес сервера (если трафик идет через VPN).