OpenWRT. Прошивка маршрутизатора

Если однажды вы пожелаете настроить домашнюю сеть (основа которой — обычный бюджетный радиомаршутизатор) немного нестандартно, например, заставить качать торренты, установить VPN или тонко настроить фаервол, то, скорее всего, со стандартной прошивкой у вас этого не выйдет. Это вовсе не значит, что прошивка производителя плохая — она стабильна и инструментов в ней достаточно для «обычных пользователей», но функционал её ограничен жесткими рамками, за который порой нужно выйти.

Если для реализации ваших идей, средств стандартной прошивки недостаточно, или вы просто хотите иметь полный контроль над системой, то вам наверняка понравится главный герой данной статьи — OpenWRT, ОС на ядре Linux для домашних маршрутизаторов. Проще говоря — это полноценный Linux для роутеров весом менее 4МБ, с пакетным менеджером и возможностью настроить всё и вся. В данной статье мы вкратце рассмотрим, что же OpenWRT собой представляет, что с ней можно сделать, а также со всеми подробностями прошьем ею один из самых популярных Wi-Fi роутеров в бюджетном сегменте — TP-Link TL-WR741ND.

Первая версия OpenWRT появилась в 2004 году и основывалась тогда на исходниках прошивки Linksys WRT54G. Главной идеей был OpenSource и высокая расширяемость, а за основу была взята урезанная версия Linux-ядра. Уже вскоре команда разработчиков начала расширяться, проект получил развитие, и сегодня прошивку OpenWRT можно найти под большинство известных платформ (в списке поддерживаемых есть также x86). Версии для новых моделей маршрутизаторов появляются довольно быстро (сперва тестовые trunk, а затем и стабильные), так что следите за обновлениями, если не найдете свой роутер в списке.

TL-WR741ND — самый обыкновенный радиомаршрутизатор в низкой ценовой категории ($20-25). Под корпусом у него лишь всё самое необходимое — 4 LAN-порта 10/100 Мбит/с, передатчик частотой 2.4GHZ с неплохой, для своей цены, мощностью в 27dBm (500mW, что даже излишне — перегревается, так что рекомендуется либо понизить мощность, либо установить радиатор), и одна внешняя антенна мощностью 5dBi. В ранних версиях (v1,2,3) был установлен чип Atheros AR7240 частотой 350MHz, в поздних (начиная с v.4) Atheros AR9331 частотой 400MHz, 4MB флеша и 32MB RAM. Чипсеты ближайших его собратьев — WR740/WR841 весьма схожи — у WR841ND две антенны и USB, так что и к WR741ND можно запросто припаять USB.

openwrt 1

USB - вещь крайне полезная для маршрутизатора, ведь объем встроенной флеш-памяти в большинстве «домашних» моделей колеблется от 4МБ до 16МБ — для прошивки этого хватит «с головой», но для расширений этого уже недостаточно. Также, имея USB-порт, вы сможете установить USB-HDD и сделать из роутера файл-сервер, качать торренты даже когда компьютер выключен, иметь доступ к файлам откуда угодно, с работающим SSH, и ещё много чего интересного!

Более подробно о USB-модификации WR741ND, а также процессе прошивки OpenWRT под него, можно почитать здесь:

http://wiki.openwrt.org/toh/tp-link/tl-wr741nd

В целом, WR741ND/WR841N — это отличные модели для своих целей, стабильно работающие с десятком беспроводных подключений и забитыми портами. Прошивка от TP-Link также неплоха, имеет функцию автоматической настройки, шифрование, QSS, неплохой фаервол и не только (веб-интефейс на русском с подробными пояснениями). Но сейчас мы её сотрем.

Процесс прошивки довольно прост, и схож для большинства устройств, но, к примеру, WR741ND позволяет залить прошивку прямо из веб-интерфейса и на весь процесс уйдет пару минут, а для некоторых роутеров потребуется долгие «пляски с бубном» и даже внутренние модификации.

Будьте внимательны — любая ошибка (например, неправильно выбранный образ системы) запросто может вывести ваш роутер из строя! Иногда его можно воскресить с помощью Recovery Mode (позже мы рассмотрим как), а если всё совсем плохо — для восстановления потребуется специальное оборудование и перепайка чипа памяти, или с устройством можно распрощаться, как и с гарантией на него. Поэтому — внимательно следите за тем, чтобы выбранная прошивка была совместима с вашей моделью и версией устройства.

Итак, для начала узнаем точную модель и ревизию вашего роутера — на обратной стороне устойства должна быть наклейка, а также в веб-интерфейсе по http://192.168.0.1/ или http://192.168.1.1/ :

openwrt 2

В данном случае мы работаем с TL-WR741ND v.4, с Atheros AR9331 на борту.

Теперь, зная модель устройства идем сюда:

http://wiki.openwrt.org/ru/toh/start

Здесь перечислены все устройства, на которых может быть установлена OpenWRT, со ссылками на страницу описания и краткой информацией по роутеру. Запомните значение «target», вскоре оно понадобится для поиска прошивки. Русская версия списка обновляется медленнее английской, да и в целом список немного отстает от реальности, так что если вы не нашли прошивку под ваше устройство — загуглите, возможно она уже есть. Также, из исходников можно создать свою сборку — это не слишком сложно, но потребует определенных навыков. Подробнее:

http://wiki.openwrt.org/doc/howto/build

Итак, мы нашли в списке свой WR741ND, на странице:

http://wiki.openwrt.org/toh/tp-link/tl-wr741nd

Есть вся необходимая нам информация — по версии устройства отсортированы версии прошивки. Далее, идем на:

http://downloads.openwrt.org/

В нашем случае ищем стабильную версию (под платформу ar71xx:

http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/

И находим нужную нам прошивку:

openwrt 3

Здесь выбор стоит из двух файловых систем - JFFS2 и SquashFS. Почитать об их различиях можно здесь:

http://wiki.openwrt.org/ru/doc/techref/filesystems

Вкратце — JFFS2 имеет журналирование, а в SquashFS система займет меньше места, а также, в отличие от JFFS2, поддерживает FailSafe — режим восстановления, позволяющий подключится к роутеру даже когда тот не загружается целиком. Если нет необходимости испрользовать JFFS2, то лучше выбрать SquashFS.

Также, вы видите 2 файла — factory и sysupgrade. Factory — это образ установки, сама система, которая ставится поверх прошивки вашего роутера. Sysupgrade — файл для дальнейшего апгрейда, с которым мы будем работать уже в OpenWRT. Скачивайте оба.

Теперь, зайдите в веб-интерфейс по 192.168.0.1, и найдите вкладку «System Tools» - здесь есть инструмент для обновления системы, который берет указанный нами файл и перепрошивает им роутер (потому с WR741ND всё так просто, ведь мы можем запросто скормить ему любую другую прошивку, вместо обновления TP-Link). Сперва — откатитесь до заводских настроек на «Factory Defaults». Теперь, во вкладке «Firmware Upgrade» выберите скачанный файл ...-factory.bin и нажмите «обновить». Вуаля — после автоматической перезагрузки ваш WR741ND будет прошит OpenWRT!

Итак, у вас стоит OpenWRT, но без веб-интерфейса и не обновленная. Получить к ней доступ можно по CLI (консольный интерфейс) — для этого в терминале напишите:

 

telnet 192.168.1.1

 

На Windows для этого используйте Putty. Также, вам понадобится утилита WinSCP для передачи файлов, если вы работаете под Windows. Для Linux используйте scp.

openwrt 4

Первым делом — зададим пароль для суперпользователя — для этого введите «passwd» и дважды — новый пароль.

Давайте сразу же проапгрейдим нашу систему скачанным ранее файлом *-sysupgrade.bin. Для начала, согласно официальному руководству по прошивке, переименуйте его в

tplink.bin командой mv:

 

mv /путь/к/файлу/*-sysupgrade.bin tplink.bin

 

И с помощью scp перенесите его в /tmp на вашем роутере:

 

scp /путь/к/файлу/tplink.bin Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. .1.1:/tmp

 

И запустим обновление:

 

sysupgrade -n /tmp/tplink.bin

 

После автоматической перезагрузки, вновь подключайтесь к устройству по telnet или по ssh «ssh Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. .1.1», и пропишите эти две команды:

 

/etc/init.d/uhttpd enable

/etc/init.d/uhttpd start

 

Которые добавят в автозагрузку веб-интерфейс — LuCI, доступ к которому можно получить из браузера по 192.168.1.1:

openwrt 5

Что делать, если что-то пошло не так? Может случится, что при прошивке вы установили систему файлом в SquashFS, но случайно скачали sysupgrade.bin в JFF2, и уже начали процесс апгрейда. Результат не радует — роутер «окирпичился» и не реагирует ни на какие действия, так что подключится к нему стандартными средставами не получится. Это плохо, но всё можно исправить собственноручно, загрузившись в FailSafe-режиме (только для SquashFS).

Для начала, задайте для машины, которую мы подключим к роутеру, ip 192.168.1.2 и подсеть 255.255.255.0 (для Arch Linux о настройке сети можно почитать здесь:

https://wiki.archlinux.org/index.php/Network_configuration_(Русский)

Подключите машину к первому LAN-порту неработающего роутера.

Теперь, перезагрузите ваш роутер, и подождите пока загорится вторая из двух лампочек (для WR741ND — это значок шестеренки)

Теперь, нажмите на любую кнопку на устройстве, помимо кнопки питания — например, включение QSS или Reset. Если лампочка начала быстро мигать — вы в режиме FailSafe.

Подключайтесь по «telnet 192.168.1.1» (если подключение не удалось, видимо, вы неправильно настроили cеть). Если всё сделано правильно — должно появится стандартное окно с ASCII-заставкой «OpenWRT»

Введите команду «firstboot» - система откатится в своё первичное состояние, и перезагрузится, после чего должна работать нормально.

Больше о режиме FailSafe:

http://wiki.openwrt.org/doc/howto/generic.failsafe

Откат на родную прошивку

Если вам понадобится откатиться на родную прошивку, то сделать это довольно просто, ведь OpenWRT не имеет каких-либо инструментов защиты, в отличие от проприетарных прошивок.

Для начала, загрузите официальную прошивку вашего устройства с помощью wget (например, для нашего WR741ND):

 

cd /tmp

wget http://www.tp-linkru.com/resources/software/TL-WR741ND_V4_140521_RU.zip

 

Разархивируйте:

 

unzip ./TL-WR741ND_V4_140521_RU.zip

 

Или проделайте то же на своей машине, и по scp передайте файл .bin в /tmp роутера.

Теперь, с помощью утилиты mtd, запишите прошивку в автозагрузкчик:

 

mtd -r write /tmp/wr741ndv4_ru_3_13_2_up_boot(140521).bin

 

Если всё прошло гладко — роутер перезагрузится, и по 192.168.1.1 или 192.168.0.1 будет доступен веб-интерфейс вашей базовой прошивки.

Внимание:

Если в процессе появились какие-то ошибки — ни в коем случае не перезагружайте! Иначе роутер вновь «окирпичится», и восстановить его будет крайне сложно.

Наиболее часто возникающие ошибки

"no valid command given" — если используется старая версия mtd, не поддерживающая аргументы -r и -e. В этом случае, загрузите и скомпилируйте свежую версию.

Если возникла ошибка «Writing from /tmp/tplink.bin to firmware … [e]Failed to erase block», нужно лишь вырезать некоторую часть файла оригинальной прошивки:

 

cd /tmp

mv wr741nv4_en_3_17_0_up_boot(140410).bin orig.bin

dd if=orig.bin of=tplink.bin skip=257 bs=512

 

И затем вновь перепрошить:

 

mtd -r write /tmp/tplink.bin firmware

 

Более подробно об откате и наиболее частых ошибках:

http://wiki.openwrt.org/toh/tp-link/tl-wr741nd

http://wiki.openwrt.org/doc/howto/generic.uninstall

https://forum.openwrt.org/viewtopic.php?id=3474  

Советуем почитать

Компьютерный портал "Компаньон" © 2016.
В случае перепечатки материалов обязательна прямая ссылка на сайт cs-companion.ru.