User Tools

Site Tools


ru:doc:uci:multiwan

Differences

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

Link to this comparison view

ru:doc:uci:multiwan [2012/11/25 12:58] (current)
Line 1: Line 1:
 +{{page>​meta:​infobox:​construction&​noheader&​nofooter&​noeditbtn}}
 +
 +====== Multiwan ======
 +
 +Конфигурационный файл ''/​etc/​config/​multiwan''​ является частью пакета //​multiwan//​. Этот пакет представляет собой скрипт,​ который позволяет сделать конфигурацию с несколькими провайдерами простой и легко управляемой. Пакет //​multiwan//​ содержит легко настраиваемый набор правил распределения нагрузки и отказоустойчивости.
 +
 +===== Установка =====
 +==== Посредством графического интерфейса LuCI ====
 +В LuCI выполните шаги:
 +  * //System// -> //​Software//​ -> //Update package lists//
 +  * //System// -> //​Software//​ -> //Available packages// -> Найдите пакет luci-app-multiwan -> Нажмите Install
 +В результате будет установлен пакет //​multiwan//​ и пакет управления им через LuCI //​luci-app-multiwan//​.
 +После установки при очередном обновлении веб-страницы,​ Вы сможете настраивать пакет multiwan на странице //Network// -> //​Multi-WAN//​
 +
 +==== Посредством командной строки (CLI) ====
 +Выполните команды:​
 +<code sh>
 +opkg update
 +opkg install multiwan
 +/​etc/​init.d/​multiwan enable
 +/​etc/​init.d/​multiwan start
 +/​etc/​init.d/​multiwan single
 +</​code>​
 +
 +===== Настройка =====
 +
 +==== Основные настройки ====
 +В файле /​etc/​config/​multiwan (по умолчанию маршрутизировать трафик через оба интерфейса WAN)
 +<​code>​
 +config '​multiwan'​ '​config'​
 +        option '​default_route'​ '​balancer'​
 +</​code>​
 +
 +<​sortable>​
 +^ Имя параметра ^ Значение по умолчанию ^ Варианты значения ^ Описание ^
 +| ''​default_route''​ | //​balancer//​ | //​balancer///​fastbalancer/<​interface>​ | Выберите,​ как (куда) маршрутизировать трафик по умолчанию (то есть трафик,​ не регулируемый отдельными правилами) |
 +| ''​health_monitor''​ | //​parallel//​ | //​parallel/​serial//​ | Мониторинг линков:​ параллельный или последовательный. Влияет на использование памяти. | 
 +| ''​debug''​ | //0// | //0/1// | Выводить отладочные сообщения в лог |
 +| ''​lan_if''​ | //lan// | //<​firewall lan zone>// | Интерфейс LAN |
 +</​sortable>​
 +
 +В командной строке (выставляем последовательный мониторинг живости линка):​
 +<code sh>
 +uci set multiwan.config.health_monitor=serial
 +uci commit multiwan
 +/​etc/​init.d/​multiwan restart
 +</​code>​
 +
 +* Распределение нагрузки посредством netfilter называется Fast Balancer (лучшее распределение)
 +
 +* Распределение нагрузки посредством iproute2 называется Load Balancer (лучшая совместимость)
 +
 +* Правило wanrule для Fast Balancer - "​fastbalancer"​
 +
 +* Правило wanrule для Load Balancer - "​balancer"​
 +
 +Казалось бы, что fastbalancer должен давать лучший результат,​ но в действительности Вам нужно попробовать оба варианта,​ чтобы понять,​ какой из них лучше всего подходит для вашей ситуации.
 +
 +==== Интерфейс WAN ====
 +<​code>​
 +config '​interface'​ '​wan'​
 +        option '​weight'​ '​10'​
 +        option '​health_interval'​ '​10'​
 +        option '​icmp_hosts'​ '​dns'​
 +        option '​timeout'​ '​3'​
 +        option '​health_fail_retries'​ '​3'​
 +        option '​health_recovery_retries'​ '​5'​
 +        option '​failover_to'​ '​wan2'​
 +        option '​dns'​ '​auto'​
 +
 +config '​interface'​ '​wan2'​
 +        option '​weight'​ '​10'​
 +        option '​health_interval'​ '​10'​
 +        option '​icmp_hosts'​ '​dns'​
 +        option '​timeout'​ '​3'​
 +        option '​health_fail_retries'​ '​3'​
 +        option '​health_recovery_retries'​ '​5'​
 +        option '​failover_to'​ '​wan'​
 +        option '​dns'​ '​auto'​
 +
 +</​code>​
 +
 +<​sortable>​
 +^ Имя параметра ^ Значение по умолчанию ^ Варианты значения ^ Описание ^
 +| ''​weight''​ | //10// | //​disable/​1-10//​ | Load Balancer Distribution |
 +| ''​health_interval''​ | //10// | //​disable/​5/​10/​20/​30/​60/​120//​ | Health Monitor Interval in seconds |
 +| ''​icmp_hosts''​ | //?// | //​disable/​dns/​gateway/<​host>//​ | Health Monitor ICMP Host(s) |
 +| ''​timeout''​ | //?// | //​disable/​1-5/​10//​ | Health Monitor ICMP Timeout |
 +| ''​health_fail_retries''​ | //?// | //​1/​3/​5/​10/​15/​20//​ | Attempts Before WAN Failover |
 +| ''​health_recovery_retries''​ | //?// | //​1/​3/​5/​10/​15/​20//​ | Attempts Before WAN Recovery |
 +| ''​failover_to''​ | //?// | //​disable/​balancer/​fastbalancer/<​interface>//​ | Failover Traffic Destination |
 +| ''​dns''​ | //auto// | //​auto/<​dns>//​ | DNS Server(s) |
 +</​sortable>​
 +
 +<code sh>
 +uci delete multiwan.wan2
 +uci set multiwan.wwan=interface
 +uci set multiwan.wwan.weight=3
 +uci set multiwan.wwan.health_interval=disable
 +uci set multiwan.wwan.icmp_hosts=disable
 +uci set multiwan.wwan.timeout=3
 +uci set multiwan.wwan.health_fail_retries=3
 +uci set multiwan.wwan.health_recovery_retries=5
 +uci set multiwan.wwan.failover_to=fastbalancer
 +uci set multiwan.wwan.dns=auto
 +uci commit multiwan
 +/​etc/​init.d/​multiwan restart
 +</​code>​
 +
 +Для соединений 3G полезно указать серверы DNS вручную для каждого интерфейся WAN (в конфигурации multiwan).
 +
 +При использовании двух или нескольких модемов 3G вам нужно добавить для каждого интерфейса WAN следующие правила в /​etc/​config/​network:​
 +<​code>​
 +option '​peerdns'​ '​0'​
 +option '​defaultroute'​ '​0'​
 +</​code>​
 +
 +==== Правила для исходящего трафика ====
 +Если несколько правил перекрываются,​ действует правило,​ расположенное последним в файле конфигурации. (FIXME not clear enough.)
 +<​code>​
 +config '​mwanfw'​
 + option '​src'​ '​192.168.1.0/​24'​
 + option '​proto'​ '​udp'​
 + option '​port_type'​ '​source-ports'​
 + option '​ports'​ '​5060,​16384:​16482'​
 + option '​wanrule'​ '​wan'​
 +</​code>​
 +
 +^ Имя параметра ^ Значение по умолчанию ^ Варианты значения ^ Описание ^
 +| src | //all// | //​all/<​IP>/<​hostname>//​ | Адрес источника:​ //all// (любой),​ адрес IP либо имя хоста |
 +| dst | //all// | //​all/<​IP>/<​hostname>//​ | Адрес получателя:​ //all// (любой),​ адрес IP либо имя хоста |
 +| port_type | //dports// | //​dports/​source-ports//​ | Тип порта: порт источника или порт получателя |
 +| ports | //all// | //​all/<​port,​port:​range>//​ | Номера портов:​ все, один либо диапазон |
 +| proto | //all// | //​all/​tcp/​udp/​icmp/<​custom>//​ | Протокол:​ все, мнемоническое имя из /​etc/​protocols либо номер |
 +| wanrule |  | //​balancer/​fastbalancer/<​interface>//​ | Правило распределения WAN: балансировка iproute2 или iptables, либо имя интерфейса |
 +| failover_to |  | //​balancer/​fastbalancer/<​interface>//​ | Резервный линк при отказе этого линка |
 +failover_to реализован патчем [[http://​pio.longstair.com/​misc/​multiwan_per_mwanfw_failover.patch.txt|multiwan_per_mwanfw_failover.patch.txt]]
 +
 +<code sh>
 +uci add multiwan mwanfw
 +uci set multiwan.@mwanfw[-1].src=192.168.2.0/​24
 +uci set multiwan.@mwanfw[-1].dst=www.whatismyip.com
 +uci set multiwan.@mwanfw[-1].wanrule=fastbalancer
 +uci commit multiwan
 +/​etc/​init.d/​multiwan restart
 +</​code>​
 +
 +==== Quick Multiwan setup guide by AndyBallon ====
 +
 +andyballon made quick installation guide and post it in https://​forum.openwrt.org/​viewtopic.php?​id=23904&​p=3 post #75
 +
 +
 +=== 1. Установка Backfire 10.03 ===
 +
 +  - for first time install see Openwrt documentation
 +  - for upgrades from Kamikaze use the .trx and install via the web interface
 +  - for bricked <​smirk>​ routers see tftp install of .bin file
 +http://​wiki.openwrt.org/​doc/​howto/​tftp
 +note: don't forget to login via telnet and change root passwd for ssh to work
 +
 +===2. Create extra Vlan for Wan2===
 +
 +I do this via /​etc/​config/​newtork.
 +
 +note: I removed port "​0"​ from eth0_0 and gave it to eth0_2.
 +
 +You can configure wan and wan2 proto as dhcp to strt and then use the web interface to configure the pppoe or static ip later.
 +Use the same DNS servers I'm using if you're having DNS problems. Some ISPs only allow DNS connections from their IP blocks.
 + ​---------------------------------------------------
 +<​code>​
 +root@culiat-wg:​~#​ cat /​etc/​config/​network
 +
 +config '​switch'​ '​eth0'​
 +        option '​enable'​ '​1'​
 +
 +config '​switch_vlan'​ '​eth0_0'​
 +        option '​device'​ '​eth0'​
 +        option '​vlan'​ '​0'​
 +        option '​ports'​ '1 2 3 5'
 +
 +config '​switch_vlan'​ '​eth0_1'​
 +        option '​device'​ '​eth0'​
 +        option '​vlan'​ '​1'​
 +        option '​ports'​ '4 5'
 +
 +config '​switch_vlan'​ '​eth0_2'​
 +        option '​device'​ '​eth0'​
 +        option '​vlan'​ '​2'​
 +        option '​ports'​ '0 5'
 +
 +config '​interface'​ '​loopback'​
 +        option '​ifname'​ '​lo'​
 +        option '​proto'​ '​static'​
 +        option '​ipaddr'​ '​127.0.0.1'​
 +        option '​netmask'​ '​255.0.0.0'​
 +
 +config '​interface'​ '​lan'​
 +        option '​type'​ '​bridge'​
 +        option '​ifname'​ '​eth0.0'​
 +        option '​proto'​ '​static'​
 +        option '​stp'​ '​1'​
 +        option '​ipaddr'​ '​192.168.1.1'​
 +        option '​netmask'​ '​255.255.255.0'​
 +
 +config '​interface'​ '​wan'​
 +        option '​ifname'​ '​eth0.1'​
 +        option '​proto'​ '​dhcp'​
 +        option '​dns'​ '​216.146.35.113 216.146.36.113 8.8.8.8 8.8.4.4'​
 +        option '​defaultroute'​ '​0'​
 +        option '​peerdns'​ '​0'​
 +
 +config '​interface'​ '​wan2'​
 +        option '​ifname'​ '​eth0.2'​
 +        option '​dns'​ '​216.146.35.113 216.146.36.113 8.8.8.8 8.8.4.4'​
 +        option '​proto'​ '​dhcp'​
 +        option '​defaultroute'​ '​0'​
 +        option '​peerdns'​ '​0'​
 +</​code>​
 +
 +=== 3. Install prerequisite software ===
 +
 +ip, iptables, iptables-utils,​ iptables-mod-conntrack,​ iptables-mod-conntrack-extra,​ iptables-mod-ipopt and kmod-ipt-ipopt
 +this is how I do it:
 +
 +  * a. go to backfire packages: http://​downloads.openwrt.org/​backfire/​10.03/​brcm47xx/​packages/​
 +  * b. right click a link to a package and "Copy Link Location"​
 +  * c. go to /tmp directory and run 
 +"opkg install http://​downloads.openwrt.org/​backfire/​10.03/​brcm47xx/​packages/​ip_2.6.29-1-2_brcm47xx.ipk"​
 +note: if you're new to all of this it's better to install all the applications first including multiwan before configuring vlans so your internet connection does not go kookie on you. If you did because you're folowing this guide, then just shutdown a interface like so: "​ifconfig eth0.2 down"
 +
 +===4. Install multiwan and it's web control package (luci-app)===
 +
 +Reboot to refresh the web ui. I always need to do this otherwise the link does not show up in networking.
 +
 +===5. Configure Wans && configure multiwan===
 +
 +Wans:
 + ​Network > Interfaces > Wan/WAN2
 +note: when asked which firewall zone to add wan2 choose wan so it has the same firewall rules for wan connections. Otherwise you'll have to manually recreate the fw rules for wan2.
 +
 +Multiwan:
 + ​Network > Multiwan
 +checkout the bottom page to see samples of the settings.
 +here's how i got mine setup:
 +
 +  * a. I only have two internet connections so I always remove the last two wan interfaces. I also comment out MWAN3 and MWAN4 in /​etc/​iproute2/​rt_tables (although it may not be necessary).
 +  * b. Load Balancer Distribution = 1 for even connection distribution
 +note: You'll get per connection distribution not per packet so don't expect one download to come from both gateways. Lots of talk on this in the internet.
 +Failover = LoadBalancer for both links
 +  * c.Traffic Rules
 +note: checkout the examples
 + ​Source,​ Destination,​ protocol, Ports, WAN Uplink
 + all, all,​all,​all,​ Load Balancer
 + all, all, UDP, all, wan <-- this is so all vpn and voip connection goes through 1 gateway only
 +that's it! 
 +
 +===6. Test.===
 +  - Status > Interfaces should show traffic going through both interfaces.
 +  - route distribution
 +<​code>​
 + ​root@culiat-wg:​~#​ ip route show table 123
 + ​192.168.2.0/​24 dev eth0.2 ​ proto kernel ​ scope link  src 192.168.2.214
 + ​192.168.1.0/​24 dev br-lan ​ proto kernel ​ scope link  src 192.168.1.1
 + ​114.108.201.0/​24 dev eth0.1 ​ proto kernel ​ scope link  src 114.108.201.49
 + ​default ​ proto static
 +        nexthop via 114.108.201.1 ​ dev eth0.1 weight 1
 +        nexthop via 192.168.2.1 ​ dev eth0.2 weight 1
 +</​code>​
 +  - "​route"​ should give you two default gateways
 +  - try a torrent with lots of seeders. If you have a internet line that can do 90kbps max download, and another that can do 180kbps max if multiwan is working properly you should get a download rate greater than the higher rated link.
 +  - pulling the plug from a wan port should still give you internet connection
 +
 +===7. Troubleshooting===
 +There'​s a problem if 
 +  - when you refresh the Interface status page and the Transfer rate of one interface does not change
 +  - when you you go the the Interface Status page you only see one wan interface
 +  - when you do "​route"​ you only get one default gateway
 +  - when you do "ip route show table 123" you don't get nexthops
 +  - etc.
 +Fix:
 +  - post your problem in the thread. :D
 +
 +===8. Extras===
 +If you have two or more connections to the same ISP you should try:
 +  - ECMP using quagga http://​quagga.net/​faq/​kodgehopper-ecmp.html <-- hard core network stuff (makes you feel like a genius. :D)
 +  - Channel bonding <-- this gives you per packet load distribution (effectively doubles your transfer rates)
 + 
  
ru/doc/uci/multiwan.txt · Last modified: 2012/11/25 12:58 (external edit)