Wireguard в Ubuntu 22


Сервер

Для начала ставим саму программу

sudo apt update
sudo apt install wireguard wireguard-tools

Генерируем ключи

wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key

Добавим возможность форвардить трафик. В файле /etc/sysctl.conf добавляем строчку

net.ipv4.ip_forward = 1

И перезагружаем сервис

sudo sysctl -p

Теперь создадим конфиг для wireguard. Создаем файл /etc/wireguard/wg0.conf с следующим содержимым.

[Interface]
Address = 10.10.31.1/24
SaveConfig = false
PostUp = ufw route allow in on wg0 out on ens3
PostUp = iptables -t nat -I POSTROUTING -o ens3 -j MASQUERADE
PostUp = ip6tables -t nat -I POSTROUTING -o ens3 -j MASQUERADE
PreDown = ufw route delete allow in on wg0 out on ens3
PreDown = iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
PreDown = ip6tables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
ListenPort = 51820
PrivateKey = 

[Peer]
PublicKey = 
AllowedIPs = 10.10.31.2/32

[Peer]
PublicKey = 
AllowedIPs = 10.10.31.3/32

[Peer]
PublicKey = 
AllowedIPs = 10.10.31.4/32

Раздел [Interface]
Address — ip и маска для vpn сети
SaveConfig — я привык все делать правкой конфига. если поставить true, то ручные правки будут отменяться в пользу конфигурирования через cli.
PostUp и PreDown — команды фаерволла для маскарада трафика. ens3 меняем на своё имя интерфейса.
PrivateKey — строка из файла /etc/wireguard/server_private.key

Раздел [Peer]. Данных разделов может быть несколько.
PublicKey — публичный ключ КЛИЕНТА. Создать можно аналогично серверным ключам.
AllowedIPs — ip клиента

Далее добавляем сервис в загрузку и стартуем его

sudo systemctl enable wg-quick@wg0.service
sudo systemctl restart wg-quick@wg0.service

Клиент

Я подключаюсь с винды — https://www.wireguard.com/install/

В окне приложения нажимаем «Добавить пустой туннель» и затем «Редактировать». Конфиг клиента

[Interface]
PrivateKey = 
Address = 10.10.31.4/24

[Peer]
PublicKey = 
AllowedIPs = 10.10.31.0/24, 0.0.0.0/1, 128.0.0.0/1
Endpoint = endpoint:51820

Раздел [Interface]
PrivateKey — приватный ключ из пары КЛИЕНТА. В серверной в разделе [Peer] мы указывали его PublicKey.
Address — ip клиента

Раздел [Peer]
PublicKey — строка из файла /etc/wireguard/server_public.key на СЕРВЕРЕ.
AllowedIPs — адреса, которые будут работать через VPN
Endpoint — адрес и порт сервера.

Галочку «Блокировать не туннелированный трафик» снимаем что бы ходили DNS-запросы.


Добавить комментарий