Differences

This shows you the differences between two versions of the page.

ru:doc:howto:multiwan.failower [2012/11/27 19:24] (current)
Line 1: Line 1:
 +====== multiwan: Подключение к резервному провайдеру ======
 +В статье описана настройка OpenWRT для подключения резервного канала на случай падения основного. В качестве примера взята реальная конфигурация одной организации, где в качестве резерва используется интернет-подключение через маршрутизатор соседней (дружественной) организации. Адрес IP провайдера заменён на адрес из пула "адресов для документирования"
 +
 +===== Условия и определения =====
 +
 + **Основной аплинк** - подключение по кабелю ethernet к провайдеру с назначенным статическим адресом IP.
 +
 + **Резервный аплинк** - подключение по кабелю ethernet к маршрутизатору соседней организации, адрес выделяется по DHCP из интранетовской сети.
 +
 + **Основное условие**: используемое в сетях обоих организаций адресное пространство не должно пересекаться, то есть подсеть 192.168.1.0/24 не может использоваться одновременно в обоих организациях. В нашем примере резервный аплинк использует адресное пространство 192.168.20.0/25, а маршрутизатор использует подсеть 192.168.1.0/24, поэтому изменять адрес и маску для интерфейса LAN нужды нет.
 +
 +===== Настройка маршрутизатора =====
 +
 +В качестве маршрутизатора был выбран [[toh:netgear:wndr3800|NetGear WNDR3800]], при выборе решающим было: большая оперативная память (128 Мб), большая ёмкость флешки (64 Мб), поддерживается как в [[http://dd-wrt.net|DD-WRT]], так и в OpenWRT.
 +
 +Поскольку фирменная прошивка не позволяет использовать двух аплинков, решено было попробовать OpenWRT с пакетом multiwan, а в случае неудачи - dd-wrt с собственным скриптом.
 +
 +==== Установка OpenWRT ====
 +Установка тривиальна: качаем прошивку (взята прошивка из trunk, поскольку стабильная прошивка //Backfire//, как пишет народ, "из коробки" не поддерживает адаптеры wifi), затем заливаем её в маршрутизатор стандартной процедурой Firmware upgrade.
 +
 +После ожидания и ручного перезапуска маршрутизатора подключаемся к нему по telnet и задаём пароль, после чего telnet-демон будет автоматически выключен и включится sshd:
 +<code bash>
 +$ 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:/#
 +</code>
 +
 +Подробнее см. [[ru:doc:howto:firstlogin|Первый запуск]].
 +
 +==== Установка пакетов ====
 +
 +Для удобства управления устанавливаем web-интерфейс [[doc:howto:luci.essentials|LuCI]]:
 +<code bash>
 +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
 +</code>
 +...
 +
 +Затем устанавливаем пакет **luci-app-miltiwan** (модуль управления multiwan для LuCI), при установке которого автоматически ставится также и нужный [[ru:doc:uci:multiwan]].
 +<code bash>
 +root@OpenWrt:/# opkg install luci-app-miltiwan
 +</code>
 +
 +==== Настройка ====
 +
 +=== Подключение к Основному аплинку ===
 +
 +Настраивается тривиально: в LuCI на странице //Network// -> //Interfaces// -> //WAN// меняем протокол на //Static address//, подтверждаем и вписываем нужные значения в поля
 +//IPv4 address// (адрес IP), //IPv4 netmask// (маска подсети), //IPv4 gateway// (шлюз по умолчанию), //Use custom DNS servers// (список серверов DNS провайдера, а лучше гугловские серверы). Поле //IPv4 broadcast// можно не заполнять. Не забудьте нажать //Save & Apply//.
 +
 +В UCI нужно изменить файл /etc/config/network:
 +<code>
 +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'
 +</code>
 +и применить изменение:
 +<code bash>/etc/init.d/network reload</code>
 +
 +Помимо провайдерских, имеет смысл указать какой-нибудь публичный сервер 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" (см. [[toh:netgear:wndr3800|NetGear WNDR3800]]).
 +
 +Таким образом, нужно назначить порт 3 коммутатора в VLAN2.
 +  * В LuCI это можно сделать на странице //System// ->//Switch//: в секции VLAN в строке "1" переключаем порт ''Port 3'' в состояние ''off'', добавляем новый VLAN с номером "2" и ставим у него порт ''Port 3'' в состояние ''untagged'', а порт ''Port 5'' в состояние ''tagged''. Нажимаем ''Save and Apply''
 +  * В uci - в файле ''/etc/config/network'', в котором нужно исправить одну секцию ''config switch_vlan'' и создать вторую:
 +вместо
 +<code>
 +config switch_vlan
 +        option device 'rtl8366s'
 +        option vlan '1'
 +        option ports '0 1 2 3 5t'
 +</code>
 +нужно записать
 +<code>
 +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'
 +</code>
 +После внесения изменений в ''/etc/config/network'' нужно не забыть применить новую конфигурацию сети:
 +<code bash>/etc/init.d/network restart</code>
 +
 +=== Настраиваем multiwan ===
 +
 +== Сопоставление интерфейсов ==
 +Во-первых, нужно сопоставить физическому интерфейсу виртуальный, c которым будет работать multiwan.
 +
 +В LuCI это делается на странице //Network// -> //Interfaces//:
 +Нажимаем кнопку //Add New Interface//, указываем имя //WWAN//, физический иинтерфейс "//VLAN interface: eth0.2//", в строке //Protocol of the new interface// выбираем //DHCP Client// и нажимаем //Submit//.
 +
 +В UCI для того же нужно в файле ''/etc/config/network'' добавить строки:
 +<code>
 +config interface 'wwan'
 +        option ifname 'eth0.2'
 +        option proto 'dhcp'
 +</code>
 +
 +== Настройка межсетевого экрана ==
 +Во-вторых, нужно задать параметры файрвола для этого нового интерфейса: в LuCI на странице //Network// -> //Interfaces// -> //WWAN// -> //Firewall settings// нужно выбрать зону //wan//.
 +
 +== Настройка параметров multiwan ==
 +Во-третьих, нужно задать параметры multiwan для этого нового интерфейса. Но, оказывается, в конфигурации multiwan уже есть два интерфейса: WAN и WAN2. Придётся удалить ненужный WAN2 (он не ассоциирован ни с одним системным интерфейсом) и создать WWAN.
 +
 +При использовании LuCI - на странице //Network// -> //Multi-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'' следующим образом:
 +<code>
 +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'         
 +</code>
 +После изменения файла ''/etc/config/multiwan'' нужно перезапустить службу multiwan:
 +<code>/etc/init.d/multiwan restart</code>
 +
 +=== Настраиваем dnsmask ===
 +
 +До сих пор настройка касалась самого маршрутизатора, но нужно также настроить и доступ в интернет из локальной сети. При этом существенным является вопрос DNS. Если компьютеры в локальной сети настроены на внешние серверы DNS (например, на гугловские), у них сразу будет работать доступ в интернет. Если же используется сервер DHCP маршрутизатора, без дополнительной настройки получаем "странную" ситуацию: ping на адреса IP проходит, но (к примеру) браузер WEB собщает, что страницы всех сайтов недоступны. Ключевая проверка - не пингуются доменные имена. Это означает, что требуется настройка пакета DNSMASK.
 +
 +В LuCI: //Network// -> //DHCP and DNS// -> //General settings//. С разделе //DNS forwardings// нужно указать (все) серверы DNS обоих провайдеров, а также желательно указать пару публичных серверов DNS. (Адрес IP каждого сервера указывается в отдельной строке.) Если указать серверы только одного провайдера, при падении канала к нему запросы DNS ресолвится не будут.
 +
 +В UCI: в файле ''/etc/config/dhcp'' нужно в секцию ''config dnsmasq'' добавить строки ''list server ...'', пример:
 +<code>
 +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'
 +...
 +</code>
 +После редактирования файла ''/etc/config/dhcp'' нужно применить изменения:
 +<code bash>
 +root@OpenWrt:~# /etc/init.d/dnsmasq reload
 +</code>
 +
 +Теперь компьютеры в локальной сети могут выходить в интернет без проблем.

Back to top

ru/doc/howto/multiwan.failower.txt · Last modified: 2012/11/27 19:24 (external edit)