Сегодня 28 августа 2016
18+
3DNewsМастерскаяРасширяем функциональность ZyXel Keeneti...
Мастерская

Расширяем функциональность ZyXel Keenetic

Напоминаем, что попытки повторить действия автора могут привести к потере гарантии на оборудование и даже к выходу его из строя. Материал приведен исключительно в ознакомительных целях. Если же вы собираетесь воспроизводить действия, описанные ниже, настоятельно советуем внимательно прочитать статью до конца хотя бы один раз. Редакция 3DNews не несет никакой ответственности за любые возможные последствия.

#Вступление

В комментариях к одной из первых статей про альтернативные прошивки читатели спрашивали, нет ли чего-нибудь подобного и для роутеров ZyXel. То ли официальные прошивки ZyXel жуть как хороши, то ли энтузиасты не такие активные, но хоть какой-то более-менее приличной альтернативы фирменным микропрограммам нынче нет. Ну, вы, конечно, можете скачать исходные коды прошивки, изменить её, заново собрать и залить в роутер. Но это как-то уже слишком для обычного пользователя. Тем интереснее выглядит совсем молодой проект наших соотечественников с незамысловатым названием zyxel-keenetic-packages, зародившийся в недрах форума Zyxmon. В данном случае идея гораздо проще и изящнее. Никаких перепрошивок роутера не требуется, а все дополнительные приложения запускаются со съёмного накопителя — флешки или внешнего винчестера. Более того, при отсоединении накопителя устройство продолжает работать как ни в чём не бывало, но, естественно, уже безо всяких «плюшек». Ну а в данной статье мы рассмотрим установку и настройку обновлённого торрент-клиента Transmission, сервера DLNA и доступ к локальной сети из Интернета посредством OpenVPN.

#Подготовка

Для начала нам необходимо отформатировать накопитель в ext 2/3 или NTFS. Лучше, конечно, в ext 2/3, хотя некоторые естествоиспытатели утверждают, что и с NTFS всё прекрасно работает. Программ, которые могут форматировать разделы в нужную нам ФС, довольно много: Partition Magic, продукты Paragon и Acronis, в конце концов, бесплатный GParted Live. Если вам вдруг понадобится срочно считать данные в Windows с такого накопителя, то можно воспользоваться либо файловым менеджером Ext2Read, либо установить драйвер Ext2Fsd. Также в веб-интерфейсе роутера необходимо включить доступ к диску по сети в «USB-приложения» → «Сетевой диск».

Ещё нам понадобится SSH-клиент PuTTY и непосредственно установщик. Распакуем архив в любое удобное место. Теперь зайдём на наш накопитель по сети: Win+R, \\KEENETIC, Enter. В папке disk_a1 потребуется создать директорию system, а в ней ещё одну — bin. Вот туда-то и надо скопировать файл ext_init.sh из архива. Таким образом, полный путь до него будет выглядеть как \\KEENETIC\disk_a1\system\bin\ext_init.sh. Заодно полезно создать в корне папку data, куда будут складываться все файлы. Теперь надо отключить накопитель от роутера и снова подключить. Через пару минут в логах («Система» → «Журнал») должна появиться запись:

dropbear[xxxx] Running in background

Запускаем PuTTY, в поле Host Name вбиваем root@ip_адрес_роутера, а в Windows → Translation выбираем кодировку UTF-8 и нажимаем Open. Вводим пароль — zyxel (он не показывается при наборе) и нажимаем Enter. Завершаем установку и сразу же обновляем систему командами:

finish_install.sh
opkg update
opkg upgrade

#Настройка Transmission

Установка новых приложений осуществляется командой opkg install имя_пакета. На данный момент число портированных приложений не так велико — их список можно посмотреть здесь. В принципе, в вики проекта неплохо описаны основные нюансы их установки. Однако неподготовленному пользователю вряд ли будут понятны определенные моменты относительно их настройки. Так что разберём для ясности некоторые примеры. Для начала рассмотрим установку и настройку более новой версии торрент-клиента Transmission, чем та, которая предустановлена в прошивке роутера, — 2.3 вместо 1.93. Установим клиент и текстовый редактор nano командой:

opkg install nano 
opkg install transmission-daemon transmission-web

Традиционный совет — вместо того чтобы вручную набирать команды, просто скопируйте их отсюда и кликните правой кнопкой в окне PuTTTY. По умолчанию все новые закачки будут записываться в папку transmission, то есть так же, как по умолчанию происходит и со встроенным в роутер торрент-клиентом. Предварительно остановим его, перейдя в веб-интерфейсе роутера в раздел «USB-приложения» → «Торренты», сняв галочку «Включить BitTorrent-клиент» и нажав «Применить». Отредактируем настройки Transmission командой:

nano /media/DISK_A1/system/var/transmission/settings.json

Здесь достаточно изменить по желанию несколько строчек:

«peer-port»: 52400
«rpc-authentication-required»: true
«rpc-password»: «password»
«rpc-port»: 9091
«rpc-username»: «username»

Для включения авторизации с целью доступа к веб-интерфейсу Transmission необходимо изменить значение параметра rpc-authentication-required с false на true. Тогда вместо username и password потребуется указать соответственно логин и пароль. В peer-port и rpc-port надо указать номера портов, которые служат для соединения с другими клиентами и доступа к веб-интерфейсу клиента соответственно. Прочие параметры можно и не менять. Сохраняем файл и выходим — F2, Y, Enter. Для автозапуска Transmission при включении роутера необходимо переименовать один из скриптов:

mv /media/DISK_A1/system/etc/init.d/
K90transmissiond /media/DISK_A1/system/etc/init.d/S90transmissiond

Его же необходимо немного подкорректировать:

nano /media/DISK_A1/system/etc/init.d/S90transmissiond

В самом начале есть две переменные TRN_PORT и TRN_RPC_PORT. Если вы меняли в settings.json peer-port и rpc-port, то их значения нужно соответственно подставить в эти переменные. Также надо будет «раскомментировать» (убрать # в начале строки) ещё шесть команд вида iptables –A (или D) INPUT -p tcp --dport $TRN_PORT (TRN_RPC_PORT) -j ACCEPT. Не забываем сохранить файл и запускаем Transmission. Только учтите, что теперь его панель управления будет на английском языке.

/media/DISK_A1/system/etc/init.d/S90transmissiond start

#Настройка медиасервера DLNA

Более полезный сервис — это minidlna. С его помощью у роутера появляется поддержка протокола DLNA, так что мультимедийные файлы можно смотреть, например, на телевизоре или приставке. Устанавливается и настраивается он гораздо проще, чем Transmission.

opkg install minidlna 
nano /media/DISK_A1/system/etc/minidlna.conf

В файле конфигурации потребуется поменять параметры media_dir, в которых надо указать папки, где хранятся мультимедийные файлы. Можно дополнительно установить фильтр типа файлов — только аудио (A), видео (V) или изображения. Помните, что корневая папка съёмного накопителя доступна как /media/DISK_A1.Вот пример настроек.

media_dir=/media/DISK_A1/transmission/
media_dir=/media/DISK_A1/data/downloads
media_dir=A, /media/DISK_A1/data/Music_and_AudioBooks
media_dir=V, /media/DISK_A1/data/Films_and_Movies
media_dir=P, /media/DISK_A1/data/Photos

Осталось только запустить minidlna-сервер.

/media/DISK_A1/system/etc/init.d/S50minidlna start

Настройка OpenVPN

Скачайте дистрибутив OpenVPN на официальном сайте, выбрав в разделе загрузок Windows Installer. При установке отметьте галочками все компоненты. Как и в прошлый раз, мы будем использовать авторизацию по статическому ключу, то есть нам будет доступно только одно VPN-подключение. Ключ предварительно надо сгенерировать — из главного меню в разделе OpenVPN → Utilities запускаем Generate a static OpenVPN key. Готовый ключ находится в файле C:\Program Files\OpenVPN\config\key.txt. Переименуйте его в static.key и скопируйте на накопитель в папку \disk_a1\system\var. Теперь установим OpenVPN на роутер командой:

opkg install openvpn

Создадим конфигурационный файл:

nano /media/DISK_A1/system/etc/openvpn/openvpn.conf

И вставим в него следующие строки:

port 1194 
proto udp
dev tun
secret /media/DISK_A1/system/var/static.key
ifconfig 10.8.0.1 10.8.0.2
keepalive 10 120
comp-lzo
persist-key
persist-tun

Сохраняем файл (F2,Y, Enter). Затем чуть подправим скрипт запуска:

nano /media/DISK_A1/system/etc/init.d/K11openvpn

В нём надо добавить правила iptables в конце разделов start

iptables –A INPUT -p udp --dport 1194 -j ACCEPT 

и stop:

iptables –D INPUT -p udp --dport 1194 -j ACCEPT 

 

Сохраняем этот скрипт, переименовываем для автоматического запуска и сразу же запускаем.

mv /media/DISK_A1/system/etc/init.d/K11openvpn /media/DISK_A1/system/etc/init.d/S11openvpn 
/media/DISK_A1/system/etc/init.d/S11openvpn start

Теперь создадим группу правил для брандмауэра:

nano /media/DISK_A1/system/etc/firewall.d/fw.sh

В этот файл надо скопировать следующие строки:

#!/bin/sh
iptables -I FORWARD 1 --source 10.8.0.0/24 -j ACCEPT
iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o br0 -j ACCEPT
iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE

После сохранения делаем файл запускаемым и тут же выполняем его:

chmod +x /media/DISK_A1/system/etc/firewall.d/fw.sh
/media/DISK_A1/system/etc/firewall.d/fw.sh

Естественно, нам нужно прописать DDNS-имя на нашем роутере. Подробнее о регистрации на примере DynDNS написано здесь в разделе «Настройка DDNS ». Через веб-интерфейс роутера переходим в раздел «Интернет» → «Доменное имя», включаем галочку «Использовать динамическую DNS», заполняем соответствующие поля и жмём «Применить». Кстати, после включения DDNS вам будет доступен также веб-интерфейс Transmission (http://ddns_имя_роутера:rpc-port), а если поставите галочку «Разрешить удаленный доступ» и укажете «TCP-порт веб-конфигуратора», то и веб-интерфейс роутера. Аналогичным образом можно открыть доступ к файлам на накопителе по FTP — ставим галочку «Разрешить доступ из Интернета» в разделе «USB-приложения» → «Сервер FTP».

На клиенте (например, на офисном компьютере или на ноутбуке) также надо установить OpenVPN, а заодно скопировать наш ключ static.key, который мы сгенерировали ранее, в папку C:\Program Files\OpenVPN\easy-rsa\keys\ (ну, или куда вам удобно, только в клиентских настройках надо будет поменять путь до него). Теперь в папке C:\Program Files\OpenVPN\config\ нужно создать новый текстовый файл, вставить в него нижеследующие строки и переименовать его, например, в router.ovpn. Обратите внимание, что в пути до файла secret.key нужно использовать именно двойные слеши (\\), а не одинарные (\).

remote ddns_имя_роутера
dev tun
ifconfig 10.8.0.2 10.8.0.1
secret "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\static.key"
comp-lzo
keepalive 10120
ping-timer-rem
persist-tun
persist-key
route 192.168.1.0 255.255.255.0

При двойном клике по файлу ovpn будет подниматься туннель до роутера. Можно запустить OpenVPN GUI и из главного меню — в области уведомлений появится иконка, двойной клик по которой также поднимет туннель. При этом цвет иконки сменится с красного на зелёный. Ещё один двойной клик по иконке покажет окно с логом. Для отключения от VPN нажмите кнопку Disconnect. После подключения вам будет доступна ваша домашняя сеть и можно, к примеру, настроить удалённый рабочий стол (см. раздел «Настройка TightVNC» здесь). Также необходимо проследить, чтобы адресация на удалённой машине, в домашней сети и внутри VPN-туннеля была разной. В нашем примере мы использовали подсеть 10.8.0.0 для туннеля, а в домашней сети — 192.168.1.0. При необходимости подкорректируйте адреса во всех скриптах и файлах конфигурации в этом разделе.

Заключение

На данный момент это, пожалуй, все приложения, о которых есть смысл рассказывать. Конечно, в репозитории есть и другие пакеты, но вряд ли домашнему пользователю захочется поднимать свой веб-сервер на роутер, становить на него Drupal или, например, заморачиваться с другими DDNS-сервисами либо монтировать по сети ещё один накопитель. Впрочем, если и захочется, то настройка не так уж сложна. В конце концов, не забанили же вас в Google или «Яндексе». Для молодого проекта столь небольшое число пакетов — явление нормальное. К тому же их список постепенно пополняется, однако, по признанию самого автора zyxel-keenetic-packages, времени у него не так много. Так что энтузиасты, готовые собирать новые пакеты и развивать проект, явно не помешают. Напоследок ещё раз рекомендуем ознакомиться с вики и форумом, ссылки на которые были приведены в начале статьи. Засим позвольте откланяться и традиционно пожелать удачных экспериментов.

P.S.: ZyXel, между прочим, обещает в скором времени выпустить совершенно новую официальную прошивку, в которой, по слухам, будет много чего вкусного.

 
 
Если вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
Материалы по теме
⇣ Комментарии