Оригинал материала: https://3dnews.ru/610894

Прошивка TomatoUSB для роутера ASUS RT-N16. Часть 1

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

В прошлый раз мы в общих чертах познакомились с альтернативными прошивками для роутеров. Теперь пора перейти к практическим действиям и сделать что-нибудь полезное. Например, превратить роутер в домашний NAS и torrent-клиент с возможностью удалённо добавлять закачки, сделать локальный принтер сетевым, настроить удалённый доступ к собственному файловому хранилищу и так далее. Мы рассмотрим прошивку TomatoUSB для роутера ASUS RT-N16. На этой страничке есть список поддерживаемых устройств с указанием типов прошивок. Настройка TomatoUSB для других моделей роутеров в общих чертах совпадает с приведённой ниже, но в связи с разными возможностями «железа» некоторые моменты будут отличаться.

#Подготовка

Нужный нам архив с trx-образом можно скачать здесь, в разделе Kernel 2.6 (experimental) for MIPSR2 Routers надо выбрать ссылку VPN. Для начала крайне желательно сбросить настройки роутера. Это можно сделать либо через стандартный веб-интерфейс, либо зажать кнопку WPS (около гнезда питания) и подождать, пока индикатор питания не начнёт часто мигать. После этого можно приступать к перепрошивке. TomatoUSB устанавливается через утилиту восстановления прошивки, которую можно скачать на официальном сайте ASUS. Там надо будет перейти на вкладку «Скачать», в списке ОС выбрать нужную версию Windows и в разделе утилиты загрузить последнюю стабильную версию (на момент написания статьи ASUS RT-N16 utilities 4.1.3.5). Остальная процедура заливки альтернативной прошивки не отличается от той, что была описана ранее (см. раздел «Подготовка»). После заливки TomatoUSB надо подождать примерно пять минут, а затем отключить и снова включить питание роутера. Ах да, не забудьте в настройках сетевой карты вернуть автоматическое получение IP-адреса и DNS-серверов.

#Базовая настройка

Открываем браузер, вбиваем в адресную строку 192.168.1.1, вводим логин-пароль (по умолчанию в обоих случаях это admin) и оказываемся в веб-интерфейсе Tomato. В разделе Basic → Network настраиваются основные сетевые параметры — подключение к Интернету, адресация в локальной сети, DHCP и Wi-Fi. Подробно останавливаться на этом нет смысла — всё настраивается по аналогии с любым современным роутером (впрочем, как и везде в Tomato). Не забудьте только включить шифрование для Wi-Fi (Security — WPA2 Personal, Encryption — TKIP/AES, Shared key — пароль). Здесь же, кстати, есть очень полезная функция. Если выбрать определённый канал Wi-Fi (Channel) и нажать справа кнопку Scan, то роутер просканирует эфир и определит, нет ли поблизости какой-нибудь точки доступа на том же канале и с сильным сигналом. Если есть, то лучше выбрать другой канал, чтобы избежать ухудшения приёма, или вообще переключиться в режим автовыбора (Auto). Заодно в Basic → Time настраиваем синхронизацию с NTP-сервером, выбрав часовой пояс и регион.

Теперь переходим в раздел Port Forwarding → UPnP / NAT-PMP и ставим галочки напротив Enable UPnP и Enable NAT-PMP. Остальные настройки для проброса портов в этом разделе стандартны. Перейдём к разделу Advanced. В Firewall включаем мультикаст (Allow multicast), а в Routing ставим галочку напротив Efficient Multicast Forwarding. Это позволит нам нормально смотреть IPTV. Также в этом разделе можно прописать статические маршруты, если таковые требуются для вашего провайдера. В Wireless настраиваются расширенные параметры беспроводного модуля. Здесь можно самостоятельно поэкспериментировать с параметрами, а можно ограничиться настройками по умолчанию, только выбрав нужный регион в списке Country / Region. В Miscellaneous ставим галочку напротив Enable Jumbo Frames. В Conntrack / Netfilter проставляем все галочки в Tracking / NAT Helpers (FTP, SIP, RTCP и прочие). В MAC Address можно задать MAC-адрес WAN-порта (оставить текущий, сгенерировать случайный или скопировать тот, что у текущего подключенного ПО) на тот случай, если провайдер делает его проверку.

