Настройка OpenVPN с форвардингом на роутере Zyxel Keenetic Giga II
Хотите получить из роутера практически полноценный Linux сервер с некоторым набором базовых программ на базе NDMS? В свое время, мой выбор пал на "Zyxel Keenetic Giga", он бюджетный и простой в настройке, да и в целом я в нем не разочаровался.
Однако, два года назад я так и не написал статью о том как получить из него полноценный Linux. Теперь же, мы купили себе вторую версию этого роутера "Zyxel Keenetic Giga II" и я всетаки заставил себя написать о настройке статью, поехали!
О прошивке
Сразу скажу, я усердно пробовал работать с прошивкой V2 (конкретно 2.04), но как бы я не пытался, так и не смог завести dropbear.
Почитав в интернетах о прошивке "V2", я понял что она сырая и не годится для расширения. В итоге я наткнулся на комментарий на 4pda и установил себе на Giga II прошивку "V1.11" (брал от сюда, ставил "Firmware-KEENETIC_GIGA_II-V1.11.RU.NDMS_140108210221.bin"), если файл уже не доступен, то пишите и я расшарю. Некоторые подробности о работе V1 на Giga II можно подчерпунть тут. Прошивку можно поменять в разделе "Система > Конфигурация", подробнее можно ознакомится тут.
Из-за того что мы установили прошивку V1.11 — дальнейшие инструкции также корректны и для первой версии Giga.
Расширяем Keenetic, добавляем sshd и opkg
Берем флешку от 1Гб, форматируем её в ext3 (например в GParted). Можете ознакомится с официальными требованиями к USB носителю.
Далее, идем на страницу документации о системе opkg, действуем по их инструкциям и скачиваем нужный архив тут, у меня это был "ext_init.sh-r2.tar.gz".
Теперь создаем каталоги и копируем содержимое архива:
Проверяем права на файл "ext_init.sh", главное чтобы он был исполняемым (это мы сделали в последней строчке).
Теперь вставляем флешку в первый USB-слот (определится как "DISK_A1"), на главной странице панели администрирования Zyxel, в разделе "USB-накопитель" должна появится наша флешка. Переходим в раздел "Система > Журнал" и ожидаем примерно такую запись:
root Starting opkg/linux install
root All errors are logged in a file /media/DISK_A1/tmpinstall/err.log
root Extracting busybox
root Unpacking busybox
root Extracting system
root Unpacking system
root Generating rsa/dss keys for dropbear
root Starting dropbear
dropbear[2428] Running in background
root Connect to keenetic using ssh and run finish_install.sh to finish installation
Теперь вы можете подключится по SSH.
Завершаем установку
Подключаемся по ssh:
ssh root@192.168.1.1
пароль "zyxel"
Теперь перво-наперво сменим пароль:
# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Запускаем finish_install.sh для завершения установки:
В каталоге /media/DISK_A1/system/etc/openvpn надо создать конфиг клиента openvpn.conf и положить туда предварительно сгенерированные (или полученные от какого-либо сервиса) ключи. Вот пример возможного конфига:
client
remote <IP-адрес OpenVPN-сервера>
port 1194
dev tun
proto udp
resolv-retry infinite
nobind
pull
user nobody
group nogroup
persist-key
persist-tun
ca /media/DISK_A1/system/etc/openvpn/ca.crt
cert /media/DISK_A1/system/etc/openvpn/example.crt
key /media/DISK_A1/system/etc/openvpn/example.key
tls-client
tls-auth /media/DISK_A1/system/etc/openvpn/ta.key 1
cipher DES-EDE3-CBC
comp-lzo
mute 10
verb 0
log openvpn.log
Подробности опций и как сгенерировать нужные ключи можно почитать в моей статье о OpenVPN.
Если вы захотите запустить openvpn без init-скрипта, то столнетесь с проблемой с устройством tun:
Wed Jun 10 12:41:09 2015 ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
Эту проблему я быстро решил при помощи этой статьи, для этого надо создать каталог /dev/net и создать там файл устройства:
# mkdir /dev/net
# mknod /dev/net/tun c 10 200
Но после этого произошла новая проблема:
Wed Jun 10 12:41:50 2015 ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such device (errno=19)
Я проверил через lsmod наличие модуля "tun" и не обнаружил его:
# lsmod | grep tun
Значит надо его подгрузить, т.к. modprobe не идет в поставку с нашим Linux, то я воспользовался insmod. Я нашел подходящий модуль и загрузил его:
Теперь все впорядке, lsmod говорит что модуль подгружен.
Запускаем OpenVPN
Для того, чтобы после перезапуска системы у нас запускался демон OpenVPN самостоятельно, надо переименовать его init-скрипт из K11openvpn в S11openvpn:
# cd /media/DISK_A1/system/etc/init.d/
# mv K11openvpn S11openvpn
Добавлять вызов /media/DISK_A1/system/etc/firewall.d/fw.sh никуда не надо, он запустится автоматически.
Я столкнулся с проблемой запуска модуля tun.ko в init-скрипте. Тот что был там указан выдавал следующее:
insmod: cannot insert '/media/DISK_A1/system/lib/modules/2.6.23-rt/tun.ko': invalid module format (-1): Exec format error
в результате я нашел альтернативный и он корретно заработал:
Впринципе всё, перезапустите роутер и должно все заработать как надо!
Обновление с zyxware на entware
Не особо рекомендую обновляться до entware, т.к. при запуске OpenVPN через init-скрипт я получал Segmentation Fault (правда если просто запускать openvpn openvpn.conf, то проблемы не наблюдалось), разбираться с этим мне не хотелось, т.к. для себя особого смысла обновляться я не видел. Главное отличие entware это большее количество пакетов чем в zyxware, так что если хочется, то попробовать всетаки можно. Ниже расскажу как это сделать:
Для этого вынем нашу флешку из роутера и запишем туда архив, который можно взять отсюда. Снова подключите флешку в первый USB-слот. В сети рекомендуют обновлятся через telnet, но я обновлялся по ssh:
После чего перезапустите роутер из веб-панели Zyxel. На вашей флешке, помимо каталога /system появится еще /opt. Все, теперь вы счастливый обладатель entware!
Дополнение: у меня были проблемы с качеством работы wifi, я грешил на многое, в том числе аппартаные проблемы (перегрев, флюс проводящий эл-во и т.д.). В итоге все было проще, в БЦ мешали друг-другу сети, а авто-режим выбирал всегда 1-ый канал. Но с помощью программы wifi-radar я выявил какой канал мне использовать (рекомендую выбирать из "неперекрывающихся" каналов 1/6/11):
sudo apt-get install wifi-radar
А также оставил только 802.11n, выбрал короткую преамбулу и уменьшил мощность сигнала до 12%. После чего исчезли коллизии.
Вы не могли бы мне скинуть tun.ko ?
У меня ошибка
insmod: cannot insert '/media/DISK_A1/system/lib/modules/2.6.23-rt/tun.ko': invalid module format (-1): Exec format error
Помогите разобраться. Кинетик белый, при запуске демона пишет : Starting OpenVPN in daemon mode....failed. Где посмотреть в чем ошибка чего не хватает? Тунель не поднимает, модуль tun загружен.
Комментарии
Дополнение: у меня были проблемы с качеством работы wifi, я грешил на многое, в том числе аппартаные проблемы (перегрев, флюс проводящий эл-во и т.д.). В итоге все было проще, в БЦ мешали друг-другу сети, а авто-режим выбирал всегда 1-ый канал. Но с помощью программы wifi-radar я выявил какой канал мне использовать (рекомендую выбирать из "неперекрывающихся" каналов 1/6/11):
А также оставил только 802.11n, выбрал короткую преамбулу и уменьшил мощность сигнала до 12%. После чего исчезли коллизии.
Ещё полезно почитать http://habrahabr.ru/post/117761/ и http://habrahabr.ru/post/149447/
Вы не могли бы мне скинуть tun.ko ?
У меня ошибка
insmod: cannot insert '/media/DISK_A1/system/lib/modules/2.6.23-rt/tun.ko': invalid module format (-1): Exec format error
Но альтернативных модулей нет!
Помогите разобраться. Кинетик белый, при запуске демона пишет : Starting OpenVPN in daemon mode....failed. Где посмотреть в чем ошибка чего не хватает? Тунель не поднимает, модуль tun загружен.
Оставьте свой комментарий