Записки программиста
Ставим прошивку OpenWrt на роутер TP-Link TL-WDR3600
OpenWrt (Open Wireless RouTer) — это основанная на Linux открытая прошивка для беспроводных роутеров. В этой заметке будет рассмотрена установка OpenWrt на роутер TP-Link TL-WDR3600, также известный, как TP-Link N600. Роутер этот не новый, но довольно неплохой. К тому же, он числится среди рекомендуемых устройств для установки OpenWrt. Ставить OpenWrt на роутер интересно как минимум из соображений безопасности (в официальных прошивках часто много багов, не говоря уже о бэкдорах). Плюс к этому OpenWrt фактически превращает ваш роутер в маленький VDS, на котором можно выполнять какие-то задачи по cron’у, запустить rtorrent в screen, поднять Nginx, IRC-баунсер, и так далее.
Важно! Поисковые системы часто выдают в результатах поиска ссылки на сайт wiki.openwrt.org. Стоит иметь в виду, что на момент написания этих строк wiki.openwrt.org заморожен и может содержать устаревшие сведения. Актуальную информацию следует искать на openwrt.org.
Установка и настройка OpenWrt
Найти TP-Link TL-WDR3600 в магазине сейчас непросто, зато не составляет труда купить с рук. Так выглядит устройство, купленное мной на Avito за 1000 рублей (около 18$):
Fun fact! TP-Link TL-WDR3600, как и многие другие роутеры, основанные на SoC производства Atheros, работают на архитектуре MIPS. Здесь используется SoC AR9344, работающий на частоте 533 МГц. Характерно, что процессор является big endian, что в наши дни встречается не часто.
Прошивку качаем отсюда (если вы читаете заметку в далеком будущем, проверьте, нет ли в каталоге /releases/ более новых версий прошивки):
Fun fact! Эта конкретная версия прошивки на самом деле была сделана в рамках проекта LEDE (Linux Embedded Development Environment). LEDE — это форк OpenWrt, помимо прочего, предоставляющий более свежие и при этом стабильные версии прошивок. Для сравнения, последняя стабильная версия прошивки для TL-WDR3600 от OpenWrt версии 15.05.1 была выпущена два года назад, 16 марта 2016 года. Но прямо сейчас LEDE и OpenWrt снова сливаются в один проект. Этим объясняется lede- в имени прошивки, наличие у проекта OpenWrt двух форумов, и прочие странности, хотя по факту это уже один проект.
Сзади роутера зажимаем кнопку Reset, чтобы сбросить его к заводским настройкам. Затем подключаем к нему ноутбук по витой паре, заходим в веб-админку на 192.168.0.1, авторизуемся под именем admin с паролем admin. В админке находим раздел для обновления прошивки. У меня оказалась локализованная версия роутера, поэтому раздел назывался Системные инструменты → Обновление встроенного ПО. Загружаем через форму .bin файл с прошивкой OpenWrt.
После обновления новая админка будет доступа по адресу 192.168.1.1, авторизуемся под именем root с паролем root. Сразу меняем пароль в System → Administration. Там же можно сказать, на каких интерфейсах должен крутиться SSH и добавить свой id_rsa.pub. Добавление его с помощью команды ssh-copy-id почему-то не работает.
Для входа по SSH также используем имя пользователя root:
Что еще стоит настроить в веб-админке? Беспроводная сеть по умолчанию выключена. Включить ее можно в Network → WiFi. Убедитесь, что вы используете WPA2-PSK с сильным паролем. Кстати, если вы пропустили заметку Как ломают WPA/WPA2 сети с помощью aircrack-ng, ознакомиться с ней не повредит.
Вообще, должен сказать, что у OpenWrt довольно приятный веб-интерфейс. Останавливаться на нем подробно мы не будем, но вот пара скриншотов. Список сетевых интерфейсов:
Состояние беспроводной связи:
Графики, обновляемые в реальном времени, отображают объемы входящего и исходящего трафика:
Ну вот, остается только подключиться к роутеру по WiFi, воткнуть витую пару в порт Internet, и можно считать, что на этом первоначальная настройка роутера выполнена!
Управление пакетами
Управление пакетами в OpenWrt осуществляется при помощи утилиты opkg . Рассмотрим несколько примеров ее использования.
Обновляем список доступных пакетов:
Смотрим список установленных пакетов:
Список всех доступных пакетов:
Для каких пакетов есть обновления:
Установка новых пакетов (не перестарайтесь, место на роутере не резиновое!):
Подробности ищите на странице Opkg Package Manager официального сайта.
Монтирование внешних USB-носителей
Роутер имеет крайне мало дискового пространства, в связи с чем может возникнуть желание использовать внешний носитель. У меня под рукой оказалась флешка Kingston HyperX Predator на 512 Гб, вот такая:
… и я решил попробовать подключить ее.
По умолчанию OpenWrt идет без поддержки USB или каких-либо «нормальных» файловых систем, вроде FAT или Ext4. Поэтому нам понадобится установить недостающие модули ядра. При подключении данной конкретной флешки к моему ноутбуку в dmesg появляется:
usb-storage 4-3:1.0: USB Mass Storage device detected
scsi host6: usb-storage 4-3:1.0
scsi 6:0:0:0: Direct-Access Kingston DTHX Predator PMAP PQ: 0.
sd 6:0:0:0: [sdb] 988282880 512-byte logical blocks: (506 GB/471 GiB)
sd 6:0:0:0: [sdb] Write Protect is off
sd 6:0:0:0: [sdb] Mode Sense: 45 00 00 00
sd 6:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn’.
sdb: sdb1
sd 6:0:0:0: [sdb] Attached SCSI removable disk
… что как бы намекает нам, что устройство работает через слой SCSI, поддержки которого в OpenWrt из коробки, конечно же, тоже нет.
В общем, после нескольких не вполне удачных экспериментов, я выяснил, что полный список необходимых пакетов выглядит как-то так:
opkg install kmod-scsi-core kmod-scsi-generic \
kmod-usb-core kmod-usb-ohci kmod-usb-uhci kmod-usb2 kmod-usb3 \
kmod-fs-msdos kmod-fs-vfat kmod-fs-ext4 usbutils \
kmod-usb-storage kmod-usb-storage-extras block-mount
То, что все работает, как надо, можно понять по появившемуся устройству /dev/sda, и тому факту, что команда:
Следует однако иметь в виду, что в зависимости от устройства, которое вы решите использовать, все может оказаться и не так просто. Если у вас возникнут проблемы с монтированием внешних устройств, рекомендую обратиться к разделу Storage Devices официальной документации.
Заключение
Как видите, все оказалось довольно не сложно. В рамках одного поста, впрочем, нельзя рассмотреть абсолютно все, что можно сделать с OpenWrt. Например, можно управлять фаерволом при помощи утилиты iptables, настроить на роутере VPN, поднять HTTP-сервер, и так далее. Дополнительную информацию по этим и другим вопросам, как уже отмечалось, вы найдете на сайте openwrt.org.
Дополнение: Если вы ищите недорогой роутер с предустановленным OpenWrt, тут можно порекомендовать TP-LINK TL-WR703N. Также заслуживают внимания роутеры производства GL.iNet, например, GL-AR750.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.
Пошаговая прошивка OpenWRT на роутер TP-LINK TL-WR741ND из Windows
Роутеры лишаются своих родных прошивок по разным причинам. Желание добавить функционал, припаять USB порт или просто добавить стабильности в работу роутера.
В моём случае роутер на последней стабильной родной прошивке при 1-5 WiFi и 1-2 Ethernet потребителях подвисал 1-2 раза в неделю. Это не очень страшно, но и перезагружать его надоело. Хотелось стабильности. После долгих поисков и чтения отзывов выбор пал на OpenWRT. В статье уже представлена пошаговая инструкция без проб и ошибок, которые мне пришлось пройти.
Шаг 0
Надеюсь взявшись за прошивку роутера вы понимаете, что на одном из шагов вы можете лишиться доступа в интернет. Так, что настоятельно советую полностью прочитать статью, заранее скачать все нужные файлы и уже после этого приступить к прошивке.
Шаг 1
- Переверните роутер и уточните версию железок в нём ориентируясь по наклейке на корпусе.
- Скачайте архив с последней прошивкой.
- Прошейте роутер прошивкой из архива обычным способом (System Tools -> Firmware Upgrade).
Шаг 2
Далее необходимо выбрать версию прошивки OpenWRT.
Следует использовать именно тот файл, который согласуется с версией железа вашей модели. Не пренебрегайте этим правилом! Возможны два варианта файловой системы для загрузки: JFFS2 и SquashFS. Судя по отзывам стоит остановить свой выбор на SquashFS-файлах. Слово factory в названии файла значит, что такой файл вы должны заливать на ваше устройство поверх заводской (родной) прошивки. файл со словом sysupgrade применим только для обновления OpenWRT, т.е. заливается после factory прошивки.
Качаем factory прошивку и шьём обычным способом (System Tools -> Firmware Upgrade).
Шаг 3 или всё пропало
После успешной прошивки мы получаем рабочий роутер с выключеным web-интерфейсом. Поэтому зайти в настройки через браузер уже не получиться. Дальнейшие действия таковы:
Открываем PuTTY, выбираем Telnet протокол, адрес 192.168.1.1 порт 23, жмём «Соединение».
Входим на роутер. Изначально вы под пользователем root без пароля.
Набираем команду:
Открываем WinSCP, выбираем SCP протокол, адрес 192.168.1.1 порт 22, User name: root, Password тот который задали раннее, жмём «Login».
На все смутные вопросы отвечаем да и видим окошко с файлами на вашем компьютере и на роутере. Далее берем вторую часть прошивки (та которая sysupgrade), переименовываем её в code.bin и забрасываем её на роутер в папку /tmp. Закрываем программу.
Открываем PuTTY, выбираем SSH протокол, адрес root@192.168.1.1 порт 22, жмём «Соединение». Набираем пароль который задали раннее для root. Входим в роутер и набираем команду для его прошивки:
Ждём пока роутер прошьётся и перезагрузится. Ориентируемся по лампочкам. Далее повторяем шаг:
Открываем PuTTY, выбираем Telnet протокол, адрес 192.168.1.1 порт 23, жмём «Соединение».
Входим на роутер. Изначально вы под пользователем root без пароля.
Набираем команду:
И два раза пишем новый пароль для пользователя root.
/etc/init.d/uhttpd enable /etc/init.d/uhttpd start
Эти две команды включают и ставят в автозагрузку web-интерфейс роутера.
Выключаем роутер, включаем роутер.
По адресу 192.168.1.1 вам доступен web-интерфейс LuCI. Заходим под пользователем root и паролем, который задали раннее для root.
UPD. После долгой эксплуатации замечен единственный глюк. При изменении MAC адреса на WAN порте, он через 1-2 дня сбрасывается на заводской. В остальном роутер проявляет чудеса стабильности.