Установка WireGuard

WireGuard — протокол связи, а также бесплатное ПО для организации VPN-сервера с шифрованием. По статистике, WireGuard до 5 раз быстрее OpenVPN, а также более безопасный.

Для подключения понадобится установить клиент на компьютер или на телефон:

  • Клиент для Android доступен здесь

  • Клиент для iOS доступен здесь

  • Клиент для Windows доступен здесь

Автоматическая установка и управление через веб-интерфейс

Инструкция по автоматической установке WireGuard размещена здесь:

pageУправление WireGuard через браузер

Автоматическая установка WireGuard

Данный вариант подразумевает управление через SSH. Если Вы хотите управлять пользователями через веб-интерфейс, то следуйте инструкции выше.

Для быстрой установки WireGuard используйте следующие команды:

curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
chmod +x wireguard-install.sh
./wireguard-install.sh

Скрипт установит всё необходимое, а также поможет добавить необходимое количество пользователей.

Установка WireGuard вручную

Данный способ установки рекомендуется использовать только опытным пользователям Linux. Для быстрой и простой установки используйте способы выше.

Для установки необходимо выполнить следующие команды в SSH:

yum install epel-release elrepo-release
yum install yum-plugin-elrepo
yum install kmod-wireguard wireguard-tools

Далее потребуется подключить модуль ядра, а также выполнить настройку WireGuard:

modprobe wireguard && lsmod | grep wireguard
mkdir /etc/wireguard && cd /etc/wireguard
wg genkey | tee server-private.key | wg pubkey > server-public.key
wg genkey | tee client-private.key | wg pubkey > client-public.key
chmod 600 ./*-private.key

Для перехода к настройке WireGuard откроем файл конфигурации через nano:

nano /etc/wireguard/wg0-server.conf

Добавим в файл следующие параметры конфигурации, предварительно заменив значения следующим образом:

  • <SERVER_PRIVATE_KEY> — ключ из файла server-private.key

  • <CLIENT_PUBLIC_KEY> — ключ из файла client-public.key

[Interface]
Address = 10.0.0.1/24
PrivateKey = <SERVER_PRIVATE_KEY>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 39548
[Peer]
PublicKey = <CLIENT_PUBLIC_KEY>
AllowedIPs = 10.0.0.2/32

Данный пример конфигурации дан при использовании iptables. Если на сервере используется firewalld, то значения параметров PostUp и PostDown для данного примера будут следующими:

PostUp = firewall-cmd --add-port $SERVER_PORT/udp && firewall-cmd --add-rich-rule='rule family=ipv4 source address=$FIREWALLD_IPV4_ADDRESS/24 masquerade' && firewall-cmd --add-rich-rule='rule family=ipv6 source address=$FIREWALLD_IPV6_ADDRESS/24 masquerade'
PostDown = firewall-cmd --remove-port $SERVER_PORT/udp && firewall-cmd --remove-rich-rule='rule family=ipv4 source address=$FIREWALLD_IPV4_ADDRESS/24 masquerade' && firewall-cmd --remove-rich-rule='rule family=ipv6 source address=$FIREWALLD_IPV6_ADDRESS/24 masquerade'

Далее необходимо внести правки в конифгурацию sysctl:

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

В завершении необходимо включить автозагрузку созданного нами сервера wg0, а также запустить его:

systemctl enable wg-quick@wg0-server
systemctl start wg-quick@wg0-server

Подключение к WireGuard

Для подключения к WireGuard необходимо скачать ПО клиента по ссылкам:

  • Клиент для Android доступен здесь

  • Клиент для iOS доступен здесь

  • Клиент для Windows доступен здесь

Для максимального быстрого подключения проще всего настроить генерацию QR-кода подключения на стороне сервера. Это можно сделать следующим образом.

Создадим файл клиента на стороне сервера:

nano /etc/wireguard/client.conf

В данный файл добавим конфигурацию аналогично конфигурации сервера, заменив аналогичным образом параметры, отвечающие за ключи:

  • <SERVER_PUBLIC_KEY> — ключ из файла server-public.key

  • <CLIENT_PRIVATE_KEY> — ключ из файла client-private.key

  • <SERVER_IP> — IP-адрес сервера

[Interface]
Address = 10.0.0.2/24
PrivateKey = <CLIENT_PRIVATE_KEY>
DNS = 8.8.8.8
[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
AllowedIPs = 0.0.0.0/0
Endpoint = <SERVER_IP>:39548
PersistentKeepalive = 20

Для генерации QR-кода выполните (код отобразится на экране):

qrencode -t ansiutf8 < /etc/wireguard/client.conf

Last updated