Установка WireGuard VPN

WireGuard — это бесплатный, современный и быстрый VPN с открытым исходным кодом и современной криптографией, поддерживающий соединения IPv4 и IPv6. Он проще, быстрее, чем IPSec и OpenVPN.

Для сравнения, OpenVPN и IPSec, использует TLS и сертификаты для аутентификации и установления зашифрованных туннелей между системами. Различные версии TLS включают поддержку сотен различных криптографических наборов и алгоритмов, и хотя это обеспечивает большую гибкость, это также делает настройку VPN, использующей TLS, более сложной и подверженной ошибкам.

Шифрование WireGuard основано на открытых и закрытых ключах, позволяющих узлам устанавливать зашифрованный туннель между собой.

Также WireGuard работает на уровне ядра ОС Linux, в отличии от OpenVPN, что позволяет ему пропускать трафик через тунель без практических потерь в скорости.

Установка

Установка WireGuard на Linux Ubuntu 20.04 (Работает и на 18/20/22)

Подготовка системы:

sudo apt update && apt upgrade

sudo echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sudo sysctl -p

Установка:

sudo apt install wireguard

Генерация ключей для сервера: публичный и приватный:

sudo wg genkey | sudo tee /etc/wireguard/privatekey | sudo wg pubkey | sudo tee /etc/wireguard/publickey

Конфигурация:

sudo vim /etc/wireguard/wg0.conf

[Interface]
Address = 192.168.168.1/24
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PrivateKey = <SERVER-PRIV-KEY>

где <SERVER-PRIV-KEY> — результат генерации приватного ключа сервера: /etc/wireguard/privatekey

Запуск сервиса

sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
systemctl status wg-quick@wg0

sudo wg show wg0

Подготовка клиента

Генерация ключей для клиента: публичный и приватный:

sudo wg genkey | sudo tee /etc/wireguard/cl1_privatekey | sudo wg pubkey | sudo tee /etc/wireguard/cl1_publickey

где cl1 — название клиента.

Обновим на сервере файл wg0.conf, добавим клиента:

sudo vim /etc/wireguard/wg0.conf

...
[Peer]
PublicKey = <СLIENT-PUBLIC-KEY>
AllowedIPs = 192.168.168.4/32

Необходимо перезапустить WireGuard

sudo systemctl restart wg-quick@wg0

systemctl status wg-quick@wg0

Настройки на стороне Клиента

vim cl1.conf

[Interface]
PrivateKey = <PEER_PRIVATE_KEY>
Address = 192.168.168.4/32

[Peer]
PublicKey = <SERVER-PUBKEY>
Endpoint = <SERVER-IP>:51820
AllowedIPs = 192.168.168.0/24
PersistentKeepalive = 20
где:
- <PEER_2_PRIVATE_KEY> - приватный ключ клиента
- <SERVER-PUBKEY> - публичный ключ сервера
- <SERVER-IP> - IP адрес сервера

После подключения, можно проверить соединения на сервере:

wg show wg0

Перенаправляем весь трафик через WireGuard

vim cl1.conf

[Interface]
PrivateKey = <PEER_PRIVATE_KEY>
Address = 192.168.168.4/32
DNS = 8.8.8.8

[Peer]
PublicKey = <SERVER-PUBKEY>
Endpoint = <SERVER-IP>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 20

Для мобильных клиентов

Приложение для iOS или Android доступно в сторах. Для ввода конфигов удобно использовать QR код. Для этого необходимо превратить конфиг клиента в QR.

sudo apt install qrencode

qrencode -t ansiutf8 < mob_cl2.conf

Появившийся QR код сканируем через установленный на смартфоне WireGuard.

Top