Cześć jaros85, przeglądając to forum wpadłem na Twój temat i mam chyba pewne doświadczenia, z którym chciałbym się podzielić.
W pierwszej sprawie to konfiguracja mwan3. Nie podawaj żadnego źródła do pingowania hosta - wtedy mwan3 będzie brał pod uwagę tylko stan z opcji initial_state, która jest online. Będzie się zgłaszał ten WAN jako "online and tracking is not enabled" oraz WebGUI jako "Status: Wyłączony" - nie ważne czy masz aktualnie aktywną sesję w Aero2, czy nie oraz czy działa na karcie Aero2 dostęp do Internetu czy nie - interfejs zawsze będzie uznawany za działający, dlatego uważam że nie warto używać go w "Load Balancingu" z innym interfejsem o tej samej metryce oraz na pewno zastosować go jako ostatnią metrykę w failoverze.
# nano /etc/config/mwan3
...
config interface 'wan_aero2'
option enabled '1'
option initial_state 'online'
#list track_ip '8.8.8.8' <--- zakomentować
option family 'ipv4'
option flush_conntrack 'never'
...
Potwierdź te ustawienia poprzez poniższą komendę i zrestartuj usługę:
# uci commit mwan3
# mwan3 restart
Następnie trzeba wyskrobać skrypt w bashu uruchamiany przy starcie routera i działający w tle (np. /etc/rc.local):
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
sh /root/aero2_reset.sh &
exit 0
Musiałby działać na zasadzie nieskończonej pętli, w której będzie sprawdzany brak dostępu do Internetu na interfejsie Aero2. Jeśli taka sytuacja nastąpi skrypt powinien zresetować ten interfejs i nawiązać połączenie od nowa. Utwórz plik /root/aero2_reset.sh
#!/bin/sh
# Interfejs logiczny (np. wan, wan2, aero2, mobile)
INTERFACE_LOGICAL="wan_aero2"
# Interfejs fizyczny (np. eth2, wwan0)
INTERFACE_PHYSICAL="wwan0"
# Szybkosc dzialania (np. od 1 do 5)
TIMEOUT=2
# Sprawdzanie zycia hostow z ponizszej listy
TRACKS_IP=" \
8.8.8.8 \
8.8.4.4 \
"
# Funkcja restartujaca polaczenie lub modem hilink
function reset {
# Modem szeregowy (np. przez QMI)
ifdown $INTERFACE_LOGICAL
ifup $INTERFACE_LOGICAL
# Modem HiLink wykrywany jako karta sieciowa przez ADB (Wymagane "opkg update" i "opkg install adb")
#adb kill-server > /dev/null
#adb connect 192.168.8.1 > /dev/null
#adb shell "echo -en 'AT^RESET\r' > /dev/appvcom1" > /dev/null
#adb kill-server > /dev/null
}
#########################################################
################### Skrypt wykonawczy ###################
#########################################################
while true
do
OFFLINE=true
for TRACK_IP in $TRACKS_IP
do
if ping -I $INTERFACE_PHYSICAL -c 1 -w $TIMEOUT -W $TIMEOUT $TRACK_IP > /dev/null; then
OFFLINE=false
fi
sleep $TIMEOUT
done
if [ "$OFFLINE" == "true" ]; then
reset
sleep 900
fi
sleep $(( TIMEOUT * 2 ))
done
Podajemy nazwy interfejsów fizycznego i logicznego, czas zadziałania (tak sobie to nazwałem), liste ip hostów do pingowania oraz w funkcji "reset" piszemy skrypt resetowania lub odkomentowujemy to co mamy dostepne, czyli resetowanie modemu szeregowego lub modemu HiLink z otwartym dostępem przez ADB i Telnet.
Tego skryptu nie przygotowałem do obsługi kilku kart sim, ponieważ nie widzę sensu w stosowaniu dwóch kart Aero2, ale jeśli ktoś chciałby używać tego skryptu dla kilku kart sim to proponuję skopiować ten plik kilka razy i używać oddzielnie dla każdej karty sim:
- /root/aero2_sim1_reset.sh
- /root/aero2_sim2_reset.sh
- /root/aero2_sim3_reset.sh
Dodatkowo pamiętaj, że po automatycznym zrestartowaniu się połączenia jeśli strona z captcha nie chce się wyświetlić:
- należy wywołać stronę www bez szyfrowania SSL (czyli http: // zamiast https: // )
- w routerze /etc/config/dhcp -> option rebind_protection '0' (niezalecane)