Настройка Wireguard
Настройка Wireguard сервера на роутере
- Сервисы -> Сервер VPN -> Настройки Wireguard
- Включить сервер Wireguard
- Сетевой адрес – Адрес сервера внутри туннеля
- Порт – Порт подключения к серверу (внешний порт)
- MTU туннеля – Максимальный размер кадра, передаваемый через туннель. О том, как это влияет на скорость передачи описано тут.
- Включить NAT – Включить трансляцию адресов.
- Общий ключ – Секретный ключ, одинаковый для обеих сторон (Preshared Key)
- Приватный ключ сервера – Ключ, который сервер сгенерировал для себя (Interface в настройка сервера)
- Публичный ключ сервера – Ключ, который сервер сгенерировал для подключений (Peer в настройках клиента)
- Публичный ключ клиента – Ключ, который клиент сгенерировал для подключений (Peer в настройках сервера)
- Разрешённая подсеть – Адрес клиента (или пул адресов)
- Префикс – Маска сети клиента
Настройка Wireguard сервера на другой ОС
- Установите сервер Wireguard
https://www.wireguard.com/install/ - Создайте папку /etc/wireguard на сервере
mkdir -p /etc/wireguard/
cd /etc/wireguard - Сгенерируйте ключи сервера
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey | tee /etc/wireguard/server_public.key - Сгенерируйте ключи клиента
wg genkey | tee /etc/wireguard/client_private.key | wg pubkey | tee /etc/wireguard/ client_public.key - Создайте файл конфигурации сервера
vim /etc/wireguard/wg0.conf - Настройте сервер
[Interface]
Address = 10.10.10.1/24
SaveConfig = true
PrivateKey = <содержимое server_private.key>
ListenPort = 51820
[Peer]
PublicKey = <содержимое client_public.key >
AllowedIPs = 10.10.10.2/32 - Если нужно больше клиентов, то добавьте повторите пункты 5-8 и добавьте новых Peer’ов по аналогии
- Настройте переадресацию портов на сервере
Добавьте net.ipv4.ip_forward = 1 в /etc/sysctl.conf
sysctl -p - Настройте подмену IP
firewall-cmd –zone=public –permanent –add-masquerade
systemctl reload firewalld - Откройте порт Wireguard в фаерволе
firewall-cmd –permanent –add-port=51820/udp
systemctl reload firewalld - Запустите сервер
wg-quick up /etc/wireguard/wg0.conf
На основе инструкции https://gist.github.com/tegila/ae203f1c5a4a7f99837136a541bbf502
Настройка Wireguard клиента на роутере
- Настройки сети -> VPN -> Настройки клиента Wireguard
- Включить клиент Wireguard
- Заполните Адрес сервера и порт сервера
- Сетевой адрес клиента – Адрес, который будет присвоен роутеру
- Разрешённые подсети – Список сетей, доступ к которым будет разрешен через туннель
- MTU – Максимальный размер кадра, передаваемый через туннель. О том, как это влияет на скорость передачи описано тут.
- Проверка доступности – Проверка доступности сервера (обмен Keepalive)
- Шлюз по умолчанию – Маршрут по умолчанию будет вести в туннель, т.к. весь трафик по умолчанию будет отправлен в туннель.
- Включить NAT – Включить трансляцию адресов.
- Общий ключ – Секретный ключ, одинаковый для обеих сторон (Preshared Key)
- Публичный ключ сервера – Ключ, который сервер сгенерировал для подключений (Peer в настройках клиента)
- Приватный ключ клиента – Ключ, который клиент сгенерировал для себя (Interface в настройка клиента)
- Публичный ключ клиента – Ключ, который клиент сгенерировал для подключений (Peer в настройках сервера)
Настройка Wireguard клиента на другой ОС
Для Windows/Linux
[Interface] Address = 10.10.10.2/32DNS = 8.8.8.8
PrivateKey = <содержимое client_private.key > [Peer] PublicKey = <содержимое server_public.key>
AllowedIPs = 0.0.0.0/0
Endpoint = <public-ip-of-your-server>:<port>
PersistentKeepalive = 25
Продвинутая настройка Wireguard
Если требуется настроить клиент Wireguard более тонко, то нужно внести требуемые изменения в его конфигурацию через CLI.
Править /etc/wgcli0.conf не имеет смысла, т.к. он генерируется динамически.
Для изменения настроек Wireguard нужно отредактировать /etc/rc.d/W36wireguard.
Функция wg_cli_gen_configs() отвечает за динамическую конфигурацию /etc/wgcli0.conf, поэтому туда можно внести необходимые изменения.
Например, некоторые предварительно подготовленные серверы Wireguard требуют использование Presharedkey, который нельзя внести через Web-интерфейс роутера.
Добавьте требуемый ключ или иные изменения в тело конфигурации, как если бы это был /etc/wgcli0.conf:
wg_cli_gen_configs() {
wg_cerst_cli_gen
printf “
[Interface]
PrivateKey = ${wireguard_cli_prikey}
[Peer]
PublicKey = ${wireguard_cli_pubkey}
Endpoint = ${wireguard_cli_endpoint}:${wireguard_cli_endpoint_port}
PersistentKeepalive = 10
Presharedkey = <ваш_ключ>
AllowedIPs = ${wireguard_cli_allowedips}
” > /etc/$cliif.conf
}
После редактирования файла не забудьте сохранить изменения командой fs save и перезапустить Wireguard клиент.
Если изменить поведение Wireguard клиент при запуске и остановке сервера, то можно создать свои скрипты и разместить их в папках /etc/wg-up.d и /etc/wg-down.d.
Маршрутизация сетей через Wireguard
- Выполните настройку Wireguard Client так же, как было описано ранее, за исключением опции Default Gateway. Ее нужно выключить
- Получите список IP адресов, которые требуется смаршрутизировать в туннель. Например, тут: https://rockblack.su/vpn/dopolnitelno/diapazon-ip-adresov
- Создайте папки /etc/wg-up.d/ и /etc/wg-down.d/
mkdir /etc/wg-up.d/
mkdir /etc/wg-down.d/ - Создайте скрипт для добавления маршрутов
vi /etc/wg-up.d/google.sh
Пример содержимого файла wg-up.d/google.sh
#!/bin/bash
ip route add 10.10.10.0/24 dev wgcli0
ip route add 8.8.8.8/32 dev wgcli0
Пример содержимого файла wg-down.d/google.sh
#!/bin/bash
ip route delete 10.10.10.0/24 dev wgcli0
ip route delete 8.8.8.8/32 dev wgcli0 - Добавьте права на запуск
chmod +x wg-up.d/google.sh
chmod +x wg-down.d/google.sh
- Сохраните файлы операционной системы
fs save