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,
Gargoyle 1.6.2.2 (r42647)
Modem 3G: Huawei E372