Песочница →
MultiWAN на DIR-320
Многие мои знакомые, работающие в сети, выражают недовольство своим провайдером. Как показывает практика, от провайдера это мало зависит. Сбои бывают у всех и случаются они в самый неподходящий момент. Лично меня всегда удивляло, почему не подключить сразу несколько провайдеров? При современных-то ценах на интернет. Когда же решил сам подключить резервный канал, то столкнулся с проблемой. Как раздавать дома интернет при минимальных финансовых вложениях?
Давно хотел себе DIR-320, ибо он с новой прошивкой может авторизовываться в сети моего первого провайдера по протоколу 802.1X. Кроме того, на него можно залить прошивки dd-wrt или «прошивку от Олега», которые по сути основаны на Linux. Возможно с их помощью можно будет из 1 WAN-порта по умолчанию сделать 2? Оказалось можно.
Решение под катом.
Для начала нужно залить прошивку. Я выбрал прошивку от Олега. Прошивка от Олега в принципе для ASUS WL-500. Данный роутер является аналогом роутера Asus WL-500gP V2 c уменьшенной с 8 Мб до 4 Мб флэш памятью и без второго порта USB. Выполнен роутер на процессоре BCM5354, объем ОЗУ — 32 Мб, флэш — 4 мегабайта, 1 порт USB, 1 внутренний COM порт. Цена данного роутера меньше чем роутеров Asus при той же функциональности. Прошивку берем тут: http://code.google.com/p/wl500g/downloads/list?can=2&q=wl-500gpv2. Выбираем WL500gpv2-1.9.2.7-d-r2624.trx ибо другая больше по объему и попросту не влезет на DIR. В Windows 7 включаем клиент tftp: Пуск->Панель управления->Программы->Включение или отключение компонентов Windows-> Ставим галочку рядом с пунктом «Клиент TFTP»->ОК. Для Linux устанавливаем клиент tftp штатными средствами дистрибутива, например для семейства Ubuntu командой в терминале:
Создаем файл flashing.cmd в любом текстовом редакторе и сохраняем этот файл в папку c:\bin, в эту же папку кладем прошивку, переименованную в firmware.bin. Содержимое файла flashing.cmd:
Устанавливаем адрес сетевой карты компьютера 192.168.0.2, маска 255.255.255.0, шлюз и DNS прописывать не надо. Подключаем к сетевой карте компьютера сетевой кабель, а второй конец сетевого кабеля вставляем в любой порт LAN роутера, питание роутера не включаем. Запускаем командную строку ПУСК->Выполнить-> cmd, и выполнем команду перехода к папке C\:bin
Нажимаем и удерживаем кнопку Reset нажатой ну например спичкой, включаем питание роутера, загорятся все индикаторы и как только они погаснут индикаторы, кроме индикатора того порта LAN, к которому подключен кабель, кнопку Reset отпускаем и сразу же выполняем в ранее запущенной командной строке предварительно набранную команду:
Наблюдаем процесс прошивки.
Давно хотел себе DIR-320, ибо он с новой прошивкой может авторизовываться в сети моего первого провайдера по протоколу 802.1X. Кроме того, на него можно залить прошивки dd-wrt или «прошивку от Олега», которые по сути основаны на Linux. Возможно с их помощью можно будет из 1 WAN-порта по умолчанию сделать 2? Оказалось можно.
Решение под катом.
1. Меняем прошивку
Для начала нужно залить прошивку. Я выбрал прошивку от Олега. Прошивка от Олега в принципе для ASUS WL-500. Данный роутер является аналогом роутера Asus WL-500gP V2 c уменьшенной с 8 Мб до 4 Мб флэш памятью и без второго порта USB. Выполнен роутер на процессоре BCM5354, объем ОЗУ — 32 Мб, флэш — 4 мегабайта, 1 порт USB, 1 внутренний COM порт. Цена данного роутера меньше чем роутеров Asus при той же функциональности. Прошивку берем тут: http://code.google.com/p/wl500g/downloads/list?can=2&q=wl-500gpv2. Выбираем WL500gpv2-1.9.2.7-d-r2624.trx ибо другая больше по объему и попросту не влезет на DIR. В Windows 7 включаем клиент tftp: Пуск->Панель управления->Программы->Включение или отключение компонентов Windows-> Ставим галочку рядом с пунктом «Клиент TFTP»->ОК. Для Linux устанавливаем клиент tftp штатными средствами дистрибутива, например для семейства Ubuntu командой в терминале:
sudo apt-get install tftp
Создаем файл flashing.cmd в любом текстовом редакторе и сохраняем этот файл в папку c:\bin, в эту же папку кладем прошивку, переименованную в firmware.bin. Содержимое файла 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 c:\bin\firmware.bin
:END
Устанавливаем адрес сетевой карты компьютера 192.168.0.2, маска 255.255.255.0, шлюз и DNS прописывать не надо. Подключаем к сетевой карте компьютера сетевой кабель, а второй конец сетевого кабеля вставляем в любой порт LAN роутера, питание роутера не включаем. Запускаем командную строку ПУСК->Выполнить-> cmd, и выполнем команду перехода к папке C\:bin
C:\>cd c:\bin
Нажимаем и удерживаем кнопку Reset нажатой ну например спичкой, включаем питание роутера, загорятся все индикаторы и как только они погаснут индикаторы, кроме индикатора того порта LAN, к которому подключен кабель, кнопку Reset отпускаем и сразу же выполняем в ранее запущенной командной строке предварительно набранную команду:
C:\bin>flashing.cmd
Наблюдаем процесс прошивки.
Обмен пакетами с 192.168.0.1 по 32 байт:
Превышен интервал ожидания для запроса.
Статистика Ping для 192.168.0.1:
Пакетов: отправлено = 1, получено = 0, потеряно = 1 (100% потерь),
<<>> <<>> <<>> <<>>
Обмен пакетами с 192.168.0.1 по 32 байт:
Ответ от 192.168.0.1: число байт=32 время=4мс TTL=100
Статистика Ping для 192.168.0.1:
Пакетов: отправлено = 1, получено = 1, потеряно = 0 (0% потерь),
Приблизительное время приема-передачи в мс:
Минимальное = 4мсек, Максимальное = 4 мсек, Среднее = 4 мсек
*** Start Flashing ****
Успешная передача: 3592480 байт за 11 сs, 281134 байт/с
C:\bin>
После того, как загорится индикатор статуса (~1-2 мин) производим сброс настроек роутера по умолчанию. Для этого нажимаем и удерживаем кнопку Reset нажатой, пока не замигает индикатор статуса. Отпускаем Reset. Роутер перезагрузится. Адрес роутера по умолчанию сменился теперь на 192.168.1.1. После этого необходимо изменить IP адрес сетевой карты компьютера(по кабелю или WiFi) на получение адреса автоматически по DHCP.
2. Делаем второй WAN
Тот WAN, который уже имеется в системе выделен в vlan1, локальные порты в vlan0. Мы же 1 порт из группы LAN выделим в vlan2.
nvram set vlan0ports="2 3 4 5*"
nvram set vlan2ports="1 5"
nvram set vlan2hwname=et0
nvram set wan1_ifname=vlan1
nvram set wan2_ifname=vlan2
nvram commit
reboot
Тут можно выделить еще парочку WAN.
3. Настраиваем 1 WAN
Первый WAN порт будет PPPoE. В принципе все равно какой. У меня он предполагается основным. Провод подключается в порт, который подписан WAN. Создаем файл и вносим в него параметры подключения.
vi /tmp/local/root/options.wan0
Нажимаем кнопку i и вписываем:
noauth refuse-eap
user 'Login_PPPoE'
password 'Pass_PPPoE'
nomppe nomppc
plugin rp-pppoe.so nic-vlan1
mru 1492 mtu 1492
maxfail 0
usepeerdns
persist
ipcp-accept-remote ipcp-accept-local noipdefault
ktune
default-asyncmap nopcomp noaccomp
novj nobsdcomp nodeflate
lcp-echo-interval 10
lcp-echo-failure 6
unit 0
Для выхода из редактора нажимаем Esc и пишем :wq (двоеточие, w, q). Вместо Login_PPPoE и Pass_PPPoE нужно вписать логин и пароль выданный провайдером. Для проверки запускаем:
pppd file /tmp/local/root/options.wan0 && sleep 15 && /sbin/udhcpc -b -i vlan1
И смотрим вывод ifconfig.
4. Настраиваем 2 WAN
Как говорилось выше, на втором WAN необходима 802.1x авторизация. Для нее необходимо скачать wpa_supplicant скомпилированный с драйвером roboswitch. После удачного выполнения 3 пункта, интернет на самом устройстве должен быть. Тогда достаточно выполнить следующие команды:
wgеt wl500g.googlecode.com/files/wpa_supplicant-0.6.9-mipsel.tgz -P /tmp/local/tmp/
tar -xzf /tmp/local/tmp/wpa_supplicant-0.6.9-mipsel.tgz -O opt/bin/wpa_supplicant.sh > /tmp/local/bin/wpa_supplicant.sh
chmod +x /tmp/local/bin/wpa_supplicant.sh
tar -xzf /tmp/local/tmp/wpa_supplicant-0.6.9-mipsel.tgz -O opt/sbin/wpa_supplicant > /tmp/local/sbin/wpa_supplicant
chmod +x /tmp/local/sbin/wpa_supplicant
vi /tmp/local/bin/wpa_supplicant.sh
По старой доброй традиции в коде wgеt написан с русской е. Нажимаем i для внесения изменений. В строке VLAN=$(nvram get wan_ifname); export VLAN меняем wan_ifname на wan2_ifname. Вписываем свои значения identity и password. В строке /opt/sbin/wpa_supplicant -i${IFNAME} -Droboswitch -c${CONF} -dd
меняем путь с /opt/sbin/wpa_supplicant на /usr/local/sbin/wpa_supplicant и в конце строки дописываем -B для запуска суппликанта в фоне. Выходим Esc и :wq. Записываем изменения:
flashfs save && flashfs commit && flashfs enable
После этого пути /tmp/local/ сменяться на /usr/local/. Для проверки подключения по второму WAN запускаем:
/usr/local/bin/wpa_supplicant.sh && sleep 15 && /sbin/udhcpc -b -i vlan2
И смотрим вывод ifconfig.
5. Настройки роутинга
В моем случае предполагалось, что 2 подключение будет использоваться только для внутренней сети. Для это достаточно выполнить 2 команды:
ip r add 10.152.1.0/24 dev vlan2
ip r add 31.29.0.0/16 dev vlan2
Если же вы хотите Load Balancing, тогда:
ip route del default
ip route add default dev vlan1
ip route add default dev vlan2
6. Сохраняем все настройки
vi /tmp/local/sbin/post-boot
Нажимаем i.
#!/bin/sh
ifconfig vlan2 up
/usr/sbin/pppd file /tmp/ppp/options.wan0
sleep 15 && /sbin/udhcpc -b -i vlan1
/usr/local/bin/wpa_supplicant.sh
sleep 15 && /sbin/udhcpc -b -i vlan2
ip r add 10.152.1.0/24 dev vlan2
ip r add 31.29.0.0/16 dev vlan2
Выходим Esc и :wq.
chmod +x /tmp/local/sbin/post-boot
Бинго!
P.S. В процессе обсуждения мануала стало понятно, что многим непонятно что и как делать. В DIR-320 есть usb-порт. Этим и воспользуемся. Качаем с компьютера MultiWAN.tar. Распаковываем на флешку. Вносим свои данные в файлах options.wan0 и wpa_supplicant.sh как говорилось выше, но уже более привычным каждому текстовым редактором. Вставляем флешку в порт DIR-320 и запускаем start.sh. Скрипт все сделает сам.
29.09.2011 18:42+0400