Здесь рассматривается, как настроить роутер с OpenWrt в качестве клиента сервера OpenConnect.
- Всё проделывается на OpenWrt 23.05.0. На других версиях настройка не отличается
- На сервере используется общедоступный TLS-сертификат
- Туннель можно настроить через консоль и через LuCI
Установка пакета
opkg update && opkg install openconnect
Настройка состоит из конфига (url, login, pass), создания зоны для OpenConnect и разрешения на передачу трафика из зоны lan в зону oc.
Камуфляж и нестандартный порт
Вместо опций server, password используйте URI.
option uri 'test.com:8433/?NUqVl3YLuX'
Настройка через консоль
Первый способ через вставку в конфиг
Подставляем значения URL своего сервера, логин и пароль
config interface 'oc0'
option proto 'openconnect'
option server 'domain.com/?FUzTeWmXC2Fc2fyv'
option username 'test'
option password 'hGTWLIzox9RNHDL'
option vpn_protocol 'anyconnect'
option defaultroute '0'
и вставляем в /etc/config/network
.
Рестартуем сеть
service network restart
Проверяем, что интерфейс поднялся. Мы указали имя oc0, поэтому интерфейс будет называться vpn-oc0
root@OpenWrt:/etc/openvpn# ip a
...
18: vpn-oc0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN qlen 500
link/[65534]
inet 192.168.200.190/32 brd 255.255.255.255 scope global vpn-oc0
valid_lft forever preferred_lft forever
...
Проверить, что туннель работает, можно простым пингом с указанием интерфейса
ping -I vpn-oc0 itdog.info
Если интерфейс не поднялся, смотрите логи
logread -f
Второй способ через UCI
uci set network.oc0=interface
uci set network.oc0.proto='openconnect'
uci set network.oc0.server='domain.com/?FUzTeWmXC2Fc2fyv'
uci set network.oc0.username='test'
uci set network.oc0.password='hGTWLIzox9RNHDL'
uci set network.oc0.vpn_protocol='anyconnect'
uci set network.oc0.defaultroute='0'
uci commit network
Далее всё так же. Рестарт сети и посмотреть, работает ли. Этот конфиг будет также лежать в /etc/config/network
.
Настройка зоны
Для того чтобы клиенты роутера могли ходить через туннель, необходимо добавить зону для интерфейса OpenConnect и разрешить forwarding из lan зоны в /etc/config/firewall
config zone
option name 'oc'
option forward 'REJECT'
option output 'ACCEPT'
option input 'REJECT'
option masq '1'
option mtu_fix '1'
option device 'vpn-oc0'
option family 'ipv4'
config forwarding
option name 'lan-oc'
option dest 'oc'
option src 'lan'
option family 'ipv4'
Здесь, так же как и для openvpn, нужно указывать device.
После этого нужно перезапустить firewall
service firewall restart
Настройка через LuCI
Для настройки через LuCI потребуется пакет
opkg install luci-proto-openconnect
Чтоб установить через LuCI, надо зайти в System - Software. В поле Download and install package ввести имя пакета luci-proto-openconnect
и нажать кнопку Install
И если у вас не установлен основной пакет, то его тоже нужно установить.
Зайти в Network - Interfaces. Нажимаем кнопку Add new interface…, в протоколе выбираем OpenConnect. Имя можно вести любое, для совместимости с инструкцией задайте oc0. Далее Create Interface.
В следующем окне задайте VPN Server, Username и Password. На вкладке Advanced Settings снимите флажок с Use default gateway.
Save, потом Save & Apply.
Чтоб редактировать интерфейс, нужно нажать Edit, внести изменения и нажать Save.
Добавление zone и forwarding через LuCI
Зайти в Network - Firewall, промотать до Zones. Нажать кнопку Add
Заполнить вкладку:
Name - oc
Input - reject
Output - accept
Forward - reject
Masquerading - проставить галочку
MSS clamping - проставить галочку
Allow forward from source zones - lan
Save - Save & Apply
MTU
По дефолту устанавливается кривой MTU 1500, из-за этого могут быть разные проблемы. Исправить вручную до первой перезагрузки
ip link set dev vpn-oc0 mtu 1412
Перенаправление всего трафика в туннель
Параметр OpenConnect Use default gateway у меня на OpenWrt не работает как нужно. Возможно, требуется что-то подкрутить.
Перенаправление трафика можно настроить с помощью маркировки, как описано здесь
Переключение роутинга на OpenConnect
Речь идёт про мой способ точечного роутинга .
В файле /etc/hotplug.d/iface/30-vpnroute
меняем интерфейс с wg0 на vpn-oc0.
После этого рестартуем сеть, и роутинг теперь осуществляется через openconnect
/etc/init.d/network restart
Документация OpenWrt:
Нашли ошибку, неточность или знаете как лучше? Пишите в комментарии
Все обновления и новые статьи публикую в моём телеграм-канале .