Как стать автором
Обновить

MultiWAN на DIR-320

Время на прочтение5 мин
Количество просмотров3.3K
Многие мои знакомые, работающие в сети, выражают недовольство своим провайдером. Как показывает практика, от провайдера это мало зависит. Сбои бывают у всех и случаются они в самый неподходящий момент. Лично меня всегда удивляло, почему не подключить сразу несколько провайдеров? При современных-то ценах на интернет. Когда же решил сам подключить резервный канал, то столкнулся с проблемой. Как раздавать дома интернет при минимальных финансовых вложениях?

Давно хотел себе DIR-320, ибо он с новой прошивкой может авторизовываться в сети моего первого провайдера по протоколу 802.1X. Кроме того, на него можно залить прошивки dd-wrt или «прошивку от Олега», которые по сути основаны на Linux. Возможно с их помощью можно будет из 1 WAN-порта по умолчанию сделать 2? Оказалось можно.

image
Решение под катом.

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. Скрипт все сделает сам.
Теги:
Хабы:
Всего голосов 16: ↑15 и ↓1+14
Комментарии5

Публикации

Истории

Ближайшие события

Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург