В заметке про установку прошивки dd-wrt на D-Link DIR-620 я упоминал о замене стандартного загрузчика роутера на загрузчик от Zyxel Keenetic, после чего становится возможной загрузка прошивок в DIR-620 при момощи tftp. Нужно это может быть во-первых для того, чтобы не пересобирать сторонние прошивки в формат, понятный загрузчику, доступному через веб-интерфейс; во-вторых — для восстановления прошивки роутера, если что-то пошло не так и веб-интерфейс недоступен.
Поскольку процесс установки прошивки через tftp под Windows детально рассмотрен на сайте deadc0de, а я в основном использую Linux-машины дома, опишу загрузку dd-wrt в DIR-620 через tftp именно для Linux.
Как загрузить прошивку dd-wrt при помощи tftpd
- Для начала устанавливаем tftp-сервер — либо сам tftpd (работает в интерактивном режиме), либо atftp(клиент, можно использовать для проверки работы сервера)/atftpd(сервер), работающий в неинтерактивном режиме. atftp для загрузки прошивки удобней, чем tftp:
- Выключаем питание роутера, соединяем кабелем порт LAN1 роутера с выходом сетевой карты компьютера, в моем случае проводной интерфейс имеет имя eth0 (при необходимости изменить имя сетевого интерфейса в Linux можно за пару минут);
- Меняем IP-адрес и маску подсети на компьютере, с которого будет устанавливаться прошивка:
ifconfig eth0 10.10.10.3 netmask 255.255.255.0
Команду нужно выполнять от суперпользователя, например при помощи sudo; - Набираем в консоли следующую команду:
atftpd --tftpd-timeout 60 --verbose --trace /путь/к_прошивке
- Включаем питание роутера, 5 секунд держим нажатой кнопку Reset, на компьютере запускаем набранную выше команду, после этого отпускаем Reset — должна начаться загрузка прошивки.
Настройка atftpd
После установки ftp-сервера atftpd (sudo apt-get install atftpd
) может возникнуть необходимость выполнить некоторые настройки для его корректной работы. Например — создать рабочую директорию, которая будет корневой для сервера:
sudo mkdir /var/aftpd_dir
sudo chmod -R 777 /var/aftpd_dir
sudo chown -R nobody:nogroup /var/aftpd_dir
Затем отключаем запуск демона через «супер-сервер» inet.d, изменив значение переменной USE_INETD в файлах /etc/default/atftpd и /etc/init.d/atftpd с TRUE на FALSE:
#USE_INETD=true
USE_INETD=false
После этого ftp-сервер можно будет запускать с помощью команды /etc/init.d/atftpd start
.
Постоянно используемые опции запуска можно перечислить в переменной OPTIONS, находящейся в файле /etc/init.d/atftpd. Например:
OPTIONS="--user nobody --bind-address 0.0.0.0 --no-multicast /var/aftpd_dir"
--user nobody
— от имени какого пользователя будет запущен демон;
--bind-address 0.0.0.0
— ftp-сервер будет обрабатывать запросы, поступающие на указанный ip-адрес;
--no-multicast
— сервер не будет реагировать на широковещательные запросы, обрабатывая только прямые;
/var/aftpd_dir
— созданная ранее рабочая директория для сервера.
Остаётся только запустить сервер и проверить его работоспособность, подключившись к нему tftp 127.0.0.1
. Тестовый файл (test_file), расположенный в директории /var/aftpd_dir, можно получить при помощи команды put:
tftp> put ~/test_file /test_file
Sent 10 bytes in 0.0 seconds
tftp>
есть ещё tomato [ссылка]
Народ, подскажите пожалуйста, как можно прошить D’link DIR-620 прошивкой dd-wrt от Asus RT-N13U. Роутер не цепляет эту прошивку, ни через web-интерфейс, ни при помощи TFTP.
История начиналась так: есть на руках роутер D’link DIR-620 с завода стояла прошивка 1.0..6. Прошил загрузчик, как сказано на этом сайте, потом по web-интерфейсу залил прошивку dd-wrt от Asus RT-N13U, всё прошилось всё нормально. Тут чёрт меня дёрнул прошить последнюю родную прошивку 1.3.0, прошивал через TFTP, аппарат прошился, но прошивка не понравилась, хочу вернуть прошивку dd-wrt от Asus RT-N13U, а роутер её не цепляет ни каким из выше изложенных способов. ПОМОГИТЕ!!!
Может у кого есть прошивка 1.0..6, попробовать её перезалить?!
Есть официальная прошивка от D-Link для отката с 1.3.0 на 1.2.102. Также стоит проверить настройки фаервала и антивируса, если они используются.
atftpd —tftpd-timeout 60 —verbose —trace /путь/к_прошивке
в ответ на команду
[directory] must be a world readable/writable directories.
By default /tftpboot is assumed.
***
что сделать?)
Подозреваю, что надо права на директорию поменять, чтобы чтение-запись были разрешены всем.
chmod a+rw [directory]
Я новичок в линуксе.
Подскажите пожалуйста как настроить atftpd корректно на ubuntu?. sudo apt-get install atftpd я смог.
В чём именно проблема-то заключается?
Вкратце работа с atftpd после установки выглядит так:
Если не нужен автоматический запуск aftpd при загрузке компьютера, меняем в файле /etc/default/atftpd строку
USE_INETD=true
наUSE_INETD=false
. После этого ftp-сервер можно будет запускать командойsudo invoke-rc.d atftpd start
.Создаёте директорию, из которой aftpd будет разадавать файлы:
sudo mkdir /aftpd_dir
sudo chmod -R 777 /aftpd_dir
sudo chown -R nobody /aftpd_dir
Затем всё в том же настроечном файле /etc/default/atftpd указываете путь к директории, дописав её в конец переменной OPTIONS:
OPTIONS=" /aftpd_dir"
, после чего перезапустить демона (sudo /etc/init.d/atftpd restart
илиsudo invoke-rc.d atftpd start
).Остальные опции запуска можно взять из мана 🙂 Дописываются они в ту же переменную OPTIONS, чтобы не указывать их каждый раз в командной строке.