Наконец, переходим в Administration → Admin Access и в самом низу меняем пароль для доступа к роутеру (Password). На этом базовая настройка TomatoUSB закончена. Не забывайте после изменения каждого параметра нажимать кнопку Save внизу страницы для сохранения и применения настроек. Лучше сразу определиться, будет ли нужен удалённый доступ к роутеру извне. Например, для обмена файлами, функции Wake-on-LAN, добавления закачки в torrent-клиент, просмотра статистики и так далее. Если ответ положительный, то в этом же разделе в Local Access выбираем HTTP&HTTPS, ставим галочку Save In NVRAM, а в Remote Access выбираем HTTPS.

Если torrent-клиент и прочие функции не нужны, то можно сразу перейти к настройке NAS. В противном случае надо настроить доступ по SSH. В SSH Daemon включаем пункты Enable at Startup, Remote Forwarding, Allow Password Login и жмём кнопку Start now. В Telnet Daemon снимаем галочку Enable at Startup и жмём Stop now. Наконец, в Limit Connection Attempts включаем SSH.

Скачиваем утилиту PuTTY, запускаем её и в Hostname вбиваем root@192.168.1.1. Слева в Window → Translation выбираем в списке UTF-8 и возвращаемся в раздел Session. В поле Saved sessions вводим любое понравившееся имя соединения (например, router) и нажимаем Save. Закрываем PuTTY, так как нам пока от него ничего не нужно.

#Настройка NAS

Очевидно, что интересует нас здесь раздел USB and NAS. В USB Support расставляем галочки так, как на скриншоте ниже. Если вам не нужна поддержка дополнительных файловых систем, то можно снять соответствующие галочки. Например, у вас есть только один внешний жёсткий диск и отформатирован он в NTFS. Поддержку USB 1.1 имеет смысл включать только тогда, когда какое-нибудь из устройств не определяется роутером. Чаще всего от этого «страдают» принтеры.

Теперь можно подключить накопитель и принтер. В роутерах, где есть только один USB-порт, можно, как правило, воспользоваться простейшим USB-хабом. Устройства должны автоматически определиться. Накопитель же сам монтируется в папку /mnt/имя_тома. Запомните точку монтирования. Имя раздела показывается в списке подключенных устройств (см. скриншот) — Partition 'имя_тома'. В нашем случае это будет sda1. Здесь и далее в качестве примера будет использоваться именно это значение. В вашем случае метка будет, скорее всего, другой. Обратите внимание на ещё один очень важный момент — любое указание пути регистрозависимо. Если у нас есть, к примеру, папка на накопителе с именем «Primer», то путь до неё с точки зрения роутера будет таким /mnt/sda1/Primer.

Вариантов доступа к файлам по сети два: FTP и CIFS (NetBIOS). Можно воспользоваться одним из них либо включить сразу оба. Для FTP есть возможность получать доступ извне. Для этого перейдём в раздел FTP Server и в списке Enable FTP Server выберем Yes, WAN and LAN. Если же доступ будет разрешён только из локальной сети, то выбираем Yes, LAN Only. В Public Root Directory указываем /mnt/sda1, то есть при подключении по FTP будет доступно всё содержимое накопителя. Можно создать систему папок для разного уровня доступа. Например, включить анонимный доступ к FTP-серверу, выбрав в списке Anonymous Users Access нужные права на чтение (Read) и запись (Write), и отвести для таких пользователей отдельную папку. Пусть она будет называться pub, тогда в Anonymous Root Directory надо будет ввести /mnt/sda1/pub. При такой настройке не придётся вводить логин и пароль, но при этом доступно будет только содержание папки pub. Не рекомендуется включать анонимный доступ к FTP, если вы разрешили доступ к роутеру из внешней сети (WAN).

Чуть ниже находятся настройки максимального количества одновременных подключений к FTP-серверу в целом и с одного IP-адреса, а также ограничения скорости для анонимных и авторизованных пользователей. Рекомендуется поставить галочку Limit Connection Attempts. В User Accounts прописываются логины и пароли для доступа к серверу, а также права на чтение и запись. После ввода оных нажмите кнопку Add.

Второй вариант доступа — через NetBIOS. Он настраивается в разделе File Sharing. Выбираем в списке Enable File Sharing нужный вариант. Либо без пароля (Yes, no Authentication), либо с вводом логина и пароля (Yes, Authentication required), которые придётся ввести в появившихся полях User Name и Password. Имя рабочей группы задаётся в поле Workgroup Name, а в списке Client Codepage надо будет выбрать 866 (Cyrillic / Russian). Опцию Auto-share all USB Partitions лучше перевести в режим Disabled, а напротив Master Browser и WINS Server поставить галочки (зависит от конфигурации вашей локальной сети, например наличия домена). Дефолтную папку root$ из Network Shares List лучше удалить, нажав на маленький красный крестик справа. Теперь добавим сетевую папку. В поле Share Name указывается её имя, а в Directory путь до неё (по аналогии с настройкой FTP). Access Level указывает уровень доступа. После внесения параметров нажмите Add.

Последняя опция, Media Server, предоставляет доступ по DLNA к медиафайлам на накопителе устройствам, которые поддерживают этот протокол (XBOX, PS3 и так далее). Включаем медиасервер (галочка Enable), в Database Location выбираем Custom Path, а в поле справа вбиваем /mnt/sda1/dlna. Ставим галочки Scan Media at Startup и Rescan on the next run. Включенная опция Strictly adhere to DLNA standards означает, что медиасервер будет строго придерживаться стандартов DLNA — это требуется для корректной работы некоторых устройств. В Media Directories добавляются пути папок, где содержатся медиафайлы. Параметр Content Filter позволяет задать тип содержащихся в папке файлов: видео, изображения или аудио.

#Настройка сетевого принтера

Следует сразу оговориться, что далеко не все модели принтеров могут нормально работать по сети. Для начала убедитесь, что принтер подключен к USB-порту роутера и включен. В качестве примера мы рассмотрим настройку под Windows 7, но для предыдущих версий данной ОС (вплоть до 2000) процесс аналогичен. В панели управления заходим в раздел «Устройства и принтеры», нажимаем «Добавить принтер». В открывшемся окне выбираем «Установить локальный принтер» и жмём «Далее».

Затем выбираем «Создать новый порт», в списке указываем «Стандартный порт TCP/IP» и снова нажимаем «Далее».

Здесь нам в первом поле предлагается вбить IP-адрес принтера, а в данном случае роутера (192.168.1.1). Во втором поле надо ввести имя принтера (любое) и нажать «Далее».

Windows безуспешно попытается наладить связь с принтером, что займёт несколько минут.

В разделе «Тип устройства» надо выбрать «Особое » и нажать кнопку «Настройка».

В разделе «Протокол» выбираем Raw, а в «Номер порта» указываем 9100 и жмём ОК, а затем «Далее».

Наконец, появляется стандартный диалог установки драйвера принтера. Если нужная модель находится в списке, то выбираем её. В противном случае жмём «Установить с диска…» и указываем путь до драйвера. Ну и как обычно, нажимаем «Далее» и «Готово».

Настройка DDNS

С помощью динамического DNS можно будет обращаться к роутеру извне, то есть не только из локальной сети. Это работает лишь тогда, когда провайдер при подключении выдаёт динамический внешний IP, а не «прячет» вас за всевозможными NAT и прокси. Воспользуемся возможностями сервиса DynDNS. Бесплатно можно создать два DDNS-домена. Зарегистрируйтесь в сервисе, если у вас всё ещё нет аккаунта, и зайдите в него. Здесь надо кликнуть по Add Host Services.

В поле Hostname вбиваем любое подходящее доменное имя (для примера пусть будет tomatorouter), а в списке справа выбираем любой домен (например, dyndns-ip.com). В Service Type указываем Host with IP Address и кликаем чуть ниже по ссылке Your current location’s IP Address is xx.xx.xx.xx. Внизу странички будет кнопка Add To Cart. Жмём на неё. На следующем этапе выбираем Proceed to checkout и Activate Services.

В веб-интерфейсе роутера переходим к Basic → DDNS и в списке IP address выбираем либо Use WAN IP Address, либо Use External IP Address Checker (every 10 minutes). Полю Auto refresh every присваиваем значение 1 (вместо 28 по умолчанию). В Dynamic DNS 1 из списка Service выбираем DynDNS — Dynamic. В полях Username и Password указываем имя и пароль, которые использовались при регистрации в DynDNS, а в Hostname указываем имя только что созданного DDNS-домена (в нашем примере это будет tomatorouter.dyndns-ip.com). Наконец, ставим галочки Save state when IP changes (nvram commit) и Force next update, а затем нажимаем на кнопку Save.

Теперь роутер будет всегда доступен извне по DDNS-имени. Если вы включили доступность через WAN для веб-интерфейса роутера, то зайти на него можно будет по адресу https://ddns_имя:8080/ (в нашем примере это будет https://tomatorouter.dyndns-ip.com:8080/). Браузер, скорее всего, ругнётся на некорректный сертификат, но это сообщение нужно проигнорировать. Аналогичным образом производится доступ к FTP-серверу — ftp://ddns_имя:21/ (например, ftp://tomatorouter.dyndns-ip.com:21/).

#Настройка Optware

Мы подошли к самой интересной и ответственной части — установке системы Optware. С её помощью можно легко расширить возможности роутера (и многих других устройств) за счёт установки множества программ. В первую очередь необходимо включить поддержку файловой системы JFFS2. Для этого переходим в Administration → JFFS, ставим галочку напротив Enable и жмём Save. Затем нажимаем Format / Erase... и ждём завершения операции. После этого в поле Execute When Mounted вводим

mount -o bind /jffs/opt /opt

и ещё раз нажимаем Save. В ASUS RT-N16 есть 32 Мбайт Flash-памяти. Этого объёма должно хватить для наших нужд. Для дальнейшей настройки нам нужно подключиться по SSH к роутеру. Запускаем PuTTY, дважды кликаем по заранее созданному соединению (см. выше) и в открывшейся консоли вводим пароль, который совпадает с паролем для веб-интерфейса. Здесь нам нужно последовательно ввести следующие команды (или копировать каждую строку в буфер обмена, а затем просто кликать правой кнопкой в окне PuTTY и нажимать Enter):

mkdir /jffs/opt 

mount -o bind /jffs/opt /opt

wget http://3iii.dk/linux/optware/optware-install-ddwrt.sh -O /tmp/optware-install.sh

sh /tmp/optware-install.sh

ipkg-opt update

ipkg-opt install nano

Тут выяснилась одна неприятная особенность — wget в данной сборке прошивки оказался на редкость падучим (аж до Segmentation fault). Чем конкретно ему не нравились те или иные URL, не совсем понятно. В частности, проблема проявилась при скачивании скрипта optware-install-ddwrt.sh. Если не будет работать URL, который приведён выше, то в Google можно поискать альтернативные ссылки на этот файл. Благо «валяется» он много где. В качестве «шаманства» попробуйте убрать www. в ссылке.

Установка пакетов делается следующей командой (чуть выше мы установили текстовый редактор nano)

ipkg-opt install имя_пакета

Удаление производится командой

ipkg-opt remove имя_пакета

Для поиска строки в имени и описании пакета нужно ввести

ipkg-opt list | grep поисковый_запрос

Таким образом можно легко найти интересующие нас пакеты по ключевому слову или убедиться в доступности для установки нужного пакета. Не забывайте также периодически, например раз в месяц, обновлять установленные программы.

ipkg-opt update 

ipkg-opt upgrade

Настройка torrent-клиента Transmission

Transmission — это относительно легковесный клиент для BitTorrent-сетей. Его прелесть в том, что он довольно легко устанавливается и настраивается, а также имеет встроенный веб-интерфейс для управления закачками. Проделаем простую процедуру установки:

ipkg-opt install transmission

Затем надо произвести первый запуск для формирования структуры каталога с конфигурационными файлами…

/jffs/opt/bin/transmission-daemon -g /mnt/sda1/Torrents/.config/transmission-daemon

… и тут же завершить его:

killall transmission-daemon

В данном случае /mnt/sda1/Torrents — это папка, куда будут в последующем закачиваться файлы. В ней же в скрытой директории будут лежать и конфиги. Отредактируем их командой

nano /mnt/sda1/Torrents/.config/transmission-daemon/settings.json

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

"download-dir": "/mnt/sda1/Torrents",
"peer-port": 51000,
"rpc-enabled": true,
"rpc-password": "password",
"rpc-port": 9091,
"rpc-username": "username",
"rpc-whitelist": "*",
"rpc-whitelist-enabled": true,

Разберём изменяемые параметры: download-dir — это папка, куда будут закачиваться файлы, peer-port — это порт, к которому будут подсоединяться сиды, rpc-password и rpc-username — это пароль и логин для доступа к управлению Transmission соответственно. Пароль после очередного запуска зашифруется. Далее: rpc-port — это порт, через который осуществляется управление клиентом, rpc-whitelist-enabled — включение (true) или отключение (false) списка разрешённых IP-адресов из rpc-whitelist, с которых можно управлятьTransmission. Если вы планируете удалённо добавлять закачки, то можно указать в rpc-whitelist значение * или присвоить rpc-whitelist-enabled значение false вместо true. В противном случае можно задать диапазон разрешённых IP-адресов в виде «192.168.1.*» или просто перечислить их: «127.0.0.1, 192.168.1.*,172.30.4.1». После внесения всех изменений нажимаем F2, затем Y и Enter. Теперь снова можно запустить Transmission знакомой командой

/jffs/opt/bin/transmission-daemon -g /mnt/sda1/Torrents/.config/transmission-daemon

Откроем в браузере адрес http://192.168.1.1:9091/. Введём логин и пароль, которые были указаны в rpc-username и rpc-password и окажемся в веб-интерфейсе Transmission.

Однако гораздо удобнее управляться с закачками с помощью стороннего клиента для Transmission. Их очень много, в том числе и для мобильных ОС. Один из наиболее понятных называется Transmission Remote GUI. Есть версии под Windows, Mac OS X и Linux. Скачайте его, запустите установщик и поставьте галочки как на скриншоте ниже. Первая опция ассоциирует torrent-файлы с этим клиентом, а вторая перехватывает magnet-ссылки. Таким образом любые закачки из BitTorrent будут добавляться в Transmission.

При первом запуске программа попросит ввести параметры соединения. В поле «Узел» надо будет указать IP-адрес роутера, в поле «Порт» вбить 9091, а в «Пользователь» и «Пароль» ввести те же данные, которые используются при авторизации в веб-интерфейсе Transmission.

Всё, теперь можно пользоваться Transmission Remote GUI. Интерфейс программы очень похож на популярный torrent-клиент uTorrent.

Нелишним будет пробросить порт. В Port Forwarding → Basic добавим новое правило. Proto выставляем в Both, в Ext Ports и Int Ports указываем 51000 (порт, что был в peer-port), а в Int Address — 192.168.1.1 (IP-адрес роутера). Поле Description заполняем на своё усмотрение и нажимаем Add, а затем Save.

Теперь нам надо сделать так, чтобы Transmission автоматически запускался при подключении накопителя к роутеру и автоматически же выключался при отключении. Только учтите, что все закачки в таком случае будут поставлены на паузу. Направляемся в USB and NAS → USB Support и в поле Run after mounting вставляем следующие строки:

killall transmission-daemon 

/jffs/opt/bin/transmission-daemon -g /mnt/sda1/Torrents/.config/transmission-daemon

А в поле Run before unmounting всего одну строку:

killall transmission-daemon

Наконец, последний штрих. Если будет надобность в удалённом добавлении закачек в Transmission (например, чтобы к приходу с работы уже скачался новый фильм), то в Administration → Scripts на вкладке WAN Up надо будет ввести нижеследующую строку и нажать Save. Доступ к веб-интерфейсу из внешней сети можно будет осуществить по адресу http://ddns_имя:9091/ (например, http://tomatorouter.dyndns-ip.com:9091/)

iptables -I INPUT -p tcp --dport 9091 -j ACCEPT

Теперь для проверки можно перезагрузить роутер (пункт Reboot…). Если всё было настроено правильно, то через минуту-другую после перезапуска заработает веб-интерфейс Transmission или любой другой клиент.

#Заключение

Итак, мы рассмотрели установку прошивки TomatoUSB на роутер ASUS RT-N16, а также настроили NAS с доступом по FTP и NetBIOS и установили torrent-клиент Transmission. Если все инструкции были выполнены аккуратно, то у вас всё должно заработать. В принципе, на этом можно было бы остановиться, так как перечисленных возможностей роутера должно хватить большинству пользователей. Во второй части этого материала будет рассмотрена установка и настройка некоторых других дополнительных опций.

Продолжение следует...



Оригинал материала: https://3dnews.ru/610894