Настройка клиента WireGuard на OpenWrt

openwrt клиент wireguard vpn

Здесь рассматривается, как настроить на OpenWrt клиент WireGuard.

  • Всё проделывается на OpenWrt 22.03.5. На других версиях настройка не отличается
  • Предполагается, что уже есть работающий клиентский конфиг
  • Туннель можно настроить через консоль и через LuCi

Установка пакета

opkg update && opkg install wireguard-tools

Настройка состоит из конфигурации в network (Interface + Peer), создания зоны для WG и разрешения на передачу трафика из зоны lan в зону wg.

Через SSH можно настроить двумя способами:

  • Править файлы конфигурации
  • Использовать UCI

Настройка через файл конфигурации network

Конфигурация лежит в /etc/config/network. Так же как в любом конфиге WG, в OpenWrt есть две части: Interface и Peer.

config interface ‘wg0’option proto ‘wireguard’option listen_port ‘51820’option private_key ‘$PRIVATE_KEY’list addresses ‘$WG_IP’config wireguard_wg0option name ‘wg0_client’option route_allowed_ips ‘0’option persistent_keepalive ’25’option allowed_ips ‘0.0.0.0/0’option endpoint_host ‘$HOST’option endpoint_port ‘51820’option public_key ‘$PUBLIC_KEY’option preshared_key ‘$PRESHARED_KEY’

В переменные начинающиеся с $ нужно подставить ваши значения.

Часть Interface

Все перечисленные здесь переменные находятся в части [Interface] клиентской конфигурации.

proto — протокол, чтобы openwrt понимало, что это конфигурация WireGuard

listen_port — порт на котором WireGuard принимает соединения. Это можно не трогать

private_key — это приватный ключ клиента

list addresses — адрес в WG сети

Часть peer (здесь называется wireguard_wg0)

Все перечисленные здесь переменные находятся в части [Peer] клиентской конфигурации.

route_allowed_ips — флаг, который создаёт маршрут через WG интерфейс для перечисленных сетей из параметра allowed_ips. Если 1 и allowed_ips=0.0.0.0/0, то весь трафик будет идти через WG. 0 — выключено.

persistent_keepalive — интервал времени, через который отправляются пакеты для поддержки соединения. Это можно не трогать

allowed_ips — подсети, в которые может ходить трафик через туннель. В большинстве случаев никаких ограничений не требуется, поэтому 0.0.0.0/0

endpoint_host — ip/url WG сервера

endpoint_port — порт WireGuard на сервере. Указан в Endpoint после :

public_key — публичный ключ сервера

preshared_key — ключ PresharedKey, нужно указывать только, если сервер поддерживает это. И он есть в конфиге

Если нужна поддержка IPv6:

В interface добавить

list addresses ‘$WG_IPv6’

В wireguard_wg0

option allowed_ips ‘::/0’

Эта часть добавляется в конец файла конфигурации. После этого необходимо рестартануть сеть service network restart.

После рестарта должен появиться интерфейс wg0.

root@OpenWrt:~# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000…5: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN qlen 1000 link/[65534] inet 192.168.100.2/32 brd 255.255.255.255 scope global wg0 valid_lft forever preferred_lft forever

Для того, чтобы клиенты роутера могли ходить через WG, нужно добавить правила в /etc/config/firewall

config zone option name ‘wg’ option masq ‘1’ option output ‘ACCEPT’ option forward ‘REJECT’ option input ‘REJECT’ option mtu_fix ‘1’ option network ‘wg0’config forwarding option src ‘lan’ option dest ‘wg’

После этого нужно перезапустить firewall

service firewall restart

 

Настройка через UCI

В переменные начинающиеся с $ нужно подставить ваши значения.

uci set network.wg0=»interface»uci set network.wg0.proto=»wireguard»uci set network.wg0.private_key=»$PRIVATE_KEY»uci set network.wg0.listen_port=»51820″uci add_list network.wg0.addresses=»$WG_IP» uci set network.peer=»wireguard_wg0″uci set network.peer.public_key=»$PUBLIC_KEY»uci set network.peer.endpoint_host=»$HOST»uci set network.peer.endpoint_port=»51820″uci set network.peer.route_allowed_ips=»0″uci set network.peer.persistent_keepalive=»25″uci set network.peer.allowed_ips=»0.0.0.0/0″

Применить изменения и рестартануть сеть

uci commit networkservice network restart

Если в конфиге есть PRESHARED_KEY

uci set network.peer.preshared_key=»$PRESHARED_KEY»

Если нужна поддержка IPv6

uci add_list network.wg0.addresses=»$WG_IPv6″uci add_list network.peer.allowed_ips=»::/0″

Добавление зоны и forwarding

uci add firewall zoneuci set firewall.@zone[-1]=zoneuci set firewall.@zone[-1].name=’wg’uci set firewall.@zone[-1].masq=’1’uci set firewall.@zone[-1].output=’ACCEPT’uci set firewall.@zone[-1].forward=’REJECT’uci set firewall.@zone[-1].input=’REJECT’uci set firewall.@zone[-1].mtu_fix=’1’uci set firewall.@zone[-1].network=’wg0’uci add firewall forwardinguci set firewall.@forwarding[-1]=forwardinguci set firewall.@forwarding[-1].src=’lan’uci set firewall.@forwarding[-1].dest=’wg’

Применить изменения и рестартануть firewall

uci commit networkservice firewall restart

 

Проверка работы через консоль

Посмотреть статистику WG можно через команду wg show. Смотреть на latest handshake, он должен быть меньше двух минут.

И на transfer: в received и sent должны быть не нули.

peer: — preshared key: (hidden) endpoint: host:51820 allowed ips: 0.0.0.0/0, ::/0 latest handshake: 34 seconds ago transfer: 184 B received, 552 B sent persistent keepalive: every 25 seconds

Проверить, что туннель работает, можно простым пингом с указанием интерфейса:

ping -I wg0 itdog.info

 

Добавление через LuCi (Веб-интерфейс)

Для управления через LuCi. Понадобится ещё два пакета. Установка через консоль

opkg install luci-proto-wireguard luci-app-wireguard

Чтоб установить через LuCi, надо зайти в System — Software. В поле Download and install package: ввести пакеты по отдельности и нажать кнопку Install

  • luci-proto-wireguard
  • luci-app-wireguard

И если у вас не установлен основной пакет, то нужно установить и его wireguard-tools.

Добавление интерфейса делается в Network — Interfaces — Add new interface. В поле Protocol выберете WireGuard VPN, Name — wg0.

Перед вами откроется страница конфигурации интерфейса. Здесь есть два пути:

  • Импорт через файл конфигурации
  • Вручную внести все параметры

Импорт через файл конфигурации

Импорт из файла у меня отработал криво и завелось только после ручной правки. Не рекомендую этот способ.

Для быстрого внесения через файл конфигурации выберите Import configuration и скопируйте текст из файла конфигурации или перенесите с помощью drag&drop файл конфигурации с компьютера. После нажатия кнопки Import setting конфигурация запишется в соответствующие поля, и нужно нажать Cancel. Вы вернётесь обратно на страницу с параметрами интерфейса.

Перейдите в секцию Peers. Здесь точно так же нужно вставить текст файла конфигурации или перенести его с компьютера. После этого нажмите кнопку Save.

Теперь нужно применить изменения. Нажмите кнопку Save & Apply.

У интерфейса должны появиться числа в полях RX и TX.

Ручное внесение параметров

Нужно перенести вручную параметры переменных из клиентского конфига в веб-интерфейс. Почти все имеют такие же названия.

В General Settings нужно внести:

  • Private Key
  • Public Key из секции Peer
  • IP Addresses (Address)

В Peers нужно добавить peer с помощью кнопки Add peer и там прописать:

  • Public Key
  • Preshared Key, если есть в конфиге
  • Allowed IPs
  • Endpoint Host
  • Endpoint Port
  • Persistent Keep Alive

Если вам не нужно перенаправлять весь трафик в WG, то галочка у Route Allowed IPs должна быть выключена. Она создаёт маршрут через WG интерфейс для перечисленных сетей из параметра allowed_ips. Если галочка проставлена и allowed_ips=0.0.0.0/0, то весь трафик будет идти через WG.

После этого Save, Save, Save & Apply.

У интерфейса должны появиться числа в полях RX и TX.

Также можно посмотреть в Status — Wireguard: Latest Handshake должен быть меньше двух минут.

Если после нескольких правок не заводится, попробуйте кнопку Restart у интерфейса.

Добавление zone и forwarding через LuCi

Зайти в Network — Firewall, промотать до Zones. Нажать кнопку Add

Заполнить вкладку:

Name — wg

Input — reject

Output — accept

Forward — reject

Masquerading — проставить галочку

MSS clamping — проставить галочку

Covered networks — wg0

Allow forward from source zones — lan

Save — Save & Apply

Друзья помогите этому контенту стать доступнее в социальных сетях.

Не проходи мимо жмакни по кнопке возможно кому то еще он будет полезен!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *