1 (edytowany przez janptak 2011-10-21 06:49:24)

Temat: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

Witajcie,
ostatnie dwa dni spędziłem na sprawdzaniu i ustawianiu loadbalancingu z wykorzystaniem pakietu i pomyślałem że opiszę to dla innych.

Na początku podstawowe informacje odnośnie konfiguracji: mam WNDR3700v2. z zainstalowanym najnowszym openWrt (w momencie pisania posta) by Obsy oraz doinstalowałem LuCI. Doinstalowałem także wszystkie pakiety tak by mieć wsparcie dla modemów 3G.

Zgodnie z poradnikiem Router3G ze strony głównej mam to wszystko skonfigurowane i każdy modem jest poprawnie skonfigurowany, wykrywany i działa z siecią komórkową. Modemy wpięce przez aktywny hub USB.

Loadbalancing z wykorzystaniem paczki MultiWan.

Modemy mam skonfigurowane na interfejsach wan i wan2.
Ważne by ustawić opcję 'defaultroute' '0' - zabrało mi to trochę czasu żeby na to wpaść bo bez tego nie chciało mi poprawnie rutować. Nie wyłączajcie także opcji peerDNS bo wtedy multiwan, po restarcie łącza nie wykrywa go od nowa i nie korzysta z podniesionego interfejsu i trzeba restartować multiwan.

config 'interface' 'wan'
    option 'proto' '3g'
    option 'service' 'umts'
    option 'device' '/dev/ttyUSB0'
    option 'apn' 'vpn'
    option 'pincode' ''
    option 'username' 'vpn'
    option 'password' 'vpn'
    option 'maxwait' '20'
    option 'defaultroute' '0'

config 'interface' 'wan2'
    option 'proto' '3g'
    option 'service' 'umts'
    option 'device' '/dev/ttyUSB3'
    option 'apn' 'erainternet'
    option 'pincode' ''
    option 'username' 'erainternet'
    option 'password' 'erainternet'
    option 'maxwait' '10'
    option 'defaultroute' '0'

Firewall wyklikałem w LuCI i dodałem drugą strefę wan2. Wprawdzie w poradnikach o multiwan najczęściej wszyscy mają jedną strefę z podpiętymi dwoma interfejsami ale miałem z tym problemy które rozwiązało dodanie drugiej strefy w firewall.

config 'defaults'
    option 'syn_flood' '1'
    option 'input' 'ACCEPT'
    option 'output' 'ACCEPT'
    option 'forward' 'REJECT'
    option 'drop_invalid' '1'

config 'zone'
    option 'name' 'lan'
    option 'network' 'lan'
    option 'input' 'ACCEPT'
    option 'output' 'ACCEPT'
    option 'forward' 'REJECT'

config 'zone'
    option 'name' 'wan'
    option 'input' 'REJECT'
    option 'output' 'ACCEPT'
    option 'forward' 'REJECT'
    option 'masq' '1'
    option 'mtu_fix' '1'
    option 'network' 'wan'

config 'rule'
    option 'src' 'wan'
    option 'proto' 'udp'
    option 'dest_port' '68'
    option 'target' 'ACCEPT'
    option 'family' 'ipv4'

config 'rule'
    option 'src' 'wan'
    option 'proto' 'icmp'
    option 'icmp_type' 'echo-request'
    option 'family' 'ipv4'
    option 'target' 'ACCEPT'

config 'rule'
    option 'src' 'wan'
    option 'proto' 'icmp'
    list 'icmp_type' 'echo-request'
    list 'icmp_type' 'destination-unreachable'
    list 'icmp_type' 'packet-too-big'
    list 'icmp_type' 'time-exceeded'
    list 'icmp_type' 'bad-header'
    list 'icmp_type' 'unknown-header-type'
    list 'icmp_type' 'router-solicitation'
    list 'icmp_type' 'neighbour-solicitation'
    option 'limit' '1000/sec'
    option 'family' 'ipv6'
    option 'target' 'ACCEPT'

config 'rule'
    option 'src' 'wan'
    option 'dest' '*'
    option 'proto' 'icmp'
    list 'icmp_type' 'echo-request'
    list 'icmp_type' 'destination-unreachable'
    list 'icmp_type' 'packet-too-big'
    list 'icmp_type' 'time-exceeded'
    list 'icmp_type' 'bad-header'
    list 'icmp_type' 'unknown-header-type'
    option 'limit' '1000/sec'
    option 'family' 'ipv6'
    option 'target' 'ACCEPT'

config 'include'
    option 'path' '/etc/firewall.user'

config 'forwarding'
    option 'dest' 'wan'
    option 'src' 'lan'

config 'rule'
    option 'target' 'ACCEPT'

config 'zone'
    option 'name' 'wan2'
    option 'forward' 'REJECT'
    option 'output' 'ACCEPT'
    option 'network' 'wan2'
    option 'input' 'REJECT'
    option 'masq' '1'
    option 'mtu_fix' '1'

config 'forwarding'
    option 'dest' 'wan2'
    option 'src' 'lan'

Na koniec poszło ustawianie multiwana. Jako że właściwie brakuje dokumentacji wszystko trzeba ustawiać na czuja.

Instalujecie pakiet luci-app-multiwan (jeśli macie LuCi) - ten pakiet doinstaluje resztę.

Powinniście mieć dwa interfejsy wan i wan2. Jeśli macie tylko jeden to dodajcie drugi (zaraz podam plik multiwan).

Load Balancer Distribution - waga łącza. Z tego co się orientuję to 1 - najsłabsza, 10 - najmocniejsza. Ustala które łącze będzie bardziej obciążone.

HealthMonitor - w zamierzeniu ma sprawdzać czy połączenie jest aktywne i je restartować jeśli jest to konieczne. Opcje są oczywiste.

Attempts before WAN failover / recovery - opcja wykorzystana jeśli korzystamy z failover: ilość prób zanim łącze przeskoczy na drugi modem / ilość testów zanim powróci do pierwszego modemu.

Failover traffic destination - jak wykryje brak połączenia gdzie ma przekazywać transmisję. Słabo to opisane choć teoretycznie nazwa mówi sama za siebie. Jeśli korzystamy z failover to oczywiście ustawiamy tu gdzie ma przekierować ruch jak padnie to łącze. Z opcji mamy None, wan, wan2, fastbalancer, balancer. Nie wiem jak to działa jeśli korzystam z loadbalancingu.

DNS Service - wiadomo o co chodzi.


Multi-WAN Traffic Rules

W tej sekcji ustalamy reguły ruchu. Ja ustawiłem właściwie jedną - wszystko na "all" a w kolumnie "wan uplink" dałem "Load balancer (performance)"

Na końcu jako "default rule" dałem także "Load balancer (performance)"

/etc/config/multiwan

config 'multiwan' 'config'
    option 'health_monitor' 'serial'
    option 'default_route' 'fastbalancer'
    option 'debug' '1'

config 'interface' 'wan'
    option 'health_fail_retries' '3'
    option 'health_recovery_retries' '5'
    option 'failover_to' 'fastbalancer'
    option 'weight' '5'
    option 'health_interval' '20'
    option 'icmp_hosts' 'dns'
    option 'timeout' '10'
    option 'dns' 'auto'

config 'interface' 'wan2'
    option 'health_interval' '10'
    option 'timeout' '3'
    option 'health_fail_retries' '3'
    option 'health_recovery_retries' '5'
    option 'weight' '5'
    option 'failover_to' 'fastbalancer'
    option 'icmp_hosts' 'dns'
    option 'dns' 'auto'

config 'mwanfw'
    option 'wanrule' 'fastbalancer'

config 'mwanfw'
    option 'src' '192.168.1.150'
    option 'wanrule' 'wan2'

config 'mwanfw'
    option 'src' '192.168.1.250'
    option 'proto' 'icmp'
    option 'wanrule' 'wan'

Jak to działa - działa tak jak można się spodziewać  - rozdziela ruch na dwa łącza przy czym zaznacza pakiety z poszczególnych interfejsów tak więc wszystko powinno działać poprawnie z logowaniami do stron itp. Pobiera oczywiście tak że jak jest jedna sesja pobierania to korzysta tylko z jednego łącza tak więc przy pobieraniu pojedyńczego pliku mamy prędkość jednego losowego modemu.

Z problemów które na razie widzę to to że za żadne skarby nie udaje mi się automatycznie uruchomić przy starcie dwóch modemów na raz. Ruter zawsze wstaje z jednym i potem muszę ręcznie odpalić drugi.

To samo jest z restartem połączenia - po prostu HealthMonitor nie działa w moim przypadku - koniec i kropka. Próbowałem wszystkich kombinacji i nadal nie wiem czy to wina moich ustawień czy czegoś innego.

Świetny skądinąd skrypt Cezarego<<dzię ku je my :-)>> (tester.sh) do wznawiania połączenia nie jest pomocny bo on pinguje co te 2 minuty DNS ale przechodzi to przez drugi interfejs więc skrypt nie aktywuje tego padniętego modemu.

@Cezary  - może coś byś na to poradził ;-)

Dajcie znać jak wiecie coś więcej, czy coś trzeba poprawić czy co.

Pozdraiwam,

Netgear WDNR3700 v2
Gargoyle 1.6.2.2 (r42647)
Modem 3G: Huawei E372

2

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

Zmień sobie skrypt żeby nie podnosił "wan" tylko ten który ma być aktywny w danym momencie czasowym

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3 (edytowany przez janptak 2011-10-09 19:46:09)

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

a jak to zrobić. Na razie dodałem po prostu w komendzie "ifup wan wan2" ale jak to zrobić by sprawdzał dwa modemy i startował zawieszony? Teraz po prostu pinguje 8.8.8.8 i tyle. Gdy oba modemy nie są połączone to to działa, ale jak choć jeden jest połączony to ping przechodzi i skrypt nic nie robi.

Netgear WDNR3700 v2
Gargoyle 1.6.2.2 (r42647)
Modem 3G: Huawei E372

4

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

Ponieważ przy multiwanie oba są zawsze aktywne - musiał byś zmodyfikować multiwana zeby przy przełączeniu zostawiał gdzieś informacje który interfejes jest aktywny. Bez tego nie będziesz wiedział który podnieść.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

ping -I nazwa_interfejsu 8.8.8.8

Moje modemy E173 oba podnosiły się automatycznie, nawet gdy jeden odłączyłem i ponownie przyłączyłem sam wstawał.
W sumie to ja tylko dograłem luci-multiwan i u mnie już działało.

6

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

Niestey u mnie nie restartują się automatycznie - może mam coś źle skonfigurowane? T

Teraz skrypt do restartu wygląda  tak:

#!/bin/sh
    if ! ping -q -c 1 -W 10 8.8.8.8 > /dev/null; then
        (ifup wan wan2) &
    fi

Przerobić go tak:

#!/bin/sh
if ! ping -q -c 1 -W 10 wan 8.8.8.8 > /dev/null; then
        (ifup wan) &
    fi

if ! ping -q -c 1 -W 10 wan2 8.8.8.8 > /dev/null; then
        (ifup wan2) &
    fi

Czy to ma sens?

Netgear WDNR3700 v2
Gargoyle 1.6.2.2 (r42647)
Modem 3G: Huawei E372

7

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

-I 3g-wan2, nie samo wan2.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

CZyli

#!/bin/sh
if ! ping -q -c 1 -W 10 3g-wan 8.8.8.8 > /dev/null; then
        (ifup wan) &
    fi

if ! ping -q -c 1 -W 10 3g-wan2 8.8.8.8 > /dev/null; then
        (ifup wan2) &
    fi

Powinno zadziałać?

Netgear WDNR3700 v2
Gargoyle 1.6.2.2 (r42647)
Modem 3G: Huawei E372

9

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

-I Ci ciągle brakuje...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

10 (edytowany przez janptak 2011-10-10 06:35:39)

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

Jasne ;-)

A teraz jest już ok?

#!/bin/sh
if ! ping -q -c 1 -W 10 -I 3g-wan 8.8.8.8 > /dev/null; then
        (ifup wan) &
    fi

if ! ping -q -c 1 -W 10 -I 3g-wan2 8.8.8.8 > /dev/null; then
        (ifup wan2) &
    fi

Update: wpisałem tak i zobaczymy czy będzie ok. Na razie powstały dwa modemy więc powinno być ok.

Netgear WDNR3700 v2
Gargoyle 1.6.2.2 (r42647)
Modem 3G: Huawei E372

11 (edytowany przez janptak 2011-10-11 11:15:17)

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

Jak mogę dodać do skryptu własną komendę aby restartował także multiwan po restarcie modemu?

Czy to powinno wyglądać tak:

#!/bin/sh
if ! ping -q -c 1 -W 10 -I 3g-wan 8.8.8.8 > /dev/null; then
        (ifup wan) &
        (/etc/init.d/multiwan restart) &
    fi

if ! ping -q -c 1 -W 10 -I 3g-wan2 8.8.8.8 > /dev/null; then
        (ifup wan2) &
        (/etc/init.d/multiwan restart) &
    fi

Nie wiem jak to zrobić ale najlepiej by było gdyby z multiwanem poczekał kilka sekund zanim modem ponownie nawiąże połączenia.

Netgear WDNR3700 v2
Gargoyle 1.6.2.2 (r42647)
Modem 3G: Huawei E372

12

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

Juz lepiej

(ifup wan; /etc/init.d/multiwan restart) &

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

13

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

rzeczywiście lepiej!

A czy można opóźnić wykonanie multiwana o kilka sekund?

Netgear WDNR3700 v2
Gargoyle 1.6.2.2 (r42647)
Modem 3G: Huawei E372

14

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

(ifup wan; sleep 5; /etc/init.d/multiwan restart) &

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

15

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

Dziękuję!

Netgear WDNR3700 v2
Gargoyle 1.6.2.2 (r42647)
Modem 3G: Huawei E372

16

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

@Cezary -   Powiedz proszę czy nie uważasz że jeśli paczka multiwan byłaby przekompilowana przez Ciebie tak jak wiele innych pakietów to lepiej by działała? Czy to nie ma znaczenia?

Pozdrawiam,

Netgear WDNR3700 v2
Gargoyle 1.6.2.2 (r42647)
Modem 3G: Huawei E372

17

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

Biorąc pod uwagę że multiwan to tylko skrypty - nie, była by taka sama smile

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

18

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

LOL, a to przepraszam ;-)

Netgear WDNR3700 v2
Gargoyle 1.6.2.2 (r42647)
Modem 3G: Huawei E372

19

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

Testuje teraz modyfikacje startu multiwan zaproponowaną przez joloulis w wątku https://forum.openwrt.org/viewtopic.php … 0#p146310.

Powinno to rozwiązać problemy z wznawianiem połączenia ppp przez health monitor.

NA początku pliku configu trzeba przestawić healthmonitor  w tryb serial.:

config 'multiwan' 'config'
    option 'health_monitor' 'serial'
Netgear WDNR3700 v2
Gargoyle 1.6.2.2 (r42647)
Modem 3G: Huawei E372

20 (edytowany przez kowalmisiek 2017-01-31 15:25:45)

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

Panowie a czy istnieje taka możliwość w multiwan żeby:
Są 2 routery i 2 różnych dostawców w jednej sieci.
Część klientów ma od jednego dostawcy a druga część od drugiego (wszyscy są w jednej puli adresowej).
Chodzi mi o to że na jednym routerze openwrt robię multiwan i żeby on dzielił tak jak jest obecnie a w razie awarii jednego z routerów przełączał wszystkich na ten działający i ewentualnie resetował router niedziałający?

21

Odp: [HowTo] Loadbalancing na dwóch modemach 3G w MultiWan.

Postaw trzeci router i na nim mwan3? I będziesz miał failover.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.