WireGuard + QR-code конфиг файла для мобильной версии клиента

0. для быстрой конфигурации

ключей и файлов, есть сайт https://www.wireguardconfig.com/

paragraph_text

1. Установка WireGuard

установка простецкая, одна и та же, что на сервак, что на клиент: команды все от root

 apt update  
 apt dist-upgrade -y  
 apt install wireguard resolvconf iptables

подготовим систему к форвардингу (делаем только на сервере)

nano /etc/sysctl.conf  

исправим на след. параметры:

 net.ipv4.ip_forward = 1
 net.ipv6.conf.default.forwarding = 1
 net.ipv6.conf.all.forwarding = 1
 net.ipv4.conf.all.rp_filter = 1
 net.ipv4.conf.default.proxy_arp = 0
 net.ipv4.conf.default.send_redirects = 1
 net.ipv4.conf.all.send_redirects = 0

применим изменения "на лету"

 sysctl -p

paragraph_text

2. Создание ключей для сервера и клиента и конфиг сервера

Генерация ключей сервера, приватного и публичного

 wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key

Генерация ключей клиента, приватного и публичного

 wg genkey | sudo tee client01_private.key | wg pubkey | sudo tee client01_public.key

Настройка конфигурации сервера:

 nano /etc/wireguard/wg0.conf

перед настройкой, узнайте имя интерфейса с публичным адресом, обычно eth0

вставим следующие строки:

[Interface]
Address = 10.25.12.1/24
ListenPort = 63665
PrivateKey = CL6z56HpyzGTSDqy+2sHCDCqlzI/MdPUvpOOJRcbrFs=
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; 
         iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; 
         ip6tables -A FORWARD -i wg0 -j ACCEPT; 
         ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; 
           iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; 
           ip6tables -D FORWARD -i wg0 -j ACCEPT; 
           ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = oOIUOTaVND6GuuHtwTBSnP5DBj1jke3MGL4KDYxlwGM=
AllowedIPs = 10.25.12.20/32
[Peer]
PublicKey = DCuhCWVx56HJG1VfteqF9TAp4tx926e8iYxyMGNp1DQ=
AllowedIPs = 10.25.12.21/32

Описание файла:

Секция [Interface]
Address - виртуальный адрес для туннеля
ListenPort - порт соединения
PrivateKey - приватный ключ сервера
PostUp - действия после поднятия туннеля на интерфейсе wg0
PostDown - действия после отключеия туннеля на интерфейсе wg0

Секция [Peer]
PublicKey - публичный ключ клиента
AllowedIPs - выделенный(е) адрес(а) для клиента


paragraph_text

3. Создание конфига клиента

Конфиг клиента практически похож на серверный:

[Interface]
PrivateKey = kJC1aNiMZpSCeu+DkXBBz4mMh7b83bWYCjjg1IRlI1s=
Address = 10.25.100.21/24
DNS = 1.1.1.1,8.8.8.8,8.8.4.4
[Peer]
PublicKey = jZauXexjmkhseCnJYKWu1qiGpYKkdLXq37CB0hNXxng=
Endpoint = 195.111.127.101:63665
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Описание файла клиента:

Секция [Interface]
PrivateKey - приватный ключ клиента
Address - виртуальный адрес клиента
DNS - DNS сервера для клиента

Секция [Peer]
PublicKey - публичный ключ сервера
Endpoint - публичный адрес и порт сервера
AllowedIPs - разрешенные адрес(а) для клиента
PersistentKeepalive - опрос сервера каждые 25 секунд


4. Запуск сервера

Запуск сервера и клиента это по сути поднятие VPN туннеля

sudo wg-quick up wg0

Проверка соединения:

sudo wg show

отразится информация о пирах и о объеме полученных данных.

Остановка сервера или клиента.

sudo wg-quick down wg0

Создание автозапуска для поднятия соединения:

sudo systemctl enable wg-quick@wg0

paragraph_text

5. QR-code для клиента

Установка QR генератора

apt install qrencode

генерация кода на экран

qrencode -t ansiutf8 -r client01.conf

генерация кода в файл PNG

qrencode -t png -o client-qr.png -r client01.conf