Table of Contents

WireGuard-клієнт

Вступ

Цілі

Інструкції

1. Підготовка

Встановіть необхідні пакунки. Вкажіть параметри конфігурації для VPN-клієнта:

# Встановити пакунки
opkg update
opkg install wireguard-tools
 
# Параметри конфігурації
VPN_IF="vpn"
VPN_SERV="АДРЕСА_СЕРВЕРА"
VPN_PORT="51820"
VPN_ADDR="192.168.9.2/24"
VPN_ADDR6="fd00:9::2/64"

2. Керування ключами

Згенеруйте та обміняйтесь ключами між сервером і клієнтом:

# Генерація ключів
umask go=
wg genkey | tee wgserver.key | wg pubkey > wgserver.pub
wg genkey | tee wgclient.key | wg pubkey > wgclient.pub
wg genpsk > wgclient.psk
 
# Приватний ключ клієнта
VPN_KEY="$(cat wgclient.key)"
 
# Попередньо розділений ключ (PSK)
VPN_PSK="$(cat wgclient.psk)"
 
# Публічний ключ сервера
VPN_PUB="$(cat wgserver.pub)"

3. Брандмауер

Вважаємо VPN-мережу загальнодоступною. Призначаємо інтерфейс VPN до зони WAN для мінімізації налаштувань файрвола:

# Налаштування файрвола
uci rename firewall.@zone[0]="lan"
uci rename firewall.@zone[1]="wan"
uci del_list firewall.wan.network="${VPN_IF}"
uci add_list firewall.wan.network="${VPN_IF}"
uci commit firewall
service firewall restart

4. Мережа

Налаштуйте VPN-інтерфейс та пірів:

# Налаштування мережі
uci -q delete network.${VPN_IF}
uci set network.${VPN_IF}="interface"
uci set network.${VPN_IF}.proto="wireguard"
uci set network.${VPN_IF}.private_key="${VPN_KEY}"
uci add_list network.${VPN_IF}.addresses="${VPN_ADDR}"
uci add_list network.${VPN_IF}.addresses="${VPN_ADDR6}"
 
# Додати пір (сервер)
uci -q delete network.wgserver
uci set network.wgserver="wireguard_${VPN_IF}"
uci set network.wgserver.public_key="${VPN_PUB}"
uci set network.wgserver.preshared_key="${VPN_PSK}"
uci set network.wgserver.endpoint_host="${VPN_SERV}"
uci set network.wgserver.endpoint_port="${VPN_PORT}"
uci set network.wgserver.persistent_keepalive="25"
uci set network.wgserver.route_allowed_ips="1"
uci add_list network.wgserver.allowed_ips="0.0.0.0/0"
uci add_list network.wgserver.allowed_ips="::/0"
uci commit network
service network restart

Вирішіть проблеми гонки (race conditions) та за потреби налаштуйте динамічне підключення.

Перевірка роботи

Вирішення проблем