Не так давно компания ZyXel с помощью модуля открытых пакетов поддержала OPKG — пакеты из популярной ОС OpenWRT, предназначенной для домашних маршрутизаторов. Это значит, что часть из них теперь можно ставить на ZyXel Keenetic. В этой статье я опишу процесс включения пакета, настройки репозитория Entware с тысячами пакетов, а также настройки рутера как OpenVPN клиента.
На данный момент проект обитает и обсуждается на этом форуме.
Требования — любой кинетик с последней версией NDMSv2 и USB — портом, кроме моделей 4GII/III. Возможно, на некоторых устройствах для появления нужных компонентов потребуется перейти на бета-ветку прошивки.
Первым делом идём в настройки рутера, и там в обновлениях устанавливаем, выбрав нужные опции, компоненты Open Package support, IPv6, а также все компоненты из секции USB storage. IPv6 нужен для корректной работы netfilter, когда будем загонять трафик в туннель. Также потребуется компонент FTP на устройстве, если файлы конфигурации будут загружаться не на флешку напрямую, а по сети.
На флешке создать ext2/ext3 раздел с любой меткой на латинке (например, keendev), подключить к рутеру и на разделе с меткой keendev создать папку install.
Далее в эту папку надо закинуть файл установки:
— для Keenetic DSL, LTE, VOX — mips;
— для остальных Keenetic`ов — mipsel;
Потом на странице «Приложения > OPKG» поставить галку «Включить». Затем выбрать из списка нужный USB-носитель, в поле «Сценарий initrc:» вписать /opt/etc/init.d/rc.unslung и нажать «Применить».
Если все сделали правильно, то в системном журнале через некоторое время появится строчка "… Установка Entware-Keenetic завершена!"
Теперь можно зайти на кинетик по ssh, логин root, пароль zyxel.
Пароль никак не связан с паролем кинетика. Меняется он, если необходимо, командой passwd.
Первым делом обновим список пакетов: opkg update
Установка пакетов происходит командой opkg install %commandname%
Для работы OpenVPN — клиента необходимы следующие пакеты:
findutils — 4.6.0-1
iptables — 1.4.21-2
ldconfig — 1.0.13-4
libc — 1.0.13-4
libgcc — 5.3.0-4
liblzo — 2.09-1
libndm — 1.0.22-1
libopenssl — 1.0.2h-1
libpthread — 1.0.13-4
librt — 1.0.13-4
libssp — 5.3.0-4
libstdcpp — 5.3.0-4
ndmq — 1.0.2-1
openvpn-openssl — 2.3.10-1
opt-ndmsv2 — 1.0-4
terminfo — 6.0-1
zlib — 1.2.8-1
Узнать уже установленные можно с помощью opkg list-installed, неустановленные нужно доустановить, не указывая версию в конце, только имя пакета.
В папку /opt/etc/openvpn необходимо создать файл openvpn.conf, в помощь touch и vi, примерно следующего формата:
dev tun
fast-io
persist-key
persist-tun
nobind
remote %serverIP% %port%
remote-random
pull
comp-lzo
tls-client
verify-x509-name Server name-prefix
ns-cert-type server
key-direction 1
route-method exe
route-delay 2
tun-mtu 1500
fragment 1300
mssfix 1450
verb 3
cipher AES-256-CBC
keysize 256
auth SHA512
sndbuf 524288
rcvbuf 524288
-----BEGIN CERTIFICATE-----
%сертификат%
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
%ключ rsa%
-----END RSA PRIVATE KEY-----
<tls-auth>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
%ключ%
-----END OpenVPN Static key V1-----
</tls-auth>
-----BEGIN CERTIFICATE-----
%сертификат%
-----END CERTIFICATE-----
Если ваш провайдер OpenVPN даёт файл router.ovpn, его также можно использовать. Тогда в скрипте запуска /opt/etc/init.d/S20openvpn нужно его указать в строке:
ARGS="--daemon --cd /opt/etc/openvpn --config router.ovpn"
Для указания в скрипте iptables, какие интерфейсы нужно использовать, нужно их выяснить с помощью команды ifconfig.
Ищем в списке интерфейс с inet addr, совпадающим с локальным адресом вашего рутера. Например, он будет br0.
Теперь нужно прописать скрипт iptables в папке cd /opt/etc/ndm/netfilter.d. Назовём его openvpnfil.sh:
[ "$table" != filter ] && exit 0
iptables -I FORWARD -i br0 -o tun+ -j ACCEPT
iptables -I FORWARD -i tun+ -o br0 -j ACCEPT
iptables -t nat -A POSTROUTING -o tun+ -j MASQUERADE
Теперь рутер надо перезагрузить.
После перезагрузки идём опять по ssh и включаем OpenVPN, если он сам не включился при загрузке:
/opt/etc/init.d/S20openvpn start
В логах кинетика (уже в веб-конфигураторе) можно будет посмотреть, всё ли хорошо. Там же будет написано, где и в чём плохо, если что-то пойдёт не так.
Создано по мотивам абы как структурированных данных на http://forums.zyxmon.org/ и http://forum.keenetic.net/
Автор: crypby