Краткое знакомство с прошивкой OpenWrt для беспроводных маршрутизаторов

Введение

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

Конечно, это не относится к таким характеристикам, как поддерживаемые стандарты беспроводной связи, число и скорости проводных портов и портов USB. Их стоит рассматривать в разрезе планируемого использования устройства. Скажем если нужна функция сетевого хранения файлов или подключение сотового модема — потребуется порт USB, а если от провайдера нужно получить более 100 Мбит/с, то без гигабитных портов сделать это невозможно.

Но аналогичное замечание касается и встроенного программного обеспечения. Если речь только о раздаче интернета от провайдера по Wi-Fi на десяток клиентов в небольшом помещении, то на это способна практически любая модель. Но если требуется широкое покрытие беспроводной сетью несколькими точками, удаленный доступ к устройствам локальной сети, гибкие настройки межсетевого экрана и так далее, то обязательно нужны соответствующие функции в прошивке, одними мегагерцами и мегабайтами ситуацию не исправить. И конечно, универсального рецепта тут нет — «хотелки» у пользователей очень разные.

В комментариях к публикациям в данном разделе читатели часто упоминают в качестве альтернативы «готовым» роутерам решения сегмента «сделай сам» в виде сочетания недорогой модели «железа» и альтернативной прошивки. Несомненно, такой подход к выбору вполне возможен. Но хочется все-таки заметить, что его сложно назвать «универсальным решением всех проблем». И вопрос тут скорее не в собственно прошивке, а в подходе потребителя к выбору продукта и пониманию того, что есть явная связь функции-время-знания-деньги. Если пользователю нужно решение формата «купил, включил, настроил и работаешь» с минимальными затратами времени и усилий, то обычно выбираются присутствующие на рынке роутеры с требуемыми возможностями по аппаратной и программной части и используются с прошивками производителя. Да, в этом случае за разные интересные готовые к использованию функции придется доплатить.

А если есть опыт по установке альтернативных прошивок и понимание, что они способны решить ваши задачи, то можно купить условно более доступное оборудование, соответствующее аппаратным требованиям, и заменить прошивку производителя на более удобный вариант, что потребует как минимум времени. «С нуля» разобраться с этим может быть не так просто, но если «набить руку», то, конечно, всё можно сделать быстро и без риска «окирпичивания». Следующим уровнем можно назвать самостоятельную сборку прошивки под себя, на что придется потратить еще больше усилий, но теоретически получить более качественный или более функциональный вариант. Далее можно придумать полностью самостоятельное создание прошивки, что еще более трудоемко.

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

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

Стоит отметить здесь и отличия в таких характеристиках, как гарантии, обновление, исправление ошибок, дополнительные сервисы производителя (к примеру, облачный доступ или мобильное приложение) и так далее. На наш взгляд, ситуация с выбором непростая. С одной стороны, мы имеем готовое решение производителя устройства, в котором он реализовал свой набор функций и выйти за его пределы невозможно, с другой — альтернативное программное обеспечение, где почти нет ограничений по расширению, но на его внедрение потребуются и время, и знание.

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

Одной из наиболее известных универсальных прошивок для беспроводных маршрутизаторов является OpenWrt, которой скоро исполнится 20 лет. Решение основано на ядре Linux и предлагается с лицензией GNU GPL 2. Наиболее важным при выборе модели роутера под эту прошивку является объем флеш-памяти. Старые версии могли работать на устройствах с 4 и 8 МБ, но актуальные для комфортной работы хотят от 16 МБ и более. Что касается оперативной памяти, то тут рекомендуется от 128 МБ и более. К счастью, подавляющее число современных моделей этим требованиям удовлетворяют. В официальном списке подходящих роутеров на момент подготовки публикации было более 2000 моделей.

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

Непосредственно тесты мы проведем в следующих статьях с несколькими популярными моделями роутеров, а здесь, чтобы далее не повторяться, коротко расскажем о собственно прошивке. Для определенности ссылки далее будут для модели Redmi AX6S.

Установка OpenWrt

В наиболее удачном варианте на сайте есть страничка, посвященная именно вашему роутеру. На ней приводится подробное описание установки и особенности этого процесса. Желательно прочитать всю информацию внимательно, поскольку производители оборудования могут менять аппаратные версии и конфигурации флеш-памяти, а это является важным моментом совместимости. Далее вам предстоит выбрать собственно версию прошивки. Для начала и первого знакомства оптимальным вариантом является последняя официальная релизная версия. Если вы точно понимаете, что вам нужно что-то новее, то можно поискать на сайте так называемые снапшоты, которые представляют собой ежедневные сборки наиболее актуальных версий прошивки, модулей и пакетов. Это позволяет оперативно добавлять поддержку новым устройствам и функциям, однако разработчик предупреждает, что они как минимум не имеют графического интерфейса «из коробки» и не протестированы. Еще один вариант — поиск прошивок пользователей на тематических форумах. Обычно они построены на базе относительно актуального снапшота и имеют встроенные дополнительные пакеты, которые создатель посчитал необходимыми (например, графический интерфейс или поддержку сотовых модемов). Понятно, что в случае вопросов по последнему варианту адресовать их нужно будет автору сборки.

Для собственно установки прошивки обычно требуется прямой доступ к флеш-памяти через консоль. В зависимости от производителя и модели могут быть разные варианты получения такого доступа. В нашем случае использовалась китайская версия устройства, для которой в сети есть формально официальная прошивка, на которую можно перейти штатным образом через веб-интерфейс, а уже в ней специальным консольным инструментом включить telnet. Процесс относительно простой, но требует определенных знаний и, конечно, внимательности.

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

Далее всё по инструкции: подключаемся к консоли и проверяем все указанные требования по установке. Желательно также сделать полный дамп (копию) установленной версии. После этого закачиваем прошивку и записываем ее во флеш-память. Если вы пока только раздумываете о переходе, то стоит также ознакомиться с информацией о вариантах возврата на официальную прошивку производителя устройства.

Обратная процедура в нашем случае относительно проста: оригинальную прошивку можно вернуть через специальный режим восстановления. Для этого потребуется специальная настройка локальной сети и сервер TFTP или же можно воспользоваться специальной утилитой восстановления, в которой уже всё есть. Сам файл прошивки также потребуется предварительно скачать из сети. Далее зажимаем кнопку сброса и включаем питание роутера. Когда начнет мигать желтым индикатор, отпускаем кнопку сброса и ждем, пока индикатор начнет мигать синим. Далее всё настраивается как на новом устройстве.

Базовые возможности OpenWrt

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

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

После перезагрузки роутера и переподключения к нему клиента открываем штатный веб-интерфейс LuCI, расположенный по адресу 192.168.1.1. Здесь есть поддержка HTTPS и автоматический редирект. Аккаунт по умолчанию — root без пароля. И конечно, пароль нужно будет обязательно поменять в настройках устройства. Отметим, что по умолчанию беспроводные интерфейсы неактивны, так что начинать настраивать роутер нужно будет по кабелю. Язык интерфейса на свежеустановленной прошивке английский, но в репозитории есть пакеты локализации LuCI, в том числе с русским языком.

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

В разделе Status кроме описанной выше страницы Overview есть еще шесть. Routing показывает текущую таблицу маршрутизации, Firewall — актуальные таблицы межсетевого экрана (в данной версии основан на firewall4 и nftables). Системный журнал System Log представлен выводом dmesg.

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

Channel Analysis предоставляет информацию о соседних беспроводных сетях (имя, уровень сигнала, номер и ширина канала, режим, BSSID) по каждому радиоблоку.

На Realtime Graphs представлены полезные графики для оценки текущей нагрузки на роутер: загрузка процессора, график по каждому интерфейсу, уровни сигнала беспроводных соединений, список UDP- и TCP-соединений. Заметим, что долговременного хранения данных, конечно, не предусмотрено, так что если это требуется, нужно будет использовать внешние сервисы.

В разделе System, как понятно из названия, находятся системные настройки. На первой странице можно указать сетевое имя и настроить часы (есть поддержка синхронизации через NTP). На Logging можно выбрать размер буфера для хранения журнала и уровень протоколирования, а также указать удаленный сервер Syslog для отправки событий на него. И конечно, не обошлось без смены языка и темы веб-интерфейса.

На странице Administration настраивается пароль пользователя root, сервис SSH, ключи SSH и редирект на HTTPS.

Установка дополнительных пакетов opkg осуществляется на странице Software. На момент подготовки статьи там было представлено более 7000 модулей. Конечно, большинство из них скорее служебные или библиотеки, но в целом масштаб оценить можно. Заметим также, что речь идет исключительно о пакетах операционной системы, а не о готовых модулях для реализации конкретной функции для пользователя. К примеру, если устанавливается веб-сервер apache, то есть основной пакет и различные дополнения (модули). Удобно что в таблице представлен и требуемый объем на накопителе, а также текущее состояние системного накопителя. В случае нашего роутера на «чистой» прошивке было свободно 90 МБ.

На странице Startup можно управлять скриптами инициализации, а также создать и изменить пользовательский скрипт /etc/rc.local.

Страница Scheduled Tasks позволяет отредактировать системный файл планировщика crontab.

Если позволяет аппаратная конфигурация роутера, на странице LED Configuration можно настроить работу светодиодов на корпусе устройства.

Страница Backup / Flash Firmware пригодится для сохранения/восстановления/сброса конфигурации, обновления прошивки, создания копий блоков флеш-памяти. Обратите внимание, что с обновлениями всё может быть не так просто, как хотелось бы. В частности, для рассматриваемой модели роутера из-за конфигурации блоков флеш-памяти вариант обновления через GUI неработоспособен.

Последняя страница в разделе — принудительная перезагрузка роутера (Reboot).

Итого в этой группе имеет смысл настроить несколько параметров — пароль администратора, встроенные часы и, может быть, работу светодиодов. Пока всё выглядит достаточно просто и мало отличается от интерфейсов других роутеров, но дальше будет немного сложнее.

Настройки по умолчанию уже включают режим клиента DHCP для порта WAN, объединяют все порты LAN и настраивают на этом интерфейсе сервер DHCP. Так что если у вас провайдер с IPoE и автоматической настройкой, то по кабелю всё будет работать сразу. Если требуется что-то изменить — идем на страницу Interfaces в разделе Network.

Для WAN штатно поддерживаются наиболее востребованные и распространенные режимы IPoE и PPPoE, а также IPv6. Гибкость настроек интерфейсов позволяет настроить конфигурации с несколькими WAN и использовать технологи VLAN.

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

С первого раза может быть непросто разобраться с беспроводными интерфейсами, поскольку здесь разделены понятия радиоблока и сети. При этом на один радиоблок можно назначить сразу несколько сетей, но готового шаблона для сценария гостевой сети нет.

В настройках собственно сетей базовый набор опций уже понятный: стандарт, номер и ширина канала, мощность передатчика, режим работы (например, можно реализовать схему с беспроводным подключением к интернету), имя, защита (есть поддержка WPA3), фильтр MAC-адресов и так далее. Набор каналов и максимальная мощность определяются региональными настройками.

С разделом Routing вопросов нет: можно добавить собственные маршруты для IPv4 и IPv6 в статическом режиме или с учетом назначенных правил.

На странице DHCP and DNS назначаются постоянные адреса клиентам, есть пункты для реализации на базе роутера загрузки по сети с использованием PXE и TFTP, настройка локального разрешения имен.

Встроенные диагностические утилиты — ping, traceroute и nslookup — могут быть полезны при диагностике проблем прохождения трафика.

Последний пункт раздела — настройка межсетевого экрана.

Он работает с использованием зон, имеет функцию проброса портов, а в правилах предусмотрено использование в том числе и расписаний.

В целом даже базовый состав прошивки вполне конкурентноспособен по сравнению с массовыми моделями представленных на рынке роутеров. Конечно, многие производители, особенно в верхнем и/или игровом сегментах, сегодня реализуют широкий набор дополнительных функций, например облачное управление, Mesh-сети, родительский контроль и так далее, однако оценить их реальную востребованность достаточно сложно, тут всё зависит от требований конкретного пользователя.

В последующем тестировании мы устанавливали на роутер серверы VPN для различных протоколов, и эти операции сложно было назвать простыми и интуитивно понятными (для примера — официальная инструкция для сервера OpenVPN), однако в целом это вполне осуществимо за разумное время при наличии определенного опыта работы с Linux и сетями. Но совершенно точно, что простым «копипастом» примеров из интернета здесь не обойтись, потребуется еще и разбираться в том, что конкретно делают предлагаемые команды и скрипты, возможно адаптировать их под вашу версию оборудования и/или общаться с сообществом активных пользователей на многочисленных форумах. Другое дело — если вы хорошо знакомы с этой прошивкой и уже имеете собственную коллекцию рецептов на разные случаи. Тогда, конечно, всё существенно проще и быстрее. Впрочем, это касается всех областей жизни, где опыт имеет значение.

Заключение

Очередное знакомство с OpenWrt, как ярким представителем альтернативных прошивок для беспроводных роутеров, показало, что в настоящий момент этот продукт является вполне зрелым для активного использования, и не только энтузиастами. Если по какой-то причине вы считаете, что у вашего роутера прошивка «глючит», или если вам требуются какие-то функции, ждать реализацию которых от производителя нет никакого смысла, то стоит заглянуть на страничку совместимости проекта OpenWrt.

Второй вариант — когда вы сразу выбираете новый роутер уже с прицелом на работу с OpenWrt. В частности, это касается «китайских» моделей, которые обычно имеют привлекательные технические характеристики в сочетании с невысокой стоимостью, но штатная прошивка у них мало того что на незнакомом языке, так еще и очень «грустная» по возможностям. Но еще раз напомним, что все-таки такая схема — это не «включил и работаешь». Если у вас действительно сложные запросы и нет опыта в данной области — потребуется потратить достаточно много времени для достижения своей цели.

Третий вариант — у вас есть какой-то старый роутер, который хочется использовать для решения нестандартных задач (например, мониторинга, удаленного управления, веб-сервисов, хранения данных) в формате микросервера.

Ну и четвертый вариант для настоящих энтузиастов — выбор модели (платформы), уже сразу ориентированной создателями на работу с OpenWrt, или установка данного ПО на обычный стандартный компьютер. В этом случае можно будет забыть про ограничения по памяти, диску и мощности процессора, добавить различную периферию и так далее. Но вполне возможно, что придется ближе познакомиться с миром аппаратной поддержки оборудования в конкретном дистрибутиве.

2 октября 2023 Г.