Роутер: D-Link DIR-320 (читай тот-же самый asus wl500gp)

flashing

Содержимое flashing.cmd:

@Echo Off
:BEGIN
ping -n 1 -w 1 192.168.0.1
If errorlevel 1 Goto BEGIN
If errorlevel 0 Goto FLASH
Goto END
:FLASH
Echo *** Start Flashing ****
tftp -i 192.168.0.1 put firmware.bin
:END

via l0ner

Далее инструкция «для ленивых», ежели кому вдруг понадобится реализовать сию конструкцию, не вдаваясь в технические подробности:

  1. После последнего сброса роутера он прописался в моей сети с адресом 192.168.0.1. Ставим IP-адрес сетевой карты компьютера в 192.168.0.2.
  2. Подключаем роутер прилагаемым шнурком к сетевой карте компьютера. Важно - все остальное, ежели вдруг оно есть, от роутера отключаем!
  3. Качаем проверенную мной прошивку. Переименовываем ее в firmware.bin
  4. Скачиваем tftp2.exe. Запускаем, указываем в настройках адрес роутера (192.168.0.1, не забыли?) и путь к прошивке.
    1. Путь не должен иметь пробелов и отличных от английских символов. Я положил все в c:\temp и запускал оттуда.
  5. Отключаем питание роутера. Зажимаем reset.
  6. Не отпуская reset, включаем питание роутера и ждём появления индикатора-«тучки» подключения сетевого устройства.
  7. Отпускаем reset и одновременно жмакаем на кнопку «Upgrade» в программе tftp2.
    1. С первого раза не всегда получается сделать это вовремя, надо потренироваться.
  8. В случае попадания наблюдаем частое помигивание индикатора LAN (~3-4 сек).
  9. Ждём порядка 5 минут пока прошивка «развернётся», после этого загорится индикатор «статус».
  10. Ставим IP сетевой карты компьютера на автоматическое получение адреса.
  11. Заходим в роутер по протоколу telnet (адрес 192.168.1.1) login/pass: admin/admin.

c:\> telnet 192.168.0.1
Login: admin
Password: admin

Дальше упражняемся в консоли телнетовской сессии (лучше через copy/paste, чтобы не ошибиться в написании). Для начала нам необходимо определить vendor и product code для нашего модема. Для каждого устройства они уникальны. В открытой сессии telnet даём команду:

$ tail -f /usr/tmp/syslog.log - смотрим логи ядра системы в реальном времени.

Теперь вставляем модем (в моём случае это AnyData ADU-300A) в USB-порт роутера и наблюдаем за происходящим. На экране должно появиться нечто подобное:

Okt 29 05:02:09 kernel: hub.c: new USB device 00:03.0-1, assigned address 2
Okt 29 05:02:09 kernel: usb.c: USB device 2 (vend/prod 0x16d5/0x6506) IS NOT claimed BY any active driver.

Записываем параметры vendor и product. Выходим по Ctrl-C.

Проверяем запуск порта модема:

$ insmod usbserial vendor=0x16d5 product=0x6506 (не забываем указывать ваши собственные значения!)
$ls -l /dev/usb/*
на экране должно появиться что вроде этих строк:
crw------- 1 admin root 188, 0 Okt 29 2009 0
crw------- 1 admin root 188, 1 Okt 29 2009 1
Отлично! Нам теперь доступны следующие порты:
/dev/usb/tts/0
/dev/usb/tts/1
из которых нам понадобится первый - tts0.

Теперь добавляем скрипты дозвона ppp-соединения:

Создаём файл /tmp/ppp/peers/dialup, но сначала недостающий каталог peers:

$mkdir /tmp/ppp/peers

Запускаем редактор и используем обычный «копипаст»:

$vi

В редакторе vi переходим в режим редактирования, нажав «i», и вставляем код, начиная с верхнего левого угла:

debug
/dev/usb/tts/0
115200
crtscts
noipdefault
ipcp-accept-local
lcp-echo-interval 60
lcp-echo-failure 5
usepeerdns
noauth
nodetach
mtu 1400
mru 1400
user 'cdma'
password 'cdma'
connect "/usr/sbin/chat -s -S -V -t 60 -f /tmp/ppp/dialup.chat 2 > /tmp/chat.log"

Жмём «Esc» и сохраняем в файл командой

:w /tmp/ppp/peers/dialup

Выходим из редактора

:q

для проверки делаем просмотр созданного файла командой:

$cat /tmp/ppp/peers/dialup

Следующий файл /tmp/ppp/dialup.chat копипастим аналогично:

$vi

 
'' ''
'' 'ATZ'
'OK' 'ATD #777'
'CONNECT' ''

Esc → :w /tmp/ppp/dialup.chat → :q

результат:

Добавляем созданные файлы в /tmp/local/.files командами:

$echo /tmp/ppp/peers/dialup > /tmp/local/.files $echo /tmp/ppp/dialup.chat » /tmp/local/.files

Сохраняемся в память роутера

$flashfs save && flashfs commit && flashfs enable

И перегружаем роутер командой:

$reboot

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

$insmod usbserial vendor=0x16d5 product=0x6506

Теперь можем пробовать соединиться. Обратите внимание - в нашем скрипте dialup указан параметр nodetach, поэтому мы будем оставаться в открытой сессии до нажатия Ctrl-C. Таким образом, можно будет увидеть, что происходит в процессе дозвона:

$pppd call dialup

После ввода команды в нашей телнетовской терминальной сессии должно происходить что-то подобное:

Script /usr/sbin/chat -s -S -V -t 60 -f /tmp/ppp/dialup.chat 2>/tmp/chat.log finished (pid 162), status = 0x0
Serial connection established.
using channel 2
Using interface ppp0
Connect: ppp0 <--> /dev/usb/tts/0
............................................................
local IP address 10.50.29.187
remote IP address 10.50.29.148
primary DNS address 80.255.144.8
secondary DNS address 80.255.1.9
Script /tmp/ppp/ip-up started (pid 165)
Script /tmp/ppp/ip-up finished (pid 165), status = 0x0

Теперь уже можно открыть браузер, спросить что-нибудь у гугля (или яндекса, по вкусу), зайти на любимый сайт… Можно также проверить скорость соединения через http://speedtest.net/ или подобные, чтобы убедиться, что она не ниже, чем было при прямом подключении к компьютеру. Для завершения соединения возвращаемся в окно telnet и жмём Ctrl-C.

Чтобы постоянно не прописывать все эти интересные и увлекательные штуки при каждом включении роутера, создадим файл автозапуска порта модема и соединения - /tmp/local/sbin/post-boot

$mkdir /tmp/local/sbin

Наполняем файл автозагрузки:

#!/bin/sh
insmod usbserial vendor=0x16d5 product=0x6506
sleep 5
pppd call dialup

Esc → :w /tmp/local/sbin/post-boot → :q

Что бы наш файл мог выполниться системой при загрузке, присваиваем ему атрибут выполнения:

$chmod +x /tmp/local/sbin/post-boot

И не забываем сохраняться

$flashfs save && flashfs commit

Всё готово! Перегружаемся и пробуем!

$reboot

Для контроля выполнения команд можно открыть сессию телнет с командой:

$tail -f /usr/tmp/syslog.log

Наслаждаемся работой системы!

Важно! Коды Vendor и Product в статье указаны для моего модема! Не забывайте менять их для своих устройств!

Выпиливаем обратно

Восстановление оригинальной прошивки D-Link DIR-320

Если Вам потребовалось восстановить оригинальную прошивку роутера D-Link DIR-320, то делаем следующее:

  1. Включаем питание роутера с зажатой кнопкой «Reset». Через 15 секунд отпускаем «Reset».
  2. Выставляем на компьютере вручную IP адрес 192.168.0.2, маска 255.255.255.0
  3. Заходим браузером по адресу 192.168.0.1 и попадаем в консоль аварийного восстановления.
  4. Скачиваем официальную прошивку и прошиваем ее через данную консоль.
  5. По окончанию прошивки выключаем роутер, ждем 30 секунд и включаем роутер.
  6. На компе выставляем авто-получение IP адреса, чистим кеш браузера, и заходим браузером по адресу 192.168.0.1
  7. Видим оригинальную прошивку. Все.

openvpn

DIR-320

#!/bin/sh
ipkg.sh update
ipkg.sh install ipkg
echo "src unslung http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable" > /opt/etc/ipkg.conf
echo "dest root /" >> /opt/etc/ipkg.conf
ipkg update
ipkg install uclibc-opt
ipkg install openssl
ipkg install lzo
ipkg -force-depends install openvpn
mkdir /dev/net
mknod /dev/net/tun c 10 200
echo "dev tun0" > /opt/etc/openvpn/server.conf
echo "port 5190" >> /opt/etc/openvpn/server.conf
echo "proto tcp-server" >> /opt/etc/openvpn/server.conf
echo "ifconfig 10.8.0.1 10.8.0.2" >> /opt/etc/openvpn/server.conf
echo "secret static.key" >> /opt/etc/openvpn/server.conf
mkdir /usr/local/sbin
echo "#!/bin/sh" > /usr/local/sbin/post-boot
echo "mount /tmp/local/opt /opt" >> /usr/local/sbin/post-boot
echo "/opt/etc/init.d/S24openvpn" >> /usr/local/sbin/post-boot
chmod +x /usr/local/sbin/post-boot
echo "#!/bin/sh" > /usr/local/sbin/post-firewall
echo "iptables -D INPUT -j DROP" >> /usr/local/sbin/post-firewall
echo "iptables -I INPUT -p tcp --dport 5190 -j ACCEPT" >> /usr/local/sbin/post-firewall
echo "iptables -t nat -I PREROUTING -i eth1 -p tcp --dport 5190 -j DNAT --to-destination \$4:5190" >> /usr/local/sbin/post-firewall
echo "iptables -A INPUT -j DROP" >> /usr/local/sbin/post-firewall
echo "iptables -I INPUT -i tun0 -j ACCEPT" >> /usr/local/sbin/post-firewall
echo "iptables -I FORWARD -i tun0 -j ACCEPT" >> /usr/local/sbin/post-firewall
echo "iptables -I FORWARD -o tun0 -j ACCEPT" >> /usr/local/sbin/post-firewall
echo "iptables -I OUTPUT -o tun0 -j ACCEPT" >> /usr/local/sbin/post-firewall
chmod +x /usr/local/sbin/post-firewall
echo "#!/bin/sh" > /opt/etc/init.d/S24openvpn
echo 'if [ -n "`pidof openvpn`" ]; then' >> /opt/etc/init.d/S24openvpn
echo "/bin/killall openvpn 2>/dev/null" >> /opt/etc/init.d/S24openvpn
echo "fi" >> /opt/etc/init.d/S24openvpn
echo "/sbin/insmod tun" >> /opt/etc/init.d/S24openvpn
echo "echo 1 > /proc/sys/net/ipv4/ip_forward" >> /opt/etc/init.d/S24openvpn
echo "/opt/sbin/openvpn --cd /opt/etc/openvpn --daemon --log-append /var/log/openvpn.log --config server.conf" >> /opt/etc/init.d/S24openvpn
chmod +x /opt/etc/init.d/S24openvpn
echo "/usr/local/sbin/post-firewall" > /usr/local/.files
echo "/usr/local/sbin/post-boot" > /usr/local/.files
mv /tmp/local/static.key /opt/etc/openvpn
flashfs save
flashfs commit
flashfs enable
reboot

 
hardware/router-dir320_anydata.txt · Последние изменения: 2010/05/11 19:35 От brjppru
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki