12 лет назад 23 марта 2012 в 21:11 1368

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

Некоторое время назад судьба, представшая на этот раз в образе мудрой Совы, сделала мне подарок (Сове и ее свите – респект. – Прим. автора). Это был роутер TP-Link TL-WR1043ND с четырьмя гигабитными портами LAN, одним портом WAN, модулем Wi-Fi (IEEE 802.11b / g / n), а также портом USB 2.0. Недели три он провалялся без дела, т. к. мой домашний «сервак» под управлением FreeBSD успешно справлялся со своими обязанностями, а чтобы приладить к локалке сей чудный аппарат, требовалось радикально изменить конфигурацию сети.

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

Здесь меня ждал другой, гораздо более суровый, облом: к порту USB, как выяснилось, можно подключать только флэшки и внешние жесткие диски (скажу в скобках, что бумажная документация у этого TP-Link крайне скудная). Отсутствие возможности расшарить принтер стало вторым «звоночком»: конечно, можно было оставить устройство для печати на внутреннем сервере, но хотелось ведь сделать все красиво (смайл). К тому же я не исключаю возможности того, что когда-нибудь возникнет потребность подружить роутер с ADSL- / 3G-модемом (когда живешь в съемной квартире, нужно быть готовым ко всему).

Для порядка я прогулялся на сайт производителя (www.tp-link.com/ru) и удостоверился, что в самой свежей версии firmware от 7 декабря 2011 года нужных функций не появилось. Окончательно же добило меня обсуждение TL-WR1043ND на одном популярном «железном» форуме в Рунете, где пользователи жаловались на частые зависания и низкие скорости при соединении «по воздуху» – хотя справедливости ради отмечу, что ни с тем, ни с другим мне столкнуться не пришлось. В общем, решено было попробовать альтернативную прошивку (что, кстати, советовали и другие продвинутые владельцы коробочки).

Из всех проектов такого рода самыми известными, популярными и универсальными являются, пожалуй, два: DD-WRT (www.dd-wrt.com) и OpenWrt (openwrt.org). Оба основаны на ядре Linux и распространяются под открытыми лицензиями. Различие – в подходах. Насколько я сумел разобраться, в «голом» OpenWrt многие настройки системы приходится менять в командной строке. Я совсем не против консоли, но в данном случае мне нужно было сделать все побыстрее и с минимальными трудозатратами. Так что вариантов не осталось: только DD-WRT, который считается наиболее дружественным к пользователю.

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

Так что ограничусь описанием последнего варианта. Другой – очень важный – момент: ни в коем случае не обновляйте софт роутера с компьютера, подключенного по Wi-Fi: можете загубить девайс, а реанимация потребует нетривиальных решений и, скорее всего, специализированного оборудования. Поэтому запомните: запись ПО в постоянную память – только по проводному соединению! Если что, вас предупреждали.

Чтобы сменить прошивку на DD-WRT, надо, понятное дело, сначала скачать файл, содержащий образ системы. Тут все достаточно просто: на официальном сайте есть раздел Router Database. Зайдя туда, нужно в строке поиска набрать название фирмы-производителя железки, а потом выбрать из списка модель.

В описании указаны ревизии поддерживаемых железок. Для TL-WR1043ND это 1.1 и 1.4, тогда как мой конкретный экземпляр был обозначен как 1.7. В Сети нашлись свидетельства того, что и эта версия прошивается нормально (подтверждаю). Но будьте внимательны: иногда одни и те же роутеры с разными номерами ревизий имеют отличающуюся аппаратную базу. Тут надо семь раз проверить.

Для устройства, которое попало мне в руки, имеются два файла. Первый, в описании которого присутствует строка «Special image for initial flashing», предназначен для записи поверх родного софта (он-то мне и был нужен). Второй (Webflash Image) требуется при обновлении роутера, уже перепрошитого на DD-WRT.

У других моделей набор доступных для загрузки файлов будет отличен от приведенного выше, однако описать все существующие варианты не представляется возможным. В случае затруднений Google вам поможет. Имейте в виду: в сборках могут встречаться баги. Лично я перебрал несколько версий, пока не остановился на DD-WRT v24-sp2 std.

Перед заливкой новой прошивки имеет смысл запастись файлом, который позволит «откатить» firmware до заводского (мне, во всяком случае, он пригодился). Уж не знаю, по какой такой причине, но ссылки на эти образы, причем для всех роутеров, размещены исключительно в форуме на сайте DD-WRT, причем линки показываются лишь зарегистрированным пользователям. Алгоритм действий, думаю, понятен.

Приступаем к процессу. Для начала рекомендуется привести настройки роутера к заводским, т. е. выполнить т. н. hard reset. Так ли уж это необходимо, сказать трудно. Я рисковать не стал и сделал то, что советуют умные люди (хуже от этого уж точно никому не стало). Вероятно, я не сильно ошибусь, если предположу, что у большинства моделей роутеров для этого имеется отдельная (обычно – утопленная в корпусе) кнопка. Если вы ничего похожего не нашли, почитайте мануал железки – там наверняка обнаружится какая-нибудь подсказка.

Потом надо зайти в веб-интерфейс, найти раздел для обновления ПО (в моем случае – System Tools > Firmware Upgrade), скормить роутеру скачанный файл и запустить процесс. Обычно длится он не дольше 5 мин., и прерывать его нельзя, ибо, опять-таки, есть риск «запороть» аппарат. Бойтесь скачков напряжения в сети и отключений питания! UPS – совершенно необходимая вещь в хозяйстве, без шуток.
В официальной документации говорится о необходимости после смены ПО и последующей перезагрузки снова сбросить настройки к умолчальным.

В ряде гидов, которые можно найти в Сети, советуют еще произвести очистку памяти роутера. Делается это в командной строке. Надо запустить любой Telnet-клиент (рекомендую PuTTY, который проживает на страничке www.chiark.greenend.org.uk/~sgtatham/putty, – он потом еще может пригодиться), присоединиться к девайсу (умолчальный адрес 192.168.1.1), ввести логин root и пароль admin, а затем выполнить две команды: mtd -r erase nvram и потом reboot.

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

Например, в моем случае (у TL-WR1043ND 8 Мбайт энергонезависимой памяти) в систему поместился FTP-сервер ProFTPd, который доступен, что называется, прямо из коробки. А на Samba (позволяет расшаривать диски по протоколу SMB / CIFS) и на модуль поддержки файловой системы NTFS места уже не хватило.

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

Подробно процесс описан здесь: www.dd-wrt.com/phpBB2/viewtopic.php?t=83286. Предупреждаю сразу: инсталляция клиента BitTorrent – плохая идея, он сильно нагружает слабенькие процессоры роутеров, что чревато тормозами в локалке.

Я попробовал и так, и эдак (в том смысле, что при первой заливке DD-WRT эту операцию я выполнил, потом вернулся к родному firmware, затем опять прошил железку альтернативным ПО, но очистку уже не производил) и, в общем-то, никакой разницы не заметил.

Эксперимент, разумеется, на чистоту не претендует. Кроме того, я проверял только свою модель (TL-WR1043ND) и не могу ручаться за то, что у других девайсов тоже нет необходимости в проведении данной процедуры.

На заключительном этапе нужно зайти в любом браузере на сайт по тому же адресу 192.168.1.1, после чего от вас потребуют задать логин и пароль. Настоятельно рекомендую сохранить оные в надежном месте, т. к. если вы их забудете, то придется опять делать hard reset, после чего все свои настройки вы, разумеется, потеряете. Вот теперь процесс прошивки можно считать завершенным.

Переходим к настройке. Думаю, первым делом большинство пользователей озаботится переключением языка веб-интерфейса с английского на русский. Для этого надо зайти в раздел Administration (потребуется авторизация), выбрать в выпадающем списке Language Selection нужный пункт, потом нажать на кнопку Apply Settings, а затем – на «Сохранить» (как вы понимаете, изменения вступают в силу немедленно).

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

Стыд и позор, посыпаю голову пеплом. От сброса всех параметров меня спас доступ по SSH. Тут надо кое-что пояснить: дело в том, что у DD-WRT пароль одинаковый для всех протоколов (HTTP / Telnet / SSH), а вот логины – разные. В консоли имя пользователя – всегда root, а в веб-интерфейсе – то, которое вы указали при первом заходе в систему через браузер.

Его-то я и запамятовал. Если секретное слово вы все-таки знаете, то проделайте в аналогичной ситуации следующее: запустите PuTTY, соединитесь с роутером и введите в консоли две команды: nvram set http_passwd= и nvram commit (именно в таком порядке). Это «обнулит» логин и пароль, после чего их можно снова задать в разделе «Тех. обслуживание» веб-морды (см RSS). Остальные настройки останутся нетронутыми.

Теперь настало самое время заняться соединением с провайдером («Установка» > «Основные установки»). Здесь, как говорится, возможны варианты. Самый простой случай – когда сеанс связи не требует авторизации вообще (но сейчас это уже редкость, если только мы не говорим о внутренней сети какого-либо предприятия). Если судить по состоянию дел в Москве, чаще всего для «раздачи интернета» домашним пользователям по кабелю UTP применяются протоколы PPPoE / PPTP / L2TP.

Итак, надо выбрать в выпадающем списке «Тип соединения WAN» нужный пункт, а потом ввести необходимые настройки. Если это статический IP, просто прописывайте адрес, маску подсети, шлюз и сервер DNS в таблице. Когда данные берутся с сервера DHCP, то, в общем-то, и делать ничего больше не надо. Для PPoE достаточно указать правильные логин и пароль (как раз мой случай).

С двумя остальными протоколами придется повозиться. Тут мы сталкиваемся с т. н. dual access-соединением: сначала клиентский хост получает IP-адрес в локальной сети провайдера, а потом уже поверх этого соединения поднимается тоннель, который в итоге и используется при доступе в интернет. Если первый (назовем его «внутренним») айпишник – статический, то считайте, что вам повезло: надо просто прописать настройки для авторизации, после чего в идеале все должно заработать.

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

Еще раз напоминаю, что после любых изменений настройки надо сначала применить, а потом – сохранить. В некоторых версиях DD-WRT для роутеров на базе чипсетов Atheros (а мой TP-Link как раз на одном из них и построен) клонирование работает только до первой перезагрузки девайса. Лично у меня такой проблемы не обнаружилось, но, если вы вдруг с этим столкнетесь, самое разумное, наверное, – это позвонить в техподдержку попросить сменить MAC-адрес на стороне провайдера. Другие решения проблемы описаны на просторах Сети, но проверить, как они работают, я, по понятным причинам, не смог.

Когда роутер получает «внутренний» адрес по протоколу DHCP, возникают новые трудности. Например, тоннель не поднимается, потому что девайс не находит сервер PPTP / L2TP. Тогда может помочь указание не имени оного, а IP-адреса. А может и не помочь, потому что дело может быть в неправильных маршрутах. В общем, все случаи не опишешь. Поэтому подкину вам пару ссылочек на эту тему: www.dd-wrt.com/wiki/index.php/Dual_Access_PPTP и www.hideipvpn.com/2011/10/pptpl2tp-vpn-setup-for-dd-wrt.

Да, и помните: в форуме DD-WRT есть очень хороший русскоязычный раздел. С клиентами в домашней локалке, которые подключаются к роутеру по проводам, скорее всего, возни не потребуется, потому что в DD-WRT по умолчанию запущены серверы DNS-proxy и DHCP, и эта связка прекрасно работает. Правда, мне нужно было, чтобы одним и тем же машинам присваивались одни и те же адреса. Тут как раз и надо задействовать привязку MAC-адресов («Службы» > «Сервер DHCP»).

Беспроводным соединениям посвящен целый раздел под названием WiFi. Тот, кто хотя бы раз занимался поднятием точки доступа, разберется здесь и без меня. Отмечу лишь, что лучше сразу проставить галку напротив пункта «Дополнительные параметры», после чего в открывшейся части страницы изменить параметр «Управляющий домен» на «RUSSIA». Здесь же можно подстроить мощность передатчика. Обязательно загляните на вкладку «Безопасность», т. к. по умолчанию там ничего не включено. «Режим безопасности» лучше всего выставить на WPA2 Personal, «Алгоритмы WPA» – на TKIP + AES, ну и прописать ключ, разумеется.

Нужные мне настройки проброса диапазонов портов обнаружились в разделе NAT / QoS. Здесь есть также отдельные вкладки для UPnP, DMZ (т. н. демилитаризованная зона: все порты находящегося в ней хоста полностью открыты извне; пригодится владельцам игровых консолей) и QoS. Все три сервиса по умолчанию отключены. Два первых мне не потребовались, а последний я задействовал, чего и вам советую. Всего-то и надо, что включить службу, а также прописать скорость входящего и исходящего соединений (используемые единицы – Кбит/с).

Опытным путем я установил, что зарезервировать на нужды QoS лучше всего 15% пропускной способности каналов. Т. е. если ваш тариф обеспечивает, к примеру, 10 Мбит/с на вход и 5 Мбит/с на выход, то в поле Downlink надо указать 8000, а в Uplink – 4000.

Что касается принтеров и прочих USB-устройств, то для начала надо включить поддержку самой шины («Службы» > USB). Там все несложно. Если вы задействуете поддержку устройств хранения, можно приказать роутеру автоматически монтировать диски (опция Automatic Drive Mount; как видите, русификация интерфейса не полная).

Программа, которая обслуживает печатающее устройство, принимает данные на порту TCP с номером 9100. На «виндовой» машине при установке принтера надо указать системе, что он сетевой, потом прописать IP-адрес роутера, тот самый порт, выбрать протокол RAW и, наконец, модель из предложенного списка.

Как вы понимаете, это далеко не все возможности DD-WRT, о которых мне хотелось рассказать. Так что придется ограничиться кратким выводом: при отсутствии явных противопоказаний (типа провайдера с хитрыми настройками соединения и невменяемым саппортом) есть большой смысл ставить эту прошивку. Лично я получил то, что хотел: стабильную и гибко настраиваемую систему, которая полностью соответствует моим запросам и позволяет выжать максимум из железа роутера. UP

Никто не прокомментировал материал. Есть мысли?