multiwan: Подключение к резервному провайдеру

В статье описана настройка OpenWRT для подключения резервного канала на случай падения основного. В качестве примера взята реальная конфигурация одной организации, где в качестве резерва используется интернет-подключение через маршрутизатор соседней (дружественной) организации. Адрес IP провайдера заменён на адрес из пула “адресов для документирования”

Основной аплинк - подключение по кабелю ethernet к провайдеру с назначенным статическим адресом IP.

Резервный аплинк - подключение по кабелю ethernet к маршрутизатору соседней организации, адрес выделяется по DHCP из интранетовской сети.

Основное условие: используемое в сетях обоих организаций адресное пространство не должно пересекаться, то есть подсеть 192.168.1.0/24 не может использоваться одновременно в обоих организациях. В нашем примере резервный аплинк использует адресное пространство 192.168.20.0/25, а маршрутизатор использует подсеть 192.168.1.0/24, поэтому изменять адрес и маску для интерфейса LAN нужды нет.

В качестве маршрутизатора был выбран NetGear WNDR3800, при выборе решающим было: большая оперативная память (128 Мб), большая ёмкость флешки (64 Мб), поддерживается как в DD-WRT, так и в OpenWRT.

Поскольку фирменная прошивка не позволяет использовать двух аплинков, решено было попробовать OpenWRT с пакетом multiwan, а в случае неудачи - dd-wrt с собственным скриптом.

Установка тривиальна: качаем прошивку (взята прошивка из trunk, поскольку стабильная прошивка Backfire, как пишет народ, “из коробки” не поддерживает адаптеры wifi), затем заливаем её в маршрутизатор стандартной процедурой Firmware upgrade.

После ожидания и ручного перезапуска маршрутизатора подключаемся к нему по telnet и задаём пароль, после чего telnet-демон будет автоматически выключен и включится sshd:

$ telnet 192.168.1.1
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
 === IMPORTANT ============================
  Use 'passwd' to set your login password
  this will disable telnet and enable SSH
 ------------------------------------------
 
 
BusyBox v1.19.4 (2012-11-22 21:36:12 PST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
 
  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 BARRIER BREAKER (Bleeding Edge, r34303)
 -----------------------------------------------------
  * 1/2 oz Galliano         Pour all ingredients into
  * 4 oz cold Coffee        an irish coffee mug filled
  * 1 1/2 oz Dark Rum       with crushed ice. Stir.
  * 2 tsp. Creme de Cacao
 -----------------------------------------------------
root@OpenWrt:/# passwd
Changing password for root
New password: 
Retype password:
Password for root changed by root
root@OpenWrt:/# 

Подробнее см. Первый запуск.

Для удобства управления устанавливаем web-интерфейс LuCI:

root@OpenWrt:/# opkg update
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/Packages.gz.
Inflating http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/Packages.gz.
Updated list of available packages in /var/opkg-lists/barrier_breaker.
root@OpenWrt:/# opkg install luci-ssl

...

Затем устанавливаем пакет luci-app-miltiwan (модуль управления multiwan для LuCI), при установке которого автоматически ставится также и нужный multiwan.

root@OpenWrt:/# opkg install luci-app-miltiwan

Подключение к Основному аплинку

Настраивается тривиально: в LuCI на странице NetworkInterfacesWAN меняем протокол на Static address, подтверждаем и вписываем нужные значения в поля IPv4 address (адрес IP), IPv4 netmask (маска подсети), IPv4 gateway (шлюз по умолчанию), Use custom DNS servers (список серверов DNS провайдера, а лучше гугловские серверы). Поле IPv4 broadcast можно не заполнять. Не забудьте нажать Save & Apply.

В UCI нужно изменить файл /etc/config/network:

config interface 'wan'
        option ifname 'eth1'
        option proto 'static'
        option ipaddr '198.51.100.195'
        option netmask '255.255.255.128'
        option gateway '198.51.100.129'
        option dns '192.0.2.160 8.8.8.8 192.0.2.190'

и применить изменение:

/etc/init.d/network reload

Помимо провайдерских, имеет смысл указать какой-нибудь публичный сервер DNS, чтобы при падении одного канала ресолвер продолжал работать. В примере указан один из гугловских (8.8.8.8).

Создаём VLAN

Во-первых, нужно назначить один из портов LAN свободному VLAN (стандарта IEEE 802.1Q), при этом нужно знать, что * VLAN1 (системный интерфейс eth0.1) - это виртуальный интерфейс lan Свободны номера VLAN от второго до 4096, выбираем VLAN2.

Для удобства коммутации назначим в VLAN2 порт с подписью “Ethernet 1” (на лицевой стороне индикатор “1”): он расположен рядом с портом, подписанным “Internet” (соответствует интерфейсу WAN). В конфигурации управляемого коммутатора, который имеется в маршрутизаторе, порту “1” соответствует “Port 3” (см. NetGear WNDR3800).

Таким образом, нужно назначить порт 3 коммутатора в VLAN2.

  • В LuCI это можно сделать на странице SystemSwitch: в секции VLAN в строке “1” переключаем порт Port 3 в состояние off, добавляем новый VLAN с номером “2” и ставим у него порт Port 3 в состояние untagged, а порт Port 5 в состояние tagged. Нажимаем Save and Apply
  • В uci - в файле /etc/config/network, в котором нужно исправить одну секцию config switch_vlan и создать вторую:

вместо

config switch_vlan
        option device 'rtl8366s'
        option vlan '1'
        option ports '0 1 2 3 5t'

нужно записать

config switch_vlan
        option device 'rtl8366s'
        option vlan '1'
        option ports '0 1 2 5t'
config switch_vlan
        option device 'rtl8366s'
        option vlan '2'
        option ports '3 5t'

После внесения изменений в /etc/config/network нужно не забыть применить новую конфигурацию сети:

/etc/init.d/network restart

Настраиваем multiwan

Сопоставление интерфейсов

Во-первых, нужно сопоставить физическому интерфейсу виртуальный, c которым будет работать multiwan.

В LuCI это делается на странице NetworkInterfaces: Нажимаем кнопку Add New Interface, указываем имя WWAN, физический иинтерфейс “VLAN interface: eth0.2”, в строке Protocol of the new interface выбираем DHCP Client и нажимаем Submit.

В UCI для того же нужно в файле /etc/config/network добавить строки:

config interface 'wwan'
        option ifname 'eth0.2'
        option proto 'dhcp'
Настройка межсетевого экрана

Во-вторых, нужно задать параметры файрвола для этого нового интерфейса: в LuCI на странице NetworkInterfacesWWANFirewall settings нужно выбрать зону wan.

Настройка параметров multiwan

Во-третьих, нужно задать параметры multiwan для этого нового интерфейса. Но, оказывается, в конфигурации multiwan уже есть два интерфейса: WAN и WAN2. Придётся удалить ненужный WAN2 (он не ассоциирован ни с одним системным интерфейсом) и создать WWAN.

При использовании LuCI - на странице NetworkMulti-WAN удалите WAN2 и создайте WWAN. Их параметры должны совпадать, за исключением:

  • Failover Traffic Destination, который должен указывать на другой интерфейс, участвующий в multiwan: у WAN нужно вписать wwan, а у WWAN - wan;
  • в качестве DNS для каждого лучше указать сервер DNS соответствующего провайдера, либо разные публичные серверы (обязательно надёжные, например, гугловские);
  • параметр Health Monitor ICMP Host(s) должен указывать на разные надёжные серверы, использовать для этого параметра серверы соответствующего провайдера - плохая идея: интернета может не быть, а сеть провайдера при этом доступна (для примера я указал DNS-серверы гугля).

Затем назначим политику multiwan:

  • Default Route: wan

Основной аплинк будет использоваться для всего трафика, резервный только в случае его падения.

Осталось удалить ненужные правила из Multi-WAN Traffic Rules и включить multiwan:

  • Enable: v

Применяем изменения: Save & Apply, ждём завершения и проверяем работу.

При использовании UCI нужно изменить файл /etc/config/multiwan следующим образом:

config multiwan 'config'               
        option enabled '1'
        option default_route 'wan'
                                          
config interface 'wan'                    
        option weight '10'                
        option health_interval '10'       
        option timeout '3'                
        option health_fail_retries '3'    
        option health_recovery_retries '5'
        option dns 'auto'           
        option icmp_hosts '8.8.8.8'   
        option failover_to 'wwan'         
                                          
config interface 'wwan'                   
        option weight '10'                
        option health_interval '10'       
        option timeout '3'                
        option health_fail_retries '3'    
        option health_recovery_retries '5'
        option dns 'auto'                 
        option icmp_hosts '8.8.4.4'
        option failover_to 'wan'          

После изменения файла /etc/config/multiwan нужно перезапустить службу multiwan:

/etc/init.d/multiwan restart

Настраиваем dnsmask

До сих пор настройка касалась самого маршрутизатора, но нужно также настроить и доступ в интернет из локальной сети. При этом существенным является вопрос DNS. Если компьютеры в локальной сети настроены на внешние серверы DNS (например, на гугловские), у них сразу будет работать доступ в интернет. Если же используется сервер DHCP маршрутизатора, без дополнительной настройки получаем “странную” ситуацию: ping на адреса IP проходит, но (к примеру) браузер WEB собщает, что страницы всех сайтов недоступны. Ключевая проверка - не пингуются доменные имена. Это означает, что требуется настройка пакета DNSMASK.

В LuCI: NetworkDHCP and DNSGeneral settings. С разделе DNS forwardings нужно указать (все) серверы DNS обоих провайдеров, а также желательно указать пару публичных серверов DNS. (Адрес IP каждого сервера указывается в отдельной строке.) Если указать серверы только одного провайдера, при падении канала к нему запросы DNS ресолвится не будут.

В UCI: в файле /etc/config/dhcp нужно в секцию config dnsmasq добавить строки list server ..., пример:

config dnsmasq
	list server '8.8.8.8'
	list server '8.8.4.4'
	list server '192.0.2.160'
	list server '192.0.2.190'
...

После редактирования файла /etc/config/dhcp нужно применить изменения:

root@OpenWrt:~# /etc/init.d/dnsmasq reload

Теперь компьютеры в локальной сети могут выходить в интернет без проблем.

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2019/03/22 15:00
  • by vgaetera