Tomato - opóźnienie startu WAN
|
foooox |
Dodano 19-07-2015 11:13
|
Power User
Posty: 200
Dołączył: 25/09/2008 13:02
|
Witam.
Kilka tygodni temu mój ISP wymienił infrastrukturę ze skrętki na światłowody. Teraz przed ruterem ASUS RT-N16 z Tomato na pokładzie mam modem/ruter DASAN H645G bez jakiejkolwiek możliwości zalogowania się do niego. Problem polega na tym, że po zaniku zasilania DHCP mojego ASUSa nie pobiera publicznego adresu IP od ISP, tylko jakiś prywatny adres 192.168.1.101 i nie mam wtedy Internetu. Ręczne odnowienie (Renew) adresu na WANie lub restart rutera z poziomu WWW rozwiązują ten problem. Podejrzewam, że po pojawieniu się zasilania ASUS wstaje wcześniej od DASANa i po prostu pobiera adres z serwera DHCP DASANa. I teraz moje pytanie. Czy da się jakoś w Tomato opóźnić start WANu tak, żeby DASAN zdążył wystartować i zsynchronizować się z infrastrukturą mojego ISP?
Teoretycznie mam rozwiązanie tego problemu. Otóż w teorii posiadam zmienne publiczne IP, które w praktyce jest stałe. Mógłbym zatem ustawić stałe IP na WANie. Niestety mojemu ISP w ostatnich latach zdarzyło się kilka razy zmienić moje IP, więc wolałbym nie ustawiać stałego IP na WANie.
Z góry dzięki za pomoc. |
|
|
|
Tasiorsa |
Dodano 20-07-2015 10:50
|
User
Posty: 116
Dołączył: 09/11/2007 02:32
|
Wstaw sobie taki skrypt:
#START: Reboot on signal loss
sleep 60
while [ "`ping -c 3 8.8.8.8|grep 100%`" == "" ]
do
sleep 600
done
reboot
#END: Reboot on signal loss
A w ogole to sam mialem Dasan H645G. Dogadalem sie i wymieniono mi go na urządzenie V-Solution które pracuje w Bridge. Autoryzacja PPOE odbywa sie na Tomato. Uwazam ze działa to dużo lepiej niz Dasan z DMZ :) |
|
|
|
foooox |
Dodano 20-07-2015 12:09
|
Power User
Posty: 200
Dołączył: 25/09/2008 13:02
|
Dzięki za pomoc! Podsunąłeś mi dobry pomysł. Spróbuje się najpierw dogadać z ISP, żeby wyłączył serwer DHCP na DASANie. Jeśli okaże się to niemożliwe lub ASUS pobiera IP z jakiegoś innego serwera DHCP znajdującego się w infrastrukturze ISP, to trochę Cię pomęczę i pokombinuje z zaproponowanym przez Ciebie skryptem. Jeszcze raz dzięki za pomoc!
Połączony z 21 July 2015 09:04:00:
No i nie dogadałem się z ISPR30; Pozostaje mi więc kombinowanie ze skryptem, co do którego mam kilka pytań:
1. Czy zamiast komendy RrebootR1; można użyć innej, np. RreconnectR1; lub RrenewR1;? Wolałbym uniknąć restartowania rutera za każdym razem gdy brak jest odpowiedzi ping.
2. Czy zamiast RdoR1; nie powinno być przypadkiem RtoR1;?
3. Do której zakładki w Tomato mam wkleić ten skrypt? Firewall? WAN Up? Czy może jeszcze innej.
Od razu zaznaczam, że na LinuxR17;ie się nie znam w ogóle, więc z góry dziękuję za pomoc.
Edytowany przez foooox dnia 21-07-2015 09:04
|
|
|
|
shibby |
Dodano 21-07-2015 09:16
|
SysOp
Posty: 17109
Dołączył: 15/01/2009 20:30
|
zamiast reboot możesz dać:
service wan restart
Skrypt Tasiorsa trochę bym zmodyfikował. Po pierwsze wywaliłbym sleep 60. Po drugie zamiast sleep 600 dałbym właśnie service wan restart i zaprzeczył warunek. Czyli gdy jeżeli mamy 100% lossa to restartuj usługę WAN. Całość można umieścić w shedulerze np. co 5min lub częściej. W ten sposób otrzymujemy watchodoga
Cytat if [ "`ping -c 3 8.8.8.8 | grep 100% | wc -l`" == "1" ]; then
service wan restart
fi
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology SA6400
VM VPS: Debian, WWW, Home Assistant
Switch: Netgear MS510TXPP
Switch: Ubiquiti USW-Flex-mini - szt. 2
Wi-Fi: Ubiquiti U6-Lite - szt. 2
|
|
|
|
foooox |
Dodano 21-07-2015 09:22
|
Power User
Posty: 200
Dołączył: 25/09/2008 13:02
|
Dzięki za pomoc. Wieczorem przetestuje skrypt i dam znać czy wszystko jest OK.
Połączony z 21 July 2015 12:56:56:
Shibby, a mógłbyś przerobić podany skrypt tak, żeby wysyłał tylko jeden ping? W schedulerze ustawiłbym wtedy częstotliwość jego uruchamiania co 60 sekund i miałbym kontrolę łącza pojedynczym pingiem co minutę. Ja po prostu nie wiem co mam wpisać w miejsce 100%, czy mam usunąć parametr -c, czy może zamiast 3 wstawić 1...
Będę wdzięczny...
Edytowany przez foooox dnia 21-07-2015 12:56
|
|
|
|
Tasiorsa |
Dodano 21-07-2015 13:17
|
User
Posty: 116
Dołączył: 09/11/2007 02:32
|
@fooox zotaw 3. Jedynka jest niemiarodajna. Zawsze sie może coś przydażyć i pojedynczy ping nie odpowie. |
|
|
|
shibby |
Dodano 21-07-2015 13:28
|
SysOp
Posty: 17109
Dołączył: 15/01/2009 20:30
|
jw. zostaw 3. Skrypt wykonuje się dosłownie 3sek jeżeli ping jest i ok 20sek jeżeli są timeouty. Ponadto też nie dawałbym wykonywania go co 60sek. W niektórych przypadkach proces łączenia może trwać dłużej niż minutę (np. 3G, 4G, PPP a nawet dhcp) i trafisz na wieczną pętlę. Proponuję dać co 3min. Tak by mieć pewność, że połączenie WAN faktycznie się nie powiodło.
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology SA6400
VM VPS: Debian, WWW, Home Assistant
Switch: Netgear MS510TXPP
Switch: Ubiquiti USW-Flex-mini - szt. 2
Wi-Fi: Ubiquiti U6-Lite - szt. 2
|
|
|
|
foooox |
Dodano 21-07-2015 22:34
|
Power User
Posty: 200
Dołączył: 25/09/2008 13:02
|
Niestety, ale skrypt:
if [ "`ping -c 3 8.8.8.8 | grep 100% | wc -l`" == "1" ]; then
service wan restart
fi
ustawiony w Schedulerze co 3 minuty nie działa... Po włączeniu zasilania czekałem cierpliwe 10 minut.
Połączony z 21 July 2015 23:13:15:
Ale za to wykonanie tego skryptu w System Commands już odświeża IP na WAN. Wygląda na problem z Schedulerem...
Edytowany przez foooox dnia 21-07-2015 23:13
|
|
|
|
Tasiorsa |
Dodano 22-07-2015 00:07
|
User
Posty: 116
Dołączył: 09/11/2007 02:32
|
Ja uzywałem tego skryptu bez Schedulera w administration->scripts->init i działało to bardzo dobrze:
#!/bin/sh
# seconds between checks
WATCHDOG_SLEEP_SEC=180
# hostname or IP to ping
WATCHDOG_SITE=8.8.8.8
while sleep $WATCHDOG_SLEEP_SEC
do
if ping -c 3 $WATCHDOG_SITE > /tmp/null
then
echo "$WATCHDOG_SITE ok"
else
logger "$WATCHDOG_SITE missed ping"
sleep 4
if ! ping -c 3 $WATCHDOG_SITE > /tmp/null
then
logger "$WATCHDOG_SITE down, refreshing DHCP"
killall -SIGUSR2 udhcpc
sleep 2
killall -SIGUSR1 udhcpc
fi
fi
done 2>&1 & |
|
|
|
shibby |
Dodano 22-07-2015 08:34
|
SysOp
Posty: 17109
Dołączył: 15/01/2009 20:30
|
spróbuj dodać #!/bin/sh na początku skryptu.
Skrypt Tasiorsa też wygląda ok, tylko wywal linijki killall-SIGUSR i wstaw w to miejsce service wan restart
Wtedy będzie uniwersalny skrypt bez względu na wybrany typ WANu.
@Tasiorsa: zamiast kilować udhcpc można w tomato wydać komendy:
udhcpc-release
udhcpc-renew
pozdro.
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology SA6400
VM VPS: Debian, WWW, Home Assistant
Switch: Netgear MS510TXPP
Switch: Ubiquiti USW-Flex-mini - szt. 2
Wi-Fi: Ubiquiti U6-Lite - szt. 2
|
|
|
|
foooox |
Dodano 22-07-2015 12:52
|
Power User
Posty: 200
Dołączył: 25/09/2008 13:02
|
OK. przetestuję wieczorem i dam znać co i jak.
Nie ukrywam, że wolałbym używać ten mniejszy skrypt w Schedulerze, bo ten od Tasiorsa jest dla mnie black magic...
Połączony z 22 July 2015 22:58:13:
Niestety, po dodaniu #!/bin/sh skrypt w Schedulerze nadal się nie wykonuje. Mam Tomato v121. Nie wiem czy to ma jakieś znaczenie...
Za to ten "duży" skrypt Tasiorsa wstawiony do Init działa.
Mam pytanie czy poniższy "składak" jest poprawny?
#START: WatchDog ON
sleep 60
while [ "`ping -c 3 8.8.8.8|grep 100%`" == "" ]
do
sleep 180
done
service wan restart
#END: WatchDog OFF
Jeśli tak, to gdzie mam go wkleić, żeby sprawdzić czy działa? I czy ten skrypt będzie uruchamiany co 3 minuty?
Edytowany przez foooox dnia 22-07-2015 22:58
|
|
|
|
Tasiorsa |
Dodano 22-07-2015 23:18
|
User
Posty: 116
Dołączył: 09/11/2007 02:32
|
@fooox jak ci dziala mój skrypt to po co kombinować. Zostaw tak jak dziala i zajmij się używaniem tego netu |
|
|
|
foooox |
Dodano 23-07-2015 07:07
|
Power User
Posty: 200
Dołączył: 25/09/2008 13:02
|
Tasiorsa, pojemność nvram mi się powoli wyczerpuje. Więc im mniejszy skrypt, tym dla mnie lepiej...
Połączony z 23 July 2015 11:27:40:
@Tasiorsa, podpowiedz mi chociaż gdzie ten skrypt wkleić, żeby sprawdzić czy w ogóle działa? I czy ten skrypt będzie uruchamiany co 3 minuty?
Edytowany przez foooox dnia 23-07-2015 11:27
|
|
|
|
Tasiorsa |
Dodano 23-07-2015 16:05
|
User
Posty: 116
Dołączył: 09/11/2007 02:32
|
A czemu nie sformatujesz jiffs. Nie wrzucisz tam skryptu jako wan_check.sh (mod +x) i z init nie odpalasz tylko /jffs/wan_check.sh &
Wtedy nic ci nie zapycha nvram... |
|
|
|
foooox |
Dodano 25-07-2015 21:40
|
Power User
Posty: 200
Dołączył: 25/09/2008 13:02
|
Podsumowanie... Powyższy "składak" wklejony do Init działa. Nie wiem tylko, czy odpala się co 3 minuty. Ale sądzę, że tak. Skoro dwóch fachowców to zaproponowało i nie zgłaszało zastrzeżeń...
Dziękuję koledzy za pomoc. |
|
|
|
Obserwator |
Dodano 30-03-2016 11:04
|
User
Posty: 101
Dołączył: 30/03/2016 11:01
|
Czy ktoś to poskłada w logiczną całosć i napisze ten skrypt ? |
|
|
|
branetre |
Dodano 30-03-2016 14:19
|
Moderator
Posty: 816
Dołączył: 15/01/2011 10:10
|
#!/bin/sh
# seconds between checks
WATCHDOG_SLEEP_SEC=180
# hostname or IP to ping
WATCHDOG_SITE=8.8.8.8
while sleep $WATCHDOG_SLEEP_SEC
do
if ping -c 3 $WATCHDOG_SITE > /tmp/null
then
echo "$WATCHDOG_SITE Test ok"
else
logger "$WATCHDOG_SITE Utracono ping"
sleep 5
if ! ping -c 3 $WATCHDOG_SITE > /tmp/null
then
logger "$WATCHDOG_SITE Restart interfejsu WAN"
service wan restart
fi
fi
done 2>&1 &
w/w wklej do init i zapisz. 180 sek to 3 min. więc co tyle będziesz mieć test |
|
|
|
shibby |
Dodano 30-03-2016 14:48
|
SysOp
Posty: 17109
Dołączył: 15/01/2009 20:30
|
a najnowszysch wersjach tomato macie już watchdoga wkompilowanego.
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology SA6400
VM VPS: Debian, WWW, Home Assistant
Switch: Netgear MS510TXPP
Switch: Ubiquiti USW-Flex-mini - szt. 2
Wi-Fi: Ubiquiti U6-Lite - szt. 2
|
|
|
|
Obserwator |
Dodano 31-03-2016 11:04
|
User
Posty: 101
Dołączył: 30/03/2016 11:01
|
Czy chodzi o tego czuwajacego psa ?
Czasami wiesza mi sie radiowka i potrzebny jest restart routera lub polaczenia z internetem. Czy ta opcja z mojego obrazka restartuje polaczenie z internetem ? Czy jak ?
Połączony z 31 marzec 2016 11:10:36:
@branetre czy w polu # hostname or IP to ping wpisuje jakis adres itp ?
Edytowany przez Obserwator dnia 31-03-2016 11:10
|
|
|
|
shibby |
Dodano 31-03-2016 11:52
|
SysOp
Posty: 17109
Dołączył: 15/01/2009 20:30
|
tak, dokładnie tak. warto też poczekać na v136 gdzie cały watchdog zostanie doszczętnie przebudowany by jeszcze lepiej wykrywał pady i powroty łącza
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology SA6400
VM VPS: Debian, WWW, Home Assistant
Switch: Netgear MS510TXPP
Switch: Ubiquiti USW-Flex-mini - szt. 2
Wi-Fi: Ubiquiti U6-Lite - szt. 2
|
|
|