Знакомство с OpenWRT

OpenWRT является основанной на Linux открытой операционной системой для встраиваемых устройств. Это не обычная прошивка, а полноценный дистрибутив Linux, позволяющий устанавливать и удалять приложения с помощью инструментов системы управления пакетами без необходимости пересборки прошивки.

Целью разработчиков OpenWRT было предоставление пользователям и разработчикам полного контроля над прошивками их маршрутизаторов. Суффикс "WRT" расшифровывается как "Wireless RouTer". На сегодняшний день OpenWRT может использоваться на различных встраиваемых устройствах, включая Wi-Fi маршрутизаторы, проводные маршрутизаторы, шлюзы, смартфоны, ноутбуки и даже персональные компьютеры архитектуры x86.

Почему стоит использовать OpenWRT

Обычно разработчики встраиваемых устройств поставляют свои продукты со своими прошивками. Однако, эти прошивки могут работать нестабильно или не поддерживать необходимые пользователю функции. Так, один из пользователей маршрутизатора от известного производителя заявил, что стандартная прошивка его устройства является очень проблемной: в ней не работает проброс портов, она содержит ряд уязвимостей, не поддерживает IPv6, не позволяет задать параметры маршрутизации, не позволяет подключаться к устройству по протоколу SSH и, наконец, для нее не выходят обновления. Вообще, производителям не выгодно выпускать обновления прошивок для снятых с производства устройств. Кроме того, прошивки устройств некоторых производителей содержат бэкдоры, которые используются для тестирования устройства перед продажей.

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

На 2018 год OpenWRT поддерживает более 700 устройств различных производителей. В феврале 2011 года в репозитории OpenWRT содержалось около 2000 пакетов с различным программным обеспечением. В 2018 году количество пакетов достигло 3500.

О функциях OpenWRT

Пользователи OpenWRT могут использовать свой маршрутизатор в качестве BitTorrent-клиента, VPN-клиента, источника гостевой Wi-Fi сети, анализатора сетевого трафика, шейпера сетевого трафика или межсетевого экрана с поддержкой QoS-правил. На маршрутизаторе могут быть запущены следующие серверы: SSH (с поддержкой туннелей), IRC, HTTP, FTP и другие. Поддержка mesh-сетей, технологии port knocking, межсетевого экрана, беспроводных мостов, технологий обмена файлами и мониторинга трафика в реальном времени является бонусом для самых требовательных пользователей. Кроме того, OpenWRT может выполнять все функции публичного хотспота.

При этом OpenWRT может соединяться с принтерами, веб-камерами, модемами и звуковыми картами. В общем, устройство под управлением OpenWRT может взаимодействовать с любым устройством, которое поддерживается ядром Linux.

Технические подробности

OpenWRT является дистрибутивом Linux, оптимизированным для встраиваемых систем и содержащим множество модифицированных библиотек. В качестве стандартной библиотеки языка C используется библиотека uClibc. В качестве системных утилит используются утилиты из состава BusyBox, при этом утилиты для управления процессами заменены утилитами из состава системного менеджера procd. Для управления пакетами используется утилита opkg. Разработчики заявляют, что максимально урезанная версия OpenWRT может работать на устройстве с 8 МБ оперативной и 2 МБ постоянной памяти. При этом для беспроблемной работы рекомендуется 32 МБ оперативной и 4 МБ постоянной памяти.

Прошивка состоит из образа ядра Linux (ядро корневая файловая система) и дополнительных программных компонентов. Для сборки прошивки необходимо использовать операционную систему Linux, BSD или macOS.

Альтернативы OpenWRT

Многие из альтернатив OpenWRT основаны на OpenWRT: Gargoyle, Fon, libreCMC, Freifunk, LibreMesh, и.т.д. Другие альтернативы, такие, как DD-WRT, pfSense, Tomato, LibreMesh, telehash, Gluon и OpenWISP, создавались в форме самостоятельных проектов.

В то время, как OpenWRT является полноценным Linux-дистрибутивом, DD-WRT является монолитной прошивкой. По этой причине пользователю немного сложнее работать с OpenWRT, чем с DD-WRT, но, в то же время, OpenWRT является более функциональной прошивкой. Tomato является легковесной прошивкой и поддерживает баланс между производительностью и возможностями, но совместима с крайне малым количеством устройств.

Проблемы, связанные с использованием OpenWRT

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

Некоторые маршрутизаторы, работающие под управлением OpenWRT, могут не использовать технологию динамического выбора каналов Dynamic Frequency Selection (DFS) в диапазоне 5 ГГц и создавать интерференцию с радарами. Из-за ужесточения связанного с этим законодательства в США некоторые производители устройств, такие, как TP-Link, решили пойти самым простым путем и запретить использование открытых прошивок на своих устройствах, в то время, как другие, такие, как Linksys, позволяют использовать их, хоть и после дополнительных проверок.

После установки OpenWRT на некоторых устройствах появляется возможность повышения мощности передатчика. При неправильном использовании данной возможности может быть нарушено местное законодательство в области использования радиочастот.

Инструменты для сборки, установки и настройки OpenWRT

Окружение для разработки и сборки OpenWRT называется OpenWRT Buildroot и основывается на наработках системы Buildroot. Оно позволяет осуществлять кросскомпиляцию для различных архитектур и автоматизировать процесс сборки с помощью Make-файлов и скриптов.

OpenWRT SDK необходимо для сборки пакетов пространства пользователя. Имеется возможность загрузки как сборки SDK, так и исходного кода SDK для самостоятельной сборки. Менеджер пакетов opkg используется для установки/удаления/обновления собранных пакетов. При сборке собственного пакета работа с ним может осуществляться средствами OpenWRT SDK.

Конфигурация является централизованной и осуществляется посредством интерфейса Unified Configuration Interface (UCI). Вообще конфигурация может осуществляться как с помощью консоли, так и с помощью веб-интерфейса LuCI. Альтернативными веб-интерфейсам являются X-Wrt и Gargoyle Router Management Utility. В LuCI имеется страница для управления менеджером пакетов. Также в LuCI имеются страницы для управления некоторыми системными утилитами.

Как участвовать в разработке проекта

Исходный код проекта OpenWRT открыт и разрабатывается сообществом. Он распространяется в соответствии с условиями лицензии GPL v2.0 и доступен на GitHub. Вы можете работать как над основным дистрибутивом, так и над различными пакетами. Документация размещена в OpenWRT Wiki.

В основном разработчики проекта решают следующие задачи: