openconnect

Используем пакеты, расширяющие возможности оборудования
Rossi25
Сообщения: 5
Зарегистрирован: 03 окт 2016, 16:03

Сообщение Rossi25 » 03 окт 2016, 20:56

Здравствуйте!
Смотрю, этот форум более активный (ранее спросил на wl500g.info/), поэтому спрошу и тут помощи.
Подключил репо entware-ng (прошивка RMerlin, старая) и установил openconnect.
Подскажите, пожалуйста, где прописывать настройки (в каком файле, видимо в папке /opt/etc/openconnect) для openconnect и как его правильно запускать (стартовый скрипт?).
На другом роутере (wdr4300 openwrt прошивка) настроено и работает по файлу network типа описанного тут.
Файлы, которые появились после установки пакета:

Код: Выделить всё

# opkg files openconnect
Package openconnect (7.06-5) is installed on root and has the following files:
/opt/sbin/openconnect-wrapper
/opt/lib/netifd/proto/openconnect.sh
/opt/sbin/openconnect

Пытался запустить /opt/lib/netifd/proto/openconnect.sh, ругается на отсутствие '/lib/functions.sh' ( слудеющий файл . ../netifd-proto.sh тоже видимо не найдется) - это осталось из openwrt?
Гуру, подскажите, пожалуйста...

Rossi25
Сообщения: 5
Зарегистрирован: 03 окт 2016, 16:03

Сообщение Rossi25 » 04 окт 2016, 11:19

Некоторые размышления по поводу конфиг-файла: предполагалось, думаю, создавать их в /opt/etc/openconnect (раз эта папка появляется после установки пакета), например vpn1.conf vpn2.conf и т.д (если их несколько). Далее должен быть сервис, который отслеживает эти конфиги и генерирует строку запуска для исполняемого файла /opt/sbin/openconnect (или /opt/sbin/openconnect-wrapper, последний, видимо, позволяет использовать пароль из файла, а не интерактивно в консоли вводить). Это можно упростить, запуская сразу исполняемый файл с вручную заданными параметрами, а не из конфига. Ещё нужно как-то отслеживать PID (где создавать файл? и какая служба будет отслеживать), чтобы корректно завершать работу (вопрос этот мне вообще не ясен) при перезагрузке или просто командой /etc/init.d/openconnect stop.
iptables
Остается также вопрос файрвола, как сделать доступным созданный туннель компьютерам в локальной сети, а не только с роутера - маскарадинг (подскажите, какие минимальные правила нужны iptables, snat?)
UPD: Написал вот такие правила:

Код: Выделить всё

iptables -I FORWARD -i br0 -o vpn1openc -j ACCEPT
iptables -I FORWARD -i vpn1openc -o br0 -j ACCEPT
iptables -t nat -A POSTROUTING -o vpn1openc -j MASQUERADE
Свернуть

При запуске с опцией --non-inter появляется ошибка :? :

Код: Выделить всё

Failed to obtain WebVPN cookie

Также после прекращения команды пинг нажатием Ctrl+C в консоли роутера обрывается openconnect-туннель, в логах при этом:

Код: Выделить всё

Oct  4 12:45:55 openconnect[787]: Send BYE packet: Aborted by caller
Oct  4 12:45:55 openconnect[787]: User cancelled (SIGINT); exiting.

UPD: При закрытии консоли (putty) также завершается туннель с логами:

Код: Выделить всё

Oct  4 19:24:19 openconnect[787]: User detached from session (SIGHUP); exiting.


Надеюсь на ответ Александра Рыжовова :oops:

Rossi25
Сообщения: 5
Зарегистрирован: 03 окт 2016, 16:03

Сообщение Rossi25 » 06 окт 2016, 17:16

Причина отключения туннеля кроется видимо как раз в этом враппере /opt/sbin/openconnect-wrapper, который перехватывает по команде trap сигналы SIGINT (2) и SIGHUP (1) и другие:

Код: Выделить всё

trap cleanup2 2
trap cleanup 1 3 6 15

Зачем это?
Написал такой скрипт /opt/etc/init.d/S90openconnect
/opt/etc/init.d/S90openconnect

Код: Выделить всё

#!/bin/sh

ENABLED=yes
PROCS=openconnect
ARGS="5.5.5.5:443  --servercert='sha1:db945ecd7eb5fd5ae54eb1a5ae8a74202d601d35' -i vpn1openc --no-dtls --non-inter -b --syslog --script /opt/lib/netifd/vpnc-script -u Username  --passwd-on-stdin < /jffs/configs/vpn1openc.passwd"
PREARGS=""
DESC=$PROCS
PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

. /opt/etc/init.d/rc.func
Свернуть

Не запускается:

Код: Выделить всё

admin@RT-N66U-1E40:/tmp/home/root# /opt/etc/init.d/S90openconnect start
 Starting openconnect...              failed.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1112
Зарегистрирован: 09 авг 2015, 14:33

Сообщение Zyxmon » 06 окт 2016, 18:13

Rossi25 писал(а):...это осталось из openwrt?
Гуру, подскажите, пожалуйста...

Да. Чтобы понять логику, что, зачем, почему - можно посмотреть недостающие шелл скрипты на dev.openwrt.org

Rossi25
Сообщения: 5
Зарегистрирован: 03 окт 2016, 16:03

Сообщение Rossi25 » 06 окт 2016, 18:31

Zyxmon писал(а):Да. Чтобы понять логику, что, зачем, почему - можно посмотреть недостающие шелл скрипты на dev.openwrt.org

Эм.. Там же вроде целая система uci, /lib/functions.sh можно установить разве через entware?
Пока у меня костыль такой /opt/etc/init.d/S90openconnect:

Код: Выделить всё

#!/bin/sh

/opt/sbin/openconnect 5.5.5.5:443  --servercert='sha1:db945ecd7eb5fd5ae54eb1a5ae8a74202d601d35' -i vpn1openc --no-dtls --non-inter -b --syslog --script /opt/lib/netifd/vpnc-script -u Username  --passwd-on-stdin < /jffs/configs/vpn1openc.passwd

При включении роутера поднимается туннель, без всяких проверок на PID и корректного завершения.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1112
Зарегистрирован: 09 авг 2015, 14:33

Сообщение Zyxmon » 06 окт 2016, 19:03

Установить эти скрипты нельзя. Можно прочесть, изучить.


Вернуться в «Entware/Qnapware/Optware/Zyxware - обсуждаем репозитории пакетов»

Кто сейчас на конференции

Всего 4 посетителя :: 1 зарегистрированный, 0 скрытых и 3 гостя (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (121) здесь было 18 май 2016, 18:19

Сейчас этот форум просматривают: sepbiy и 3 гостя