
0. для быстрой конфигурации
ключей и файлов, есть сайт https://www.wireguardconfig.com/
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
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 - выделенный(е) адрес(а) для клиента
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
5. QR-code для клиента
Установка QR генератора
apt install qrencode
генерация кода на экран
qrencode -t ansiutf8 -r client01.conf
генерация кода в файл PNG
qrencode -t png -o client-qr.png -r client01.conf