Table of Contents

FIXME This page is not fully translated, yet. Please help completing the translation.
(remove this paragraph once the translation is finished)

WireGuard server

Вступление

Цели

Инструкции командной строки

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

Устанавливаем необходимые пакеты. Указываем параметры конфигурации сервера VPN.

# Установка пакетов
opkg update
opkg install wireguard-tools
 
# Параметры конфигурации сервера Wireguard
WG_IF="wg"
WG_PORT="51820"
WG_ADDR="192.168.9.1/24"
WG_ADDR6="fd00:9::1/64"

2. Генерация ключей WireGuard

Сгенерируйте и обменяйте ключи между сервером и клиентом.

# Генерируем ключи
umask go=
wg genkey | tee wgserver.key | wg pubkey > wgserver.pub
wg genkey | tee wgclient.key | wg pubkey > wgclient.pub
wg genpsk > wgclient.psk
 
# Приватный ключ сервера
WG_KEY="$(cat wgserver.key)"
 
# Общий ключ
WG_PSK="$(cat wgclient.psk)"
 
# Публичный ключ клиента
WG_PUB="$(cat wgclient.pub)"

3. Межсетевой экран (Firewall)

Рассматривайте WG-сеть, как частную. Определите интерфейсу WG зону LAN, чтобы свести к минимуму настройку фаервола. Разрешить доступ к WG-серверу из зоны WAN.

# Конфигурация межстевога экрана
uci rename firewall.@zone[0]="lan"
uci rename firewall.@zone[1]="wan"
uci del_list firewall.lan.network="${WG_IF}"
uci add_list firewall.lan.network="${WG_IF}"
uci -q delete firewall.wg
uci set firewall.wg="rule"
uci set firewall.wg.name="Allow-WireGuard"
uci set firewall.wg.src="wan"
uci set firewall.wg.dest_port="${WG_PORT}"
uci set firewall.wg.proto="udp"
uci set firewall.wg.target="ACCEPT"
uci commit firewall
/etc/init.d/firewall restart

4. Настройка сети

Настраиваме WG интерфейс и пиры.

# Конфигурация сети
uci -q delete network.${WG_IF}
uci set network.${WG_IF}="interface"
uci set network.${WG_IF}.proto="wireguard"
uci set network.${WG_IF}.private_key="${WG_KEY}"
uci set network.${WG_IF}.listen_port="${WG_PORT}"
uci add_list network.${WG_IF}.addresses="${WG_ADDR}"
uci add_list network.${WG_IF}.addresses="${WG_ADDR6}"
 
# Добавляем пиры в Wireguard
uci -q delete network.wgclient
uci set network.wgclient="wireguard_${WG_IF}"
uci set network.wgclient.public_key="${WG_PUB}"
uci set network.wgclient.preshared_key="${WG_PSK}"
uci add_list network.wgclient.allowed_ips="${WG_ADDR%.*}.2/32"
uci add_list network.wgclient.allowed_ips="${WG_ADDR6%:*}:2/128"
uci commit network
/etc/init.d/network restart

Тестируем

Установите WG-соединение Use traceroute and traceroute6 to verify your client traffic is routed via the VPN gateway.

traceroute openwrt.org
traceroute6 openwrt.org

Проверьте ваш публичный IP-адрес.

Убедитесь, что на стороне клиента нет утечки DNS.

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

Проблемы

Соберите и проанализируйте следующую информацию.

# Перезапустите службы
/etc/init.d/log restart; /etc/init.d/network restart; sleep 10
 
# Log and status
logread -e vpn; netstat -l -n -p | grep -e "^udp\s.*\s-$"
 
# Runtime configuration
pgrep -f -a wg; wg show; wg showconf vpn
ip address show; ip route show table all
ip rule show; ip -6 rule show; nft list ruleset
 
# Persistent configuration
uci show network; uci show firewall; crontab -l