Записки программиста
Ставим прошивку 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-группе.