Здесь рассматривается, как настроить на 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_wg0
option 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 a
1: 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 network
service 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 zone
uci set firewall.@zone[-1]=zone
uci 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 forwarding
uci set firewall.@forwarding[-1]=forwarding
uci set firewall.@forwarding[-1].src='lan'
uci set firewall.@forwarding[-1].dest='wg'
Применить изменения и рестартануть firewall
uci commit network
service 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
Более подробная диагностика описана в статье Точечная маршрутизация на роутере с OpenWrt. Часть 2: Поиск и исправление ошибок
Добавление через 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