nFonts
Прошивка DD-WRT выполнена на базе Linux и представляет собой миниатюрную операционную систему, появляется много расширенных настроек, которые намного логичнее расположены. Возможность порезать канал с приоритетами по сервисам (QoS). Можно запретить сайты по адресу страницы или просто по доменному имени.
В режиме WiFi может быть Точкой Доступа, Клиентом, Мостом и Репитером. Увеличить мощность WiFi сигнала теперь не проблема. Теперь этот маршрутизатор можно использовать для организации моста на дальние линки вместо 2100АР — экономия в два раза.
К достоинствам отнесем еще возможность поднять VPN сервер, русский язык, расширенная статистика потребления трафика WAN в виде графика, появился telnet и возможность загружать пользовательские скрипты.
В данной статье речь пойдет только о роутере dir300 ревизии В1. Переверните маршрутизатор и посмотрите на нижнюю поверхность, где на стикере будет указано его аппаратная ревизия (ищем строчку H/W Ver: B1). Эта модель отличается от более старой как внешним видом, так и версией прошивки (начинается от 2.00), внимательно посмотрите на фото вверху. Основное отличие ревизий А1 и В1 это чип на котором роутер основан, в нашем случае роутер H/W Revision B1 и основан на чипе Ralink RT3050. Кстати аппаратное исполнение WiFi роутера dir-300NRU точно такое же как у dir-600, который является полным аналогом 300NRU и производится для европейской зоны.
Прошивка WiFi роутера D-Link DIR-300NRU Rev. B1
Установка прошивки DD-WRT на D-Link DIR-300 Revision B1 выполняется через стандартный web интерфейс роутера. Далее по пунктам:
1. Загрузите прошивку с официального сайта http://dd-wrt.com/site/support/router-database вбив в поиск DIR-300 B1. Нам нужен файл именно dlink-dir300b-factory-webflash.bin
2. Подключаем dir-300 ‘прямым’ сетевым кабелем из комплекта (любой из 4-х LAN портов роутера) с компьютером.
Назначьте в свойствах подключения по локальной сети на компьютере IP адрес 192.168.0.15 и маску подсети 255.255.0.0
3. Запускаем браузер (лучше всего использовать FF) и заходим в web интерфейс, набрав в адресной строке http://192.168.0.1
Вводим логин и пароль, для нового роутера логин по умолчанию — admin, пароля нет (пусто) и код подтверждения с рисунка. Если настраивали, извольте ввести свои пароли.
Переходим на вкладку Maintenance и далее Firmware Update, нажимаем “browse” ->ищем у себя скачанный файл dlink-dir300b-factory-webflash.bin жмем “Upload”
4. В течении нескольких минут, пока DIR300 прошивается, нельзя отключать питание и всячески прерывать процесс. Для надежности и сохранения некоторого количества нервов, советую проделывать эту операцию подключив роутер и компьютер через UPS (бесперебойник).
5. После прошивки маршрутизатор уйдет в перезагрузку и станет доступным по адресу 192.168.1.1. Введем его в адресную строку браузера и увидим web-интерфейс DD-WRT. Если страничка не загружается, попробуйте очистить кэш браузера, закрыть и снова открыть. Логин и пароль прошивки DD-WRT — root/admin.
Обновление версии DD-WRT
Для последующего обновления прошивки от DD-WRT следует использовать файл dir300-dir300b-revb-ddwrt-webflash.bin. Качаем здесь http://dd-wrt.com/site/support/router-database вбив в поиск DIR-300 B1.
1. Открываем web-интерфейс DD-WRT в браузере, по умолчанию он находится по адресу 192.168.1.1
2. Выбираем вкладку Administration –> жмем “Firmware Upgrade”
3. Далее “browse” –> выбираем скаченный файл “dir300-revb-ddwrt-webflash.bin” –> “Upgrade”
Через несколько минут роутер перезагрузится и обновит web страницу. Рекомендую после прошивки обесточить роутер и снова включить (некий reset по питанию).
Возврат на официальную прошивку D-Link
Вернуть официальную прошивку также не составляет труда и алгоритм выполнения точно такой же как в пункте — “Обновление версии DD-WRT”. Естественно нам надо иметь заранее подготовленный файл прошивки, качаем — dir300b_v2.05_abnj.bin с официального FTP сервера D-link ftp://ftp.dlink.ru/pub/Router/DIR-300_NRU/Firmware/ , выбрав последнюю версию.
Откат на заводскую прошивку с помощью Emergency Room
Иногда случаются ситуации, когда вернуться на заводскую прошивку не получается методом описанным выше. В этом случае используем Emergency Room.
1. Выполняем сброс до factory reset, либо через web-интерфейс DD-WRT, либо кнопкой reset.
2. Убираем все ethernet кабеля, оставляем только соединение LAN1 роутера –> ПК. Всегда используем “прямой” провод (синий из комплекта).
3. В свойствах к сетевому адаптеру компьютера прописываем статический адрес 192.168.0.15, маску подсети 255.255.0.0
4. Вынимаем штекер блока питания из роутера, нажимаем кнопку reset, и не отпуская кнопки, вставляем обратно питание, ждем загрузки роутера около 15 секунд и только потом отпускаем кнопку.
5. Теперь быстро открываем браузер, вводим http://192.168.0.1 и перед нами Emergency room. Выбираем файл прошивки dir300b_v2.05_abnj.bin и жмем “Upload Now”.
Взято отсюда и не много изменено
Перепрошивка WiFi-роутера от D-Link прошивкой dd-wrt из-под Linux.
Стал у бедного админа виснуть роутер от D-Link, модель DIR-400.
И стал админ искать пути решения проблемы.
Погуглив полчаса наткнулся на прошивку от dd-wrt.com.
Поглядел на её возможности, обрадовался, и стал искать мануалов — как же всё таки эту прошивку залить (ибо стандартный прошивальщик, ребятами из D-Link писаный, не годится).
Нашёл мануал по заливке прошивки через DBG-console. Но вот беда — мануал на виндовых юзеров рассчитан, а винды под рукой нету, только Линукс праведный…
Ну, да ладно. Разобрался админ. Детали — под катом.
DBG-console
Есть у продутов от D-Link такая интересная фича — при включении железки в электросеть загрузчик на 2 секунды (значение по-умолчанию) поднимает сервер telnet на порту 9000.
Если за 2 секунды успеть залогиниться и послать железяке ‘^C’ — процесс загрузки остановится и мы получим доступ в инженерную консоль, в которой можно всякие интересные штуки делать — например, залить неофициальную похаченую linux-based прошивку. Приступим.
Подготовка
Немного теории:
Оговорюсь сразу — я дёргал питание роутера раз 20, с паузами 10-20 секунд, пока смог таки заставить железяку отдать мне инженерную консоль. В принципе это безопасно — достаточно дождаться полной загрузки роутера, и питание можно снова выдёргивать.
Ещё нюанс — линуховая версия telnet напрочь отказывается слать ‘^C’ по нажатию Ctrl-C вв момент подключения, пришлось включать моск — слать не один символ, а два, примерно так: при нажатом Ctrl жмём сначала V, потом C, отпускаем Ctrl.
И ещё — не бойтесь опечататься в инженерной консоли, все команды проходят валидацию, консоль просто не даст вам опечататься.
Приступим к практике:
Во-первых нам понадобится tftp сервер.
Ставим, кто как умеет (я юзал yum):
По-умолчанию tftp дёргается из xinetd, посему нужно немного подредактировать /etc/xinetd.d/tftp: выставить параметр disable = no и по вкусу отредактировать корневую директорию сервера (по-умолчанию — /tftpboot/, я её не менял).
Не забываем рестартануть xinetd.
Далее, идём сюда: dd-wrt.com/dd-wrtv3/dd-wrt/downloads.html
Там внизу — нечто вроде файлового менеджера, идём в директорию /stable/dd-wrt.v24 SP1/Consumer/Dlink/DIR-400 и качаем файлы linux.bin и dir400-firmware.bin в директорию /tftpboot/ (ну или на что вы там её изменили в конфиге).
Выдёргиваем из подопытного роутера все Ethernet-кабеля, отключаем всех WiFi-клиентов, втыкаемся в один из LAN-портов железки.
Назначаем своей машине статический IP 192.168.0.2, роутеру — 192.168.0.1.
Начинаем веселье
Дальнейшие действия требуют сосредоточенности.
Набираем в консоли
telnet 192.168.0.1 9000 (Enter пока не жмём, просто набираем для экономии времени — помните про 2 секунды?)
Выдёргиваем питание из роутера, ждём пару секунд, втыкаем питание, считаем до трёх, жмём Enter…
Далее идёт мой telnet session transcript, жирным выделено то, что я вводил в консоли, курсивом — мои комментарии.
[root@localhost ~]# telnet 192.168.0.1 9000
Trying 192.168.0.1. (после появления этой надписи я нажал Ctrl и начал попеременно жать V и C, это видно далее)
^C
Connected to 192.168.0.1.
Escape character is ‘^]’.
^C (всё ещё Ctrl-V-C)
RedBoot> RedBoot> ^C
^C (это уже по инерции)
RedBoot>(тут уже чудом начал работать полноценный Ctrl-C, нажал два раза. )
RedBoot>
RedBoot> ip_address -l 192.168.0.1/24 -h 192.168.0.2 (назначаем роутеру локальный IP и говорим, что tftp-сервер живёт на 0.2)
IP: 192.168.0.1/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.0.2
RedBoot> fis init (инициализируем прошивальщик)
About to initialize [format] FLASH image system — continue (y/n)? y (после нажатия y — ждём, пока появится приглашение консоли)
*** Initialize FLASH Image System
And a descriptor for the configuration data size = 10000
. Erase from 0xbffe0000-0xbfff0000: .
. Program from 0x80ff0000-0x81000000 at 0xbffe0000: .
RedBoot> load -r -b 0x80041000 linux.bin (после этой команды где-то с минуту ждём, пока бинарь зальётся по tftp на железку)
Using default protocol (TFTP)
Raw file loaded 0x80041000-0x803bafff, assumed entry at 0x80041000
RedBoot> fis create linux (снова ждём 🙂 )
. Erase from 0xbfc40000-0xbffba000: .
. Program from 0x80041000-0x803bb000 at 0xbfc40000: .
prog_ok
flash_addr = 0xbfc40000
mem_addr = 0x80041000
entry_addr = 0x80041000
length = 0x37a000
img_size = 0x37a000
. Erase from 0xbffe0000-0xbfff0000: .
. Program from 0x80ff0000-0x81000000 at 0xbffe0000: .
RedBoot> fconfig (прошивка установлена, поздравляю. Теперь проведём базовую конфигурацию.)
Run script at boot: true (Enter)
Boot script:
.. fis load -l vmlinux.bin.l7
.. go
Enter script, terminate with empty line
>> fis load -l linux
>> exec
>> (Enter)
Boot script timeout (1000ms resolution): 2 (тут можно задать значение побольше — тогда не нужны будут танцы с telnet и ^C при последующих издевательтвах 🙂 Просто будет больше времени на то, чтоб прервать процесс загрузки)
Use BOOTP for network configuration: false (Enter)
Gateway IP address: (Enter, пока оставляем пустым, потом в веб-морде его всё равно ещё раз прописывать)
Local IP address: 192.168.0.1 (Enter)
Local IP address mask: 255.255.255.0 (Enter)
Default server IP address: 192.168.0.100 (Enter)
Console baud rate: 9600 (Enter)
GDB connection port: 9000 (Enter)
Force console for special debug messages: false (Enter)
Network debug at boot time: false (Enter)
Update RedBoot non-volatile configuration — continue (y/n)? y
. Erase from 0xbffe0000-0xbfff0000: .
. Program from 0x80ff0000-0x81000000 at 0xbffe0000: .
RedBoot> reset (после этой команды роутер уйдёт в ребут)
Всё, после ребута роутер будет доступен по IP 192.168.1.1 через http и telnet (потом можно будет SSH включить) с полноценным Linux унутре 🙂
Маленький нюанс: сначала нужно зайти на роутер через http и задать имя пользователя и пароль — только потом можно будет попасть на роутер через telnet.