Андрей Смирнов
Время чтения: ~33 мин.
Просмотров: 20

Альтернативные прошивки роутеров – надо ли их устанавливать?

Прошивка DD-WRT на домашнем роутере

Это обзорная статья о том, какие возможность существуют у пользователя обычного домашнего роутера, и как этими возможностями воспользоваться. Рано или поздно каждый пользователь интернета покупает себе домой роутер, поскольку количество устройств, требующих интернета, растёт. А у многих растут дети, которые тоже требуют подключения к интернету 🙂 Но мне больно и обидно видеть, что люди не всегда понимают, что можно и нужно делать для достижения максимального комфорта. Небольшой дисклаймер (не знаю как это по-русски). Я буду употреблять слово «правильно» в том смысле, что я сам считаю правильным для себя. Пройдя путь от «нуба» в Линуксе до уровня «могу советовать другим», я считаю, что мои советы по крайней мере не хуже других советов, которые можно встретить на различных форумах. Речь пойдёт о прошивке роутера на основе известного дистрибутива DD-WRT. Это прошивка, превращающая роутер в «обычный» линукс-сервер с весьма жёсткими ограничениями памяти и быстродействия. Несмотря на это, функционал такого сервера может получиться весьма богатым. Вот только некоторые из возможностей:

  • SSH
  • FTP server
  • HTTP server
  • OpenVPN
  • QoS management
  • Transmission
  • PHP
  • MySQL
  • RADIUS
  • Asterisk
  • etc etc

— Давайте же начнем! — сказал Морж, усаживаясь на прибрежном камне. — Пришло время потолковать о многих вещах… (c)

1) Выбор оборудования

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

  1. Linksys WRT-54GL, модель начального уровня, зато непревзойдённая по надёжности. Покупалась более 3 лет назад, до сих пор в строю, «ни единого разрыва»… Характеристики: WiFi (b/g) + 4 LAN 10/100, 4Mb flash, 16Mb RAM, no USB.
  2. Asus WL-520GU, современный и весьма дешёвый роутер, 3 месяца в строю, также нет нареканий по работе. Характеристики: WiFi(b/g) + 4 LAN 10/100, 4Mb flash, 16Mb RAM, 1 USB.

Основными критериями выбора моделей являются:

  • Совместимось данных моделей с прошивками DD-WRT. Возможности «родных» прошивок не рассматривались вообще: зачем выбирать цвет обоев в новой квартире, если впереди — всесокурушающий ремонт?
  • Объем памяти RAM. Почти все современные роутеры имеют 16Mb RAM. Этого как раз хватает для нормальной работы, но, как известно, каждая программа стремится захватить весь доступный объём памяти. Если есть желание выжать максимум из своего роутера или есть лишняя сумма денег, лучше найти модель с 32Mb памяти.
  • Наличие портов USB, ибо весь расширенный функционал удобнее всего ставить именно на внешнем носителе, т.к. flash-память роутера не сможет вместить всех новых программ. Мой первый роутер не имел USB, поэтому приходилось немного изгаляться и «работать напильником».
2) Прошивка роутера

Прошивка — это совсем не больно! Это на самом деле простая операция, ну такая как перректальное удаление гланд… Нет, правда ничего сложного. При самой первой смене прошивки потребуется чуть больше усилий, зато каждая следующая пойдёт всё легче и легче. Не следует опасаться, что смена прошивок будет происходить регулярно. Выбрав для себя набор программ, входящих в одну из готовых прошивок, можно на этом успокоиться и наслаждаться жизнью. Если понадобится дополнительный функционал — всегда можно установить новые программы отдельно, для этого существует специальный механизм. Но на первых этапах может случиться так, что выбор прошивки окажется неудачным, например в прошивке не окажется такой нужной возможности как поддержка SAMBA. Не беда, скачиваем другую прошивку, 2 движения мышкой — вуаля! Некоторые модели роутеров (в частности Asus) перед прошивкой на DD-WRT требуют специальных действий (очистка памяти или что-то в этом роде). Внимательно следуйте инструкциям на конкретную модель роутера! Особенно внимательно нужно отнестить к требованиям «выждать 5 минут после окончания прошивки». Я был немного самоуверен и, перепрошивая своему коллеге роутер, слегка поторопился выключить питание после окончания прошивки. Результат — процедура восстановления и всё по-новой. Если сказано «подождите 5 минут» — возьмите песочные часы на 5 минут и ждите! Это серьёзно. Я не буду рассматривать сам процесс перепрошивки (tftp, смена адреса на 192.168.0.1, интерфейс и т.д.) — это всё изложено на форумах DD-WRT. Но, наконец, вы закончили с прошивкой, и перед вами — чудесный новый WEB-интерфейс вашего роутера. Что дальше?

3) Подготовка к установке OPTWARE

Базовый функционал вы уже получили, выбрав версию прошивки. Осталось настроить параметры подключения к вашему провайдеру (DHCP, PPTP etc), и уже можно начинать бороздить просторы вселенной. Многим домашним пользователям этого уже будет достаточно. Настройки параметров безопасности, управление маршрутеризацией и прочие стандартные для роутеров «фишки» я также описывать не буду. Без этого всё равно не обходится ни один «нормальный» роутер. Но ведь можно же сделать ещё лучше! Продолжим процесс. Все дополнительные программы объединены общим понятием Optware. (они ставятся в каталог /opt, который автоматически создаётся роутером и всегда доступен для записи). Однако сам каталог /opt пуст и фактически расположен в RAM — то есть, там очень мало места и всё, что туда попадает, будет потеряно при перезагрузке. Что же делать? Выход следующий: нам нужно постоянное место на каком-нибудь «диске». И хотя описываемые хранилища не имеют формы диска в геометрическом смысле (скорее это кристаллы кремния в пластиковых корпусах с металлическими выводами), будем всё же называть их дисками.

JFFS

Если flash-память роутера достаточно большая, а размер прошивки меньше общего размера flash-памяти, то оставшееся место можно использовать для хренения данных. Если выбрать прошивку с поддержкой JFFS, то в зависимости от версии, можно получить от 0.5 до 3Mb «диск» прямо внутри роутера. Такой диск будет автоматически примонтирован как /jffs при старте. Главной неприятностью при работе с flash-дисками является их быстрая деградация при записи. Если количество перезаписей сектора «диска» превысит некий порог (от 10 до 100 тысяч циклов), то диску придёт конец. Всё плохо… 🙁 Если с внутренним диском произойдёт такое, действительно будет плохо. Но если это внешний USB диск, то лёгким движением руки заменяем USB-флешку на новую — и снова в бой. Ведь USB-флешки давно уже расходный материал, не так ли? Тем более что достаточна флешка объемом 1 или 2Gb. Главное, как обычно, вовремя делать бекапы.

USB

Как вы уже поняли, основным местом установки Optware является внешний USB диск. Важно иметь в виду, что USB должен быть определённым образом отформатирован перед установкой в роутер. Как минимум, должен присутствовать первичный раздел, отформатированный как ext2 или ext3. Более «правильной» является следующая схема:

  1. раздел ext2, размер ~400Mb — основной раздел Optware, монтируется как /opt
  2. раздел swap, размер ~24Mb — для свопинга, позволяет работать таким «тяжеловесным» приложениям как RADIUS, MySQL, Apache…
  3. раздел ext2, размер ~400Mb — резервный раздел Optware (офлайновое зеркало)
  4. раздел ext2 или fat32, всё остальное место — для пользовательских данных

Форматирование USB лучше всего выполнять на Linux-машине любыми подручными утилитами, например GParted.

CIFS

Если роутер не имеет аппаратного USB, а установить Optware всё-таки хочется, то можно воспользоваться замечетельной возможностью Linux работать с диском через сеть. Для этого нам потребуются 2 вещи:

  • постоянно работающий где-то в сети сервер (или NAS, или просто десктоп-машина, даже ноутбук) с поддержкой SAMBA
  • прошивка с поддержкой CIFS/SAMBA

Если в доме уже есть компьютеры (а они есть, ведь роутер без компьютеров смотрится как-то нелепо), то один из домашних компьютеров будет выступать в роли «сетевого диска» для роутера. Роутер при загрузке будет монтировать расшаренную папку как /opt, а дальше — никаких отличий в работе Optware, кроме скорости первоначальной загрузки через сеть. Конечно, для случая CIFS лучше использовать не WiFi, а Ethernet подключение. Чтобы всё заработало, достаточно в настройках роутера в разделе CIFS указать сетевой адрес и логин/пароль для доступа к расшаренной папке, и при следующей перезагрузке роутер автоматически примонтирует сетевой диск в папку /tmp/smbshare.

SD/MMC

Предположим, что у нас нет ни свободного места в flash-памяти роутера, ни USB, ни сервера. А нам очень нужно установить Optware. Что же делать? Как обычно, «у нас с собой было» (это мой любимый девиз). Если совсем ничего нет, то придётся немного поработать напильником. Для некоторых моделей (среди которых WRT-54GL) доступен так называемый SD/MMC mod. Достаточно приклеить куда-либо SD или MMC карту и припаять 6 проводков, и можно получить место для установки Optware и хранения пользовательских данных. Именно такой мод я в конце концов и сделал, чтобы из старого роутера получить автономную точку доступа под WiFi Hotspot Chilli. Это — тема отдельного поста, возможно скоро соберусь и даже сделаю мини-сайт. Если кого-то ещё эта тема интересует, напишите в приват.

4) Определение точки монтирования, startup, shutdown

В зависимости от выбранного «диска» точка монтирования будет разной. Для внутренней flash-памяти это будет /jffs, для USB это будет /mnt (если разрешить автоматическое монтирование), для CIFS это будет /tmp/smbshare, для SD/MMC это будет /mmc. Если выбран вариант USB, то следует запретить автоматическое монтирование — мы сами будем это делать «правильным» образом. Как я уже сказал, Optware устанавливается в строго определённое место — каталог /opt. Этот каталог уже есть, нужно только примонтировать к нему реальный «диск». Монтирование можно (нужно) делать в процессе начальной загрузки роутера. Для автоматизации в роутере предназначены несколько предопределённых скриптов, которые выполняются при старте и завершении работы. Нам понадобятся как минимум 2 скрипта:

  • .rc_startup
  • .rc_shutdown

Первый скрипт будет выполнять монтирование внешнего «диска» и запуск Optware, второй соответственно — останов Optware и размонтирование. Для начала надо разрешить доступ к роутеру по telnet или по SSH протоколу. Рекомендую настроить доступ по SSH, так как это безопаснее и просто удобнее (можно настроить авторизацию по ключевому файлу и даже не вводить каждый раз пароль при доступе). А доступ нам понадобится неоднократно, чтобы устанавливать программы и смотреть, WTF, почему они не хотят правильно работать. Сервер SSH уже присутствует и работает во всех версиях прошивок роутера. Нужно только создать пару ключей, один из которых (публичный) загрузить в роутер, а другой (приватный) положить на ноутбуке рядом с программой Putty и WinSCP. Про ключи тоже писать не буду, везде это достаточно подробно расписывается. Создадим скрипт .rc_startup, который пока будет делать только одно: монтировать внешний «диск» в папку /opt. Варианты:

USB mount /dev/scsi/host0/bus0/target0/lun0/part1 /opt
JFFS
CIFS

Сохраним его в роутере кнопкой Save startup, перезагрузим роутер (возможно, он перезагрузится сам) — после этого у роутера должен появиться каталог /opt, куда теперь можно записывать файлы. Проверим?telnet router cd /opt echo "OK" >opt.ok cat opt.ok если получилось «OK» — значит всё ОК, если нет — значит что-то не так… Гуглим, ищем где ошибка, повторяем…

5) Установка Optware — первый шаг

Ну вот, всё позади, у нас в сети — роутер с возможностью установки Optware. Приступим. Т.к. у меня на ноутбуках Windows, я использую Putty (telnet или SSH) для доступа к консоли роутера и WinSCP для копирования и редактирования файлов. Подключаемся через WinSCP к роутеру и создаём в папке /tmp следующий скрипт:opt-inst.sh Подключаемся через Putty к роутеру и выполняем скрипт:cd /tmp chmod 740 ./optw-inst.sh ./optw-inst.sh В результате работы скрипта будет создана начальная конфигурация Optware и программа-установщик opt-inst. Теперь можно приступать к установке всех остальных пакетов программ.

6) Установка первых пакетов

Для начала установим какой-нибудь совсем простой пакет, например rsync. Он нам пригодится в дальнейшем для настройки резервного копирования.cd /opt ipkg-opt update ipkg-opt install rsync Если всё прошло успешно и нет никакой ругани в консоли, то можно продолжить установку. Среди пакетов «первой необходимости» я бы назвал следующие:

  • mc — Midnight Commander
  • tcpdump — сбор и анализ сетевого трафика
  • busybox — расширенные версии основных утилит Linux

Некоторые пакеты будут требовать установки других (через механизм зависимостей) — так и надо, пусть они ставятся сами. Обычно всё что требуется — нажимать «y» и соглашаться.

7) Окончательная настройка

Осталось настроить роутер так, чтобы запуск, работа и останов нужных сервисов происходил полностью автоматически. Для этого нужно исправить скрипты .rc_startup, .rc_shutdown, возможно, запустить процесс cron, и наслаждаться.Тут следует сделать некоторые замечания. В разных версиях прошивок процедура запуска и останова почему-то отличается, причём в существенной части, а именно — запуск пользовательских скриптов из init.d. В более новом роутере (версия прошивки 13972) пользовательские скрипты /opt/etc/init.d/S* автоматически вызываются после завершения работы системного .rc_startup, и аналогично, /opt/etc/init.d/K* перед запуском .rc_shutdown. Поэтому для запуска и оснанова нужных сервисов достаточно, чтобы их соответствующие S* и K* скрипты находились в папке запуска /opt/etc/init.d Однако и тут (по крайней мере в моём случае) не обошлось без «подводных граблей» (чьё-то меткое выражение). По законам жанра, запуск скрипта S* должен быть с параметром start, а запуск K* — с параметром stop. Но DD-WRT почему-то не передаёт start при старте, хотя и передаёт stop при останове. Пришлось делать некий work-around: Системный скрипт .rc_statup (создаётся при запуске в /tmp и запускается силами процесса init) выглядит примерно так (некоторые подробности опущены, полный код доступен здесь):# /tmp/.rc_startup: # 1: Монтировать "диск" optware в папку /opt DST=`ls /dev/scsi/host?/bus?/target?/lun?/part1` if [ -n "$DST" ]; then     /bin/mount -t ext3 -o noatime,nodiratime $DST /opt     echo "mount USB part1 -> /opt" fi # 2: Разрешить swapfile с раздела swap DST=`ls /dev/scsi/host?/bus?/target?/lun?/part2` if [ -n "$DST" ]; then     /opt/bin/busybox swapon $DST     echo "mount USB part2 -> swap" fi # 3: Создать окружение для запуска S* скриптов Optware echo "start">/tmp/.rc_stage # 4: Закончить работу, далее запустятся скрипты /opt/etc/init.d/S* exit Каждый S* и K* скрипт содержит примерно такой код:if [ -n "$1" ]; then     OP=$1 else     OP=$(cat /tmp/.rc_stage) fi case "$OP" in     start) # bla-bla         ;;     stop) # bla-bla         ;; esac Системный скрипт .rc_shutdown (создаётся при перезагрузке в /tmp и запускается по команде reboot) выглядит примерно так (некоторые подробности опущены, полный код доступен здесь):# /tmp/.rc_shutdown: # 1: Скрипты /opt/etc/init.d/K* уже отработали # 2: Запретить swapfile DST=`ls /dev/scsi/host?/bus?/target?/lun?/part2` if [ -n "$DST" ]; then     /opt/bin/busybox swapoff $DST     echo "swap disabled" fi # 3: Отмонтировать optware DST=`ls /dev/scsi/host?/bus?/target?/lun?/part1` if [ -n "$DST" ]; then     /bin/umount /opt     echo "/opt umounted" fi # 4: Закончить работу, далее будет перезагрузка роутера echo "*** Shutdown *** В более старом роутере (версия прошивки 13064) S* и K* скрипты вообще не вызываются автоматически, поэтому пришлось делать так: Системный скрипт .rc_statup копирует и стартует (в фоновом режиме) скрипт запуска optware:# /opt/.startup - скрипт запуска Optware CFG=/mmc # или /mnt, или /jffs, или /tmp/smbshare if [ -x $CFG/opt/.startup ]; then     cp $CFG/opt/.* /tmp     echo "startup: switch to optware" >>/tmp/log     /tmp/.startup start $CFG & else     echo "startup: optware not found" >>/tmp/log fi А уже optware-скрипт /opt/.startup делает всё остальное, а именно — запускает S* скрипты. Аналогично устроен и системный скрипт .rc_shutdown: (только запускает /opt/.shutdown не в фоновом режиме, а непосредственно)# /opt/.shutdown - скрипт останова Optware CFG=/mmc if [ -x $CFG/opt/.shutdown ]; then     cp $CFG/opt/.* /tmp     . /tmp/.shutdown stop $CFG fi На этом пока всё.

Как же надоели постоянные обрывы связи! А настройки-то, настройки… ну почему они сбиваются?! То одно не работает, то другое… Нет, этому роутеру точно пора на свалку!

Стоп. Не спешите. Основная масса неполадок в работе маршрутизаторов связана с прошивкой. И если производитель не торопится исправлять свои недоработки, откажитесь от его услуг. Альтернативная прошивка для роутера DD-WRT превратит даже скромный и недорогой девайс в полноценный сервер с операционной системой на ядре Linux. Она раз и навсегда устранит проблемы со связью и подарит вам то, что обычно покупают за немалые деньги.

Содержание

Возможности DD-WRT

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

Вот краткий список ее возможностей и преимуществ (полный приведен на ):

  • Увеличение зоны покрытия беспроводной связью (в сравнении с родными прошивками большинства роутеров).
  • Подключение к Интернету любых устройств (компьютеров, мобильных гаджетов, TV и прочего, включая морально устаревшие девайсы).
  • Поддержка установки пользовательских пакетов приложений во встроенную память (JFFS2), на MMC/SD-карты и накопители USB.
  • Поддержка пользовательских скриптов.
  • Встроенный мультимедийный и файловый сервер.
  • Технология увеличения скорости связи Afterburner.
  • Оптимизация полосы пропускания.
  • Сервер и клиент OpenVPN .
  • Сервер и клиент PPTP (VPN)
  • UPnP.
  • IPTV – интернет-телевидение.
  • DDNS – динамические DNS на различных сервисах (DynDNS, No-IP, easyDNS и других).
  • DMZ – демилитаризованная зона.
  • VLAN – виртуальные локальные сети.
  • Ntop – наглядный анализатор сетевого трафика.
  • Wake On Lan – технология удаленного включения ПК.
  • Сервер и клиент Samba – общий доступ к файлам и принтерам из-под различных операционных систем.
  • FTP- и HTTP-серверы.
  • Планировщик заданий Cron.
  • DNS Forwarder – переадресация запросов на ДНС-сервер по выбору пользователя.
  • Clients Isolation – режим изоляции клиентских устройств, подключенных к точке доступа, от взаимодействия.
  • Возможность переназначить сгоревший порт WAN (Internet) на один из портов LAN.
  • Ограничение доступа к выбранным сайтам и блокировка рекламы.
  • Надежное шифрование веб-трафика.
  • Доступ по Telnet и SSH.
  • Детальная статистика по использованию каналов связи (локальной сети и Интернета) и оборудования роутера.

Загрузка и установка

Перед закачкой и установкой DD-WRT убедитесь, что ваш маршрутизатор находится в . Обратите внимание на рекомендации по выбору дистрибутива в зависимости от объема флеш-памяти аппарата (приведены под списком) и других параметров.

Помимо дистрибутива DD-WRT и роутера, вам понадобится компьютер на базе Windows или Linux, патч-корд (отрез обжатой витой пары) и договор с поставщиком услуг Интернета.

Порядок инсталляции альтернативной прошивки мало чем отличается от обычного, но для некоторых марок и моделей роутеров он имеет ряд особенностей. Описание этапов установки для отдельных представителей ASUS, D-Link, TP-LINK и LinkSys приведено . Для других – в таблицах из списка поддерживаемых девайсов, как на примере ниже:

Общий порядок инсталляции DD-WRT:

  • Скачайте на компьютер подходящую версию альтернативной прошивки или .
  • Подключите маршрутизатор к компьютеру с помощью патч-корда. Отключите на ПК защитные программы (антивирус и файервол).
  • До начала установки прошивки, а также после нее сделайте аппаратный сброс роутера. Разработчики рекомендуют метод 30/30/30: нажмите на устройстве кнопку Reset и удерживайте ее полминуты. Далее, не отпуская кнопку, выключите питание аппарата и удерживайте Reset еще 30 секунд. Отпустите кнопку, включите питание, дождитесь, когда аппарат определится компьютером или на его панели засветится любой из индикаторов. Снова нажмите Reset и держите 30 секунд.
  • Зайдите обычным способом в админ-панель маршрутизатора, откройте раздел обновления встроенного ПО, выберите на компьютере файл DD-WRT (factory-to-ddwrt.bin) и нажмите «Обновить».

После повторного сброса по методу 30/30/30 можно переходить к настройкам новой операционной системы вашего роутера.

Обратите внимание, интерфейсы разных сборок DD-WRT имеют некоторые различия, но они не столь значительны, чтобы вы могли что-то перепутать.

Настройка

Вход в админку, изменение логина, пароля и языка интерфейса

Для доступа к админ-панели DD-WRT вбейте в адресную строку браузера ИП-адрес 192.168.1.1 и нажмите кнопку перехода. Если всё сделано верно, откроется страница «Router Management». Используйте для входа в систему логин встроенной учетной записи администратора – «root» и пароль – «admin». Позже крайне желательно заменить их на более сложные.

Вторым пунктом вы попадете на страницу «System Information», где отображены главные характеристики устройства и некоторые настройки – использование памяти, параметры точки доступа Wi-Fi, основные службы и прочее.

Чтобы изменить язык интерфейса с английского на русский, перейдите в раздел «Administration» на вкладку «Management» и из списка языков «Language Selection» выберите «Russian». Для сохранения нажмите «Save».

Кстати, на этой же вкладке – в разделе «Router Password», находятся настройки изменения логина и пароля для входа в админ-панель. Имейте в виду, если вы не поменяли их сразу.

Интернет и точка доступа Wi-Fi

Теперь перейдем к главному – настройке Интернета. Часто для этого достаточно подключить к маршрутизатору кабель провайдера, но бывает, что это не работает. Тогда приходится вбивать настройки вручную. Не пугайтесь, это просто и занимает не больше 3 минут.

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

Откройте в DD-WRT раздел «Setup» – «Basic setup» – «WAN setup» (Основные настройки – настройки WAN) и заполните его данными, полученными от провайдера. Если сделаете всё по правилам, у вас появится доступ в Интернет.

Если ваш провайдер использует подключение типа VPN PPTP, L2TP или PPPoE, придется сделать еще несколько дополнительных настроек. При подключении через PPTP и L2TP зайдите в раздел «Services» на вкладку «VPN» и установите следующие значения (показано на примере PPTP):

  • PPTP Client Options – enable (включить).
  • Server IP op DNS client – прописать адрес, полученный от провайдера.
  • MPPE encryption – очистить поле.
  • User name – указать имя пользователя из договора с провайдером.
  • Password – указать пароль из договора с провайдером.

Остальное оставьте по умолчанию.

При подключении типа PPPoE на той же самой вкладке необходимо отключить PPTP Client Options, то есть присвоить ему значение disable. А на вкладке «Setup» – «Basic setup» – «Network setup» снять флажки возле пунктов «Use DNSMasq for DHCP» и «Use DNSMasq for DNS». Остальное – по инструкции провайдера и умолчанию.

После того как на роутере заработал Интернет, можно переходить к настройке точки доступа Wi-Fi. DD WRT дает возможность создавать изолированные беспроводные подключения для разных клиентов, например, для хозяев и гостей, взрослых и детей, компьютеров и устройств умного дома и т. д.

Настройки беспроводных сетей находятся в разделе «Wireless». Кстати, на момент установки прошивки точка доступа, названная, «dd-wrt» уже создана и запущена. Однако она открыта всем ветрам и непрошеным гостям, поскольку не использует парольную защиту и шифрование.

Основные параметры беспроводной сети задаются на вкладке «Basic setup». Здесь необходимо выставить следующее:

  • Wireless Mode – AP (access point).
  • Wireless Network Mode – оптимально Mixed (все поддерживаемые стандарты IEEE11), чтобы могли подключаться и новые, и старые устройства, работающие по стандартам IEEE 802.11a/b/g.
  • Channel Width (ширина канала) – в зависимости от поддержки вашим роутером. С этой настройкой можно поэкспериментировать.
  • Wireless Channel (канал беспроводной сети) – тоже можно экспериментировать или сразу выбрать самый свободный.
  • Wireless Network Name (SSID) – имя точки доступа. Можно любое.
  • Wireless SSID Broadcast (вещание имени точки доступа) – при желании можно отключить.

Остальное оставьте по умолчанию. Сохраните изменения и переходите на вкладку «Wireless security».

Здесь:

  • Security Mode (режим защиты или тип шифрования) – оптимально WPA2, но если к сети будут подключаться старые устройства, например, ПК на базе Windows XP, выбирайте WEP.
  • WPA Algorithms (алгоритм шифрования) – оптимально AES.
  • WPA Shared Key – пароль для подключения к точке доступа. Любой.

Некоторые дополнительные функции

Ну вот, с основным покончено. Рассмотреть все прочие возможности чудо-прошивки, к сожалению, не выйдет, ведь их огромное количество. При желании эту информацию можно найти на официальном сайте и форумах DD WRT. А мы ограничимся несколькими функциями, которые могут пригодиться в домашней сети. Итак…

Блокировка рекламы на сайтах

Для включения функции блокировки рекламы зайдите в раздел «Services» и откройте вкладку «Adblocking». Далее:

  • Установите параметрам «Transparenter Mode» и «Privoxy» значение enable (включено).
  • Если хотите, чтобы на некоторых сайтах реклама отображалась, внесите их в поле, расположенное ниже (белый список).

Настройка вступает в действие сразу после сохранения.

IPTV и Multicast

  • Зайдите в раздел «Security» и установите параметру «SPI Firewall» значение disable (отключено).
  • Откройте раздел «Administration» зайдите во вкладку «Commands». Впишите или скопируйте в поле следующий набор команд. Нажмите «Save Startup».
  • Перезапустите роутер.

USB, NAS-сервер, Samba

Чтобы включить поддержку USB, откройте вкладку «Services» – «USB Support». Установите значение enable следующим параметрам:

  • Core USB Support.
  • USB Printer Support (если используете USB-принтер).
  • USB Storage Support (поддержка накопителей).
  • Automatic Drive Mount (подключать USB-устройства автоматически).

Остальное можете оставить по умолчанию.

Для доступа к USB-накопителям, подключенным к маршрутизатору, с компьютеров, TV, мобильных гаджетов и т. п. откройте в этом же разделе вкладку «NAS» и активируйте параметр «Samba». В поле «Server String» впишите «NAS» или другое имя роутера, которое будет отображаться в сетевом окружении, а в «Workgroup», соответственно, наименование рабочей группы.

После этого USB-накопитель будет отображаться на ваших устройствах как сетевой диск.

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

Введение

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

WARNING

Будь внимателен! Неправильная прошивка роутера может превратить его в бесполезный кусок железа и пластмассы.

На данный момент наиболее популярными прошивками считаются следующие:

Установка и начальная конфигурация OpenWRT

Первым делом необходимо прошить роутер. В моем случае в этом не было ничего сложного, главное — выбрать правильный вариант прошивки. Для этого необходимо внимательно смотреть на название — для обновления со стоковой прошивки TP-LINK я использовал файлopenwrt-ar71xx-generic-tl-wdr4300-v1-squashfs-factory.bin. В названии закодированы семейство чипсетов (ar71xx), конфигурация ядра (generic), название и версия аппаратной части роутера, тип ФС и для какой именно цели предназначен образ — прошивка с нуля (factory) или обновление существующей OpenWRT (sysupgrade). Ни в коем случае не используй sysupgrade для установки со стоковой прошивки — так ты просто превратишь роутер в кирпич. И вообще, поскольку для каждого роутера все индивидуально, читай внимательно соответствующий сайт.

Но вот ты прошил роутер и при этом умудрился его не окирпичить. Заходи по Telnet (адрес по умолчанию 192.168.1.1) и настраивай WAN. У меня он довольно долго не подключался, и пришлось разбираться с этим вопросом. Оказалось, что некоторые провайдеры (в частности, ТТК, к которому я подключен), кроме проверки по MAC-адресу, требуют еще и совпадения с этим MAC-адресом ClientID. В итоге я использовал следующие команды (здесь и далее, чтобы не путаться, где именно исполнять команды — на компе или на роутере, роутер будет обозначаться как openwrt#):

openwrt# uci set network.wan.proto=dhcp  openwrt# uci set network.wan.broadcast=1  openwrt# uci set network.wan.macaddr=09:aa:bb:cc:dd:ee  openwrt# uci set network.wan.clientid=0109aabbccddee  openwrt# uci commit network  openwrt# /etc/init.d/network restart  

UCI (United Configuration Interface) представляет собой попытку сделать унифицированные файлы (и средства) конфигурации. Все настройки UCI хранятся в каталоге /etc/config. Для тех служб, которые используют свои файлы конфигурации, скрипты OpenWRT при запуске генерируют их на основе шаблона и файла UCI — так, например, сделано с Samba. Да, возможно, это уменьшает гибкость, зато в большинстве случаев упрощается конфигурирование тех или иных параметров, путем ли редактирования файлов конфигурации (с использованием vi) или же используя утилиту uci.

Вернемся к командной строке. Что делают первые три команды, в общем-то, ясно: первая устанавливает протокол (возможно выбрать статический IP, PPP, PPPoE, L2TP и еще несколько менее используемых вариантов), вторая устанавливает флаг broadcast в пакете dhcp, третья устанавливает MAC-адрес для интерфейса. Четвертая команда устанавливает поле ClientID в пакете dhcp (option 61) равным MAC-адресу. Последние две команды используются для сохранения изменений и перезапуска сети.

После этого (и после обязательной проверки работоспособности) я бы посоветовал поставить веб-интерфейс, так как базовые настройки с ним реально проще рулить. Для OpenWRT таковых существует как минимум две. Поставим LuCI — де-факто стандартный веб-интерфейс:

openwrt# opkg update  openwrt# opkg install luci  openwrt# /etc/init.d/uhttpd enable  openwrt# /etc/init.d/uhttpd start  

И ставим пароль root.

openwrt# passwd  

Замечу, что после установки пароля ты уже не сможешь использовать Telnet, только SSH. Теперь зайди в веб-интерфейс и настрой необходимые тебе параметры.

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

Веб-интерфейс OpenWRT
Веб-интерфейс OpenWRT

Создание extroot

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

openwrt# opkg update  openwrt# opkg install block-mount kmod-usb-storage kmod-scsi-generic kmod-fs-ext4 e2fsprogs  

Запиши текущий вывод команды mount — он тебе еще пригодится в дальнейшем.

После этого подготовь и подмонтируй флешку (ее ты можешь отформатировать в ext3 как на настольном Linux, так и в самом OpenWRT) и клонируй на нее текущий оверлей:

openwrt# mkdir /mnt/flash_overlay  openwrt# mount /dev/sda1 /mnt/flash_overlay  openwrt# tar -C /overlay -cvf - . | tar -C /mnt/flash_overlay -xf -  

Только после этого ты можешь редактировать файл /etc/config/fstab, записывая в него параметры для использования extroot:

<...>  config mount      option target /overlay      option device /dev/sda1      option fstype ext3      option options rw,sync      option enabled 1      option enabled_fsck 0  

После этого перезагрузись. Если тебе необходимо вернуть все обратно, ты находишь в ранее записанном выводе команды mount оригинальное устройство с оверлеем, монтируешь его и ставишь в файле etc/config/fstab на смонтированном старом оверлее option enabled в 0.

Редактирование файла /etc/config/fstab для включения extroot
Редактирование файла /etc/config/fstab для включения extroot

Качаем торренты и настраиваем Samba

Раз уж роутер практически не выключается и места для установки стороннего ПО в нем теперь достаточно, грех не использовать его в качестве загрузчика торрентов. Но сперва нужно настроить файлообмен. Поскольку сеть у меня гетерогенная, выбор пал на Samba.

openwrt# opkg update  openwrt# opkg install samba36-client samba36-server luci-app-samba  openwrt# rm /tmp/luci-indexcache  

В задачи статьи не входит детальное описание настройки Samba, а с веб-интерфейсом ты способен разобраться и сам. Несколько замечаний, однако, стоит сделать. Во-первых, на вкладке Edit template вместо «security = user» стоит написать (хотя бы для начала) «security = share», во-вторых — дай гостевой доступ к расшаренным папкам, в-третьих — смени владельца расшариваемого каталога на nobody и, наконец, не забудь запустить саму службу:

openwrt# /etc/init.d/samba enable  openwrt# /etc/init.d/samba start  

Теперь перейдем к настройке торрент-клиента. В качестве его будет выступать transmission — не в последнюю очередь из-за того, что он поддерживает веб-интерфейс. Установка его стандартна:

openwrt# opkg update  openwrt# opkg install transmission-daemon transmission-web  

Рассмотрим наиболее важные опции файла конфигурации /etc/config/transmission:

config transmission  <...>      # Включает демон      option enabled '1'      # Каталог генерируемого конфига      option config_dir '/etc/transmission'      # Пользователь, от которого запускается демон. Поскольку гостевой пользователь Samba — nobody, то ставим его и здесь      option user 'nobody'      # Каталог хранения загруженных файлов      option download_dir '/home/storage/torrents/done'      # Каталог недокачанных файлов      option incomplete_dir '/home/storage/torrents/incompl'  <...>  

После этого ставим его в автозапуск и стартуем.

openwrt# /etc/init.d/transmission enable  openwrt# /etc/init.d/transmission start  

Заходим в веб-интерфейс, по умолчанию находящийся на порту 9091, грузим торрент-файл и наслаждаемся.

ФС, используемые в роутерах

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

  • SquashFS — только для чтения. Поддерживает сжатие, что немаловажно для систем с ограниченным объемом флеш-памяти.
  • JFFS2, в отличие от SquashFS, рассчитана на чтение/запись. Также поддерживает сжатие, но в меньшей степени. Журналируемая.

В случае OpenWrt эти две ФС разнесены по разным mtd-разделам и монтируются хитрым образом. Сперва SquashFS монтируется в /rom, а JFFS2 в /overlay. Затем с помощью overlayfs эти две ФС объединяются в одну и при попытке изменения файла в SquashFS изменяет его в JFFS3, обеспечивая таким образом поддержку не только чтения/записи, но и возможность загрузки в безопасном режиме для восстановительных работ.

Краткий обзор DD-WRT

DD-WRT необходимо шить с оригинальной заводской прошивки — возможность прошить из-под OpenWrt не предусмотрена. После прошивки и перезагрузки мы обнаруживаем в браузере требование сменить пароль. Оно, конечно, правильно, но непонятно — зачем скрывать под звездочками еще и имя пользователя. Установили его и сразу автоматически переходим на вкладку Status -> Sys-Info, где видим, что все отключено. Как только мы пытаемся перейти на другую вкладку, у нас спрашивают пароль. Беглый обзор вкладок дал следующую информацию о доступном ПО:

  • Samba и ProFTPD;
  • OpenVPN и PPTP;
  • nstx — позволяет создавать туннель IP over DNS, что позволяет в некоторых случаях использовать роутер как «окно» в интернет, если ты подключаешься через какую-нибудь платную точку доступа, а денежки тебе жаль;
  • несколько вариантов HotSpot-серверов — для того случая, если ты желаешь организовать свой хотспот;
  • SIP-прокси.

Чтобы включить доступ к optware (дополнительному ПО), придется повозиться. Замечу, что в некоторых версиях прошивки есть раздел JFFS2, а в некоторых нет, так что лучше для этой цели использовать флешку. DD-WRT подходит тому, кто хочет быстро получить доступ к отдельным функциям, которые в большинстве роутеров отсутствуют, но не желает заморачиваться с установкой дополнительного ПО. В общем-то, его возможности покрывают процентов 90 пользователей альтернативных прошивок. Те же, у кого потребности слишком специфичны или кто желает получить больший контроль над роутером, вполне могут разобраться и с другими прошивками.

Веб-интерфейс DD-WRT
Веб-интерфейс DD-WRT

Настройка DLNA-сервера

Да, твой роутер может выступать и в этом качестве. Если коротко, DLNA-сервер раздает различный медиаконтент в сети. Многие современные мультимедиаустройства, такие как телевизоры, игровые приставки, музыкальные центры и Blu-ray-плееры, поддерживают этот стандарт. В OpenWRT есть minidlna — легковесный и несложный в настройке DLNA-сервер, который мы сейчас и установим:

openwrt# opkg update  openwrt# opkg install minidlna  

Файл конфигурации находится в стандартном для UCI-конфигов месте —/etc/config/minidlna. Разберем его основные параметры:

# Не опечатка — действительно зачем-то повторяется  config minidlna config  <...>      option enabled '1'      # Какой интерфейс слушаем      option interface 'br-lan'      # Каталог БД minidlna и логи      option db_dir '/home/storage/minidlna/db'      option log_dir '/home/storage/minidlna/log'      # Каталоги с медиафайлами      list media_dir 'A,/home/storage/audio'      list media_dir 'V,/home/storage/video'      list media_dir 'P,/home/storage/photo'  <...>  

В принципе, после этого minidlna можно уже запускать, предварительно скопировав медиафайлы в нужные папки.

openwrt# /etc/init.d/minidlna enable  openwrt# /etc/init.d/minidlna start  

Однако есть небольшой нюанс. Захотел ты добавить музыку или видео, скопировал — а на плеере она не появилась. Дело здесь в том, что по умолчанию minidlna использует inotify, который по загадочным причинам в нем не работает. Чтобы обновить список, необходимо остановить запущенный демон и произвести ручное сканирование, набрав следующую команду:

openwrt# minidlna -R -f /tmp/minidlna.conf  

Сборка своего собственного образа OpenWRT

Если тебя по какой-то причине не устраивает стандартный образ OpenWRT, то можно собрать свой, для чего необходимо получить тулчейн и OpenWRT Buildroot. Прежде всего установим соответствующие пакеты:

$ sudo apt-get install subversion build-essential git-core libncurses5-dev zlib1g-dev gawk  

Собирать мы будем текущую нестабильную версию OpenWRT и материалы (feeds). Скачаем их.

$ mkdir openwrt && cd $_  $ svn co svn://svn.openwrt.org/openwrt/trunk/  $ cd trunk  $ ./scripts/feeds update -a && ./scripts/feeds install -a  

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

$ make prereq  
Сборка необходимых инструментов
Сборка необходимых инструментов

Если все нормально, можем конфигурировать образ. Для чего вводим

$ make menuconfig  

И выбираем, точно так же, как и при конфигурации ядра, нужные тебе вещи. Единственное отличие от «ядерного» menuconfig — звездочка означает, что объект будет встроен в образ, а M — что будет доступен в виде пакета ipk, который позже можно будет установить отдельно. Сильно увлекаться, однако, не советую — помни о том, что места на внутренней флеш-памяти не просто мало, а очень мало.

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

  • Выбор конкретной целевой системы и профиля. Их необходимо указывать как можно точнее — если укажешь неправильно, ты рискуешь превратить роутер в кирпич.
  • Выбор пакетов. Здесь действует правило — чем меньше ты встроишь их в образ, тем лучше. Поэтому выбирай только самые необходимые. Я бы посоветовал включить LuCI.
  • Настройки сборки. Тут ты можешь разве что в разделе Global build settings включить/выключить IPv6. В Advanced configuration options стоит лезть, только когда ты четко знаешь, для чего, к примеру, служит та или иная опция GCC, достаточна ли мощность процессора для включения защиты стека и так далее.
  • Выбор модулей ядра. Тут те же самые рекомендации, что и при выборе пакетов. Загляни в секцию USB Support и включи опцию kmod-usb-storage. Остальные включай по желанию.

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

$ make kernel_menuconfig  
Выбор опций при сборке кастомной прошивки
Выбор опций при сборке кастомной прошивки

Учти, что если ты потом сделаешь очистку, то конфиг ядра не очистится. Для его очистки набери

$ svn revert -R target/linux/  

После всего этого можешь смело набирать команду

$ make  

для сборки образа. Это займет длительное время, по истечении которого в каталоге bin/появятся файлы образа.

Существует несколько путей для того, чтобы залить прошивку. Самый легкий из них — через веб-интерфейс, и описывать его я смысла не вижу. Второй способ — использовать утилиту scp на хостовом компьютере вкупе с mtd на роутере для залития образа и его прошивки. Поскольку сейчас стоит уже OpenWRT, то можно прошивать как factory-, так и sysupgrade-образ. В моем случае команды были такими:

$ scp bin/ar71xx/openwrt-ar71xx-generic-tl-wdr4300-v1-squashfs-factory.bin root@192.168.1.1:/tmp  openwrt# mtd -r write /tmp/openwrt-ar71xx-generic-tl-wdr4300-v1-squashfs-factory.bin firmware  

Вторая команда шьет (write) свежескачанную прошивку в раздел, именуемый firmware, и вслед за этим роутер перезагружается (-r). В случае обновления OpenWRT со стабильной версии до текущей я бы советовал не восстанавливать сохраненную конфигурацию, а настроить все заново — у меня по каким-то причинам старые конфиги не подошли к свежескомпилированной версии.

Копирование прошивки в роутер
Копирование прошивки в роутер

Безопасность альтернативных прошивок

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

  • Отсутствие пароля в OpenWRT. И если в веб-интерфейсе (который обычно еще нужно устанавливать) хоть как-то предупреждают об этом, то при заходе по Telnet молчат. Хотя можно было бы написать скрипт, который требовал бы установки пароля, а после его установки отключал Telnet как таковой.
  • Отсутствие тайм-аута при неправильных попытках ввода пароля. В домашней сети это вроде и ни к чему… но можно подцепить малварь, которая атакует роутер и перешивает его. Пользователь может долгое время не подозревать, что он в ботнете, — и даже переустановка ОС, понятно, ничего не даст.
  • Отсутствие проверки подлинности пакетов в OpenWRT. Пакеты ipk не имеют цифровой подписи. В том случае, если репозиторий будет скомпрометирован (или хотя бы произойдет подмена DNS-адреса), это будет чревато заражением роутеров малварью.
  • В DD-WRT Wi-Fi по умолчанию включен и никак не шифруется, что само по себе рискованно, а при выключенном SSH рискованно вдвойне.

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

WWW

Всевозможная документация по OpenWrt: wiki.openwrt.org/doc/start

Заключение

Альтернативные прошивки дают большую свободу для пользователей. Некоторые из них, такие как DD-WRT, Tomato, прошивка от Олега, заточены под нужды большинства — в них есть поддержка NAS, VPN, есть принт-серверы… Другие же (Open/LibreWRT) содержат минимально необходимые возможности, но при этом позволяют их расширять и затачивать под свои нужды. Возможно, прочитав эту статью, ты захочешь стать одним из разработчиков прошивок, благо область довольно новая и толком до конца не освоенная. Дерзай.

Используемые источники:

  • https://habr.com/post/98812/
  • https://f1comp.ru/internet/proshivka-dd-wrt-dlya-routera-ustanovka-nastrojka-vozmozhnosti/
  • https://xakep.ru/2013/10/26/alternative-router-firmware/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации