24 Listopada 2024 01:16:42
Nawigacja
· Strona Główna
· Forum

· Tomato by Shibby
· FreshTomato


Wątki na forum
Najnowsze dyskusje
· [S] Asus RT-AC56U
· DIR868l OFW asus vs ...
· Szukam zaproszenia n...
· [MOD] FreshTomato-AR...
· Asus RT-AC5300 ,prob...
· archer c6 v3.20
· [S] Nighthawk R7000P...
· [S]Asus RT-AC5300 - ...
· Tanie N100 na promce...
· net z telefonu wifi+...
· Tomato - bugi/proble...
· HUAWEI z światłowodem
· Asus TUF-AX3000_V2 p...
· rt-ax88upro częste ...
· [Howto] Xpenology na...
· Jaki router pod Open...
· Ruter z tomato
· Czy to jeszcze NAS?
· RT AC66U B1
· Wireguard na FreshTo...
Najpopularniejsze obecnie wątki
· DIR868l OFW asus ... [8]
· [S] Asus RT-AC56U [0]
Ankieta
Jaki procesor posiada twój router?

Broadcom MIPSEL
Broadcom MIPSEL
36% [151 głosów]

Broadcom ARM
Broadcom ARM
52% [219 głosów]

Atheros
Atheros
5% [22 głosów]

Marvell
Marvell
1% [4 głosów]

Ralink
Ralink
1% [3 głosów]

Intel/AMD/VIA
Intel/AMD/VIA
1% [5 głosów]

Żaden z powyższych
Żaden z powyższych
4% [15 głosów]

Ogółem głosów: 419
Musisz zalogować się, aby móc zagłosować.
Rozpoczęto: 02/02/2015 09:38
Twoje IP
3.145.34.51
Zobacz wątek
 Drukuj wątek
[HOWTO] MultiRoom SerwerOVPN na EDGERouter - Połączenie pod kontrolą
hermes-80
Jak wiemy w dzisiejszych czasach każdy musi sobie jakoś radzić, a wiec i nasza społeczność też znalazła sposób aby ominąć lokalna sieć w systemach MultiRoom i puścić usługę w dalsze zakątki pajęczyny.
Usługodawca nie ułatwia nam sprawy w zakresie diagnostyki połączeń szczególnie w sieci lokalnej wycinając protokół diagnostyczny na dekoderach co prowadzi do braku możliwości diagnozy poprawnego fizycznego połączenia miedzy dekoderami w warstwie 2 sieci.
To najbardziej mnie frustrowało, że problem dopiero dostrzegamy gdy znika obraz na którymś z tv systemu MR, a pani na infolinii każe mi sprawdzić ustawienia DNS-a na interfejsie dekoderów.

Podczas awarii nawet w sieci LAN pierwszym punktem zanim gdzieś zadzwonimy powinno być sprawdzenie fizycznego połączenia miedzy dekoderami, bo to może się wtyczka przekrzywić, switch oszaleć, czy kabel uszkodzić. Niby w dekoderach cyfry jest wbudowany w interfejs narzędzie diagnostyczny ale nie raz się już przekonałem, że to raczej żart, a jego główną zaletą jest zawieszanie się ;) i najczęściej pomocny bywa jedynie przy fabrycznym resecie dekodera.

"Jak tu żyć" - parafrazując słynnego swego czasu rolnika, a może jednak da się coś zrobić. Z pomocą przychodzi nam protokół ARP i jego mechanizmy komunikacji w warstwie drugiej. Jego podstawowa zaleta jest taka, że działa w oparciu tylko o warstwę druga i domenę rozgłoszeniową.

Na razie odniesiemy się do routera EDGERouter choć na Tomato jest to jeszcze prostsze (może dla tego że więcej czasu w grzebaniu po systemie tam się spędziło).

1. Skoro mamy już zainstalowane repozytorium na routerze:https://openlinksys.info/forum/viewth...d_id=22604 to sobie doinstalujemy narzędzie:

ubnt@ubnt:~$ sudo apt-get update
ubnt@ubnt:~$ sudo apt-get install arping


I to tak na prawdę wszystko co nam potrzebne jest do realizacji celu.
Teraz wystarczy tylko napisać skrypt ;). Każdy może sobie to zrobić we własnym zakresie i przypływie weny twórczej.

Dla niewtajemniczonych podzielę się własnym wytworem fantazji.

Wiemy już po lekturze przenoszenia skryptu smpt-cli jak należy go zapisać na routerze i nadać mu prawa

ubnt@ubnt:~$ chmod 777 /config/CheckL2MR_EDGE.sh




#!/bin/bash
clear
R1="0*Cinek_Router_Server_OVPN"
R2="192.168.2.153*Cinek_MR_Server_MR"
R3="192.168.2.152*Cinek_MR_Client_MR_1"
R4="192.168.2.1*Marian_Rouer_Client_OVPN_1"
R5="192.168.2.2*Marian_MR_Client_MR_1_Marian"
R6="192.168.2.3*Marian_MR_Client_MR_2_Michal"
R7="192.168.2.10*Grzesiek_Router_Client_OVPN_2"
R8="192.168.2.11*Grzesiek_RR_Client_RR_1"
R9="0*Brak"
R10="0*Brak"
R11="0*Brak"
R12="0*Brak"
BR="br0"
for A in $R1 $R2 $R3 $R4 $R5 $R6 $R7 $R8 $R9 $R10 $R11 $R12
   do
   IP=`echo "$A" |awk -F"*" '{printf $1}'`
   OPIS=`echo "$A" |awk -F"*" '{printf $2}'`
      if [ "$IP" != 0 ] then
      PING=`sudo /usr/sbin/arping -I "$BR" "$IP" -c 5 |grep "0 reply" |wc -l`
         if [ "$PING" = 1 ] then
         echo "---------------------------------------------------------------------"
         echo `date`
         echo "Brak_polaczenia ----- $OPIS ----- $IP"
         fi
         if [ "$PING" = 0 ] then
         echo "---------------------------------------------------------------------"
         echo `date`
         echo "OK ----- $OPIS ----- $IP"
         echo "---------------------------------------------------------------------"
         fi
      fi
done
exit 0


Trochę o konfiguracji:
- R1-R12 to zmienne definiujące nasze IP i opisy routerów i dekoderów, a separatorem jest *
Pierwsze pole wpisujemy IP dekodera/routera(most vpn), a drugie opis (może być dowolny lecz ciągłym tekstem bez spacji). Zalecam rozdzielenie opisów między dekoderami a routerami bo to w czytelny sposób wyświetli nam wynik i pomoże zlokalizować usterkę.

- Aby wykluczyć dana zmienna R w sprawdzaniu bo np.: nie mamy takiej ilości sprzętu w sieci wystarczy zamiast IP wpisać 0.
- BR to bridge do którego wpięliśmy interfejs tap na routerze

Jest to skrypt, który sprawdza nam połączenie w czasie rzeczywistym czyli odpalamy konsole i dostajemy wynik:
Skrypt umieszczony w lokalizacji /config

IP wszystkich uprzedzeń wymienionych w tym przypadku musi być stałe nadane z palca lub przez statyczny DHCP - by to miało sens.

Interpretacja wyniku:



ubnt@ubnt:~$ /config/./CheckL2MR_EDGE.sh


Cytat

---------------------------------------------------------------------
Sat May 1 11:57:07 CEST 2021
OK ----- Cinek_MR_Server_MR ----- 192.168.2.153
---------------------------------------------------------------------
---------------------------------------------------------------------
Sat May 1 11:57:12 CEST 2021
OK ----- Cinek_MR_Client_MR_1 ----- 192.168.2.152
---------------------------------------------------------------------
---------------------------------------------------------------------
Sat May 1 11:57:18 CEST 2021
OK ----- Marian_Rouer_Client_OVPN_1 ----- 192.168.2.1
---------------------------------------------------------------------
---------------------------------------------------------------------
Sat May 1 11:57:23 CEST 2021
OK ----- Marian_MR_Client_MR_1_Marian ----- 192.168.2.2
---------------------------------------------------------------------
---------------------------------------------------------------------
Sat May 1 11:57:28 CEST 2021
OK ----- Marian_MR_Client_MR_2_Michal ----- 192.168.2.3
---------------------------------------------------------------------
---------------------------------------------------------------------
Sat May 1 11:57:33 CEST 2021
OK ----- Grzesiek_Router_Client_OVPN_2 ----- 192.168.2.10
---------------------------------------------------------------------
---------------------------------------------------------------------
Sat May 1 11:57:38 CEST 2021
OK ----- Grzesiek_MR_Client_MR_1 ----- 192.168.2.11
---------------------------------------------------------------------
ubnt@ubnt:~$

Tak wygląda wynik gdy wszystko jest w porządku. Połączenie między routerem na którym stoi serwer vpn jest z każdym elementem sieci vpn (końcówka tunelu reprezentowana przez IP routerów i klientami czyli IP dekoderów) w drugiej warstwie sieciowej.



ubnt@ubnt:~$ /config/./CheckL2MR_EDGE.sh


Cytat

---------------------------------------------------------------------
Sat May 1 11:57:07 CEST 2021
Brak_polaczenia ----- Cinek_MR_Server_MR ----- 192.168.2.153
---------------------------------------------------------------------
---------------------------------------------------------------------
Sat May 1 11:57:12 CEST 2021
Brak_polaczenia ----- Cinek_MR_Client_MR_1 ----- 192.168.2.152
---------------------------------------------------------------------
---------------------------------------------------------------------
Sat May 1 11:57:18 CEST 2021
OK ----- Marian_Rouer_Client_OVPN_1 ----- 192.168.2.1
---------------------------------------------------------------------
---------------------------------------------------------------------
Sat May 1 11:57:23 CEST 2021
OK ----- Marian_MR_Client_MR_1_Marian ----- 192.168.2.2
---------------------------------------------------------------------
---------------------------------------------------------------------
Sat May 1 11:57:28 CEST 2021
Brak_polaczenia ----- Marian_MR_Client_MR_2_Michal ----- 192.168.2.3
---------------------------------------------------------------------
---------------------------------------------------------------------
Sat May 1 11:57:33 CEST 2021
OK ----- Grzesiek_Router_Client_OVPN_2 ----- 192.168.2.10
---------------------------------------------------------------------
---------------------------------------------------------------------
Sat May 1 11:57:38 CEST 2021
OK ----- Grzesiek_MR_Client_MR_1 ----- 192.168.2.11
---------------------------------------------------------------------
ubnt@ubnt:~$


Gdy widzimy, że brak połączenia występuje tylko na dekoderach MR klienckich, a nasze połączenie spinających tunel jest OK przyczyny problemu szukamy fizycznie od kabla wpiętego w końcówkę klienta vpn po nasz dekoder. Najczęściej reset fabryczny dekodera klienckiego pomaga.

Co innego gdy nasz serwer MR nie odpowiada to mimo iż cała sieć działa sprawnie padnie nam usługa MR na klienckich dekoderach - tak właśnie wykryłem niesprawność sprzętowo/softwarową w trybie czuwania dekodera matki i skończył życie w serwisie (wymiana na nowy).

Ostatni wariant to gdy nie mamy połączenia z końcówką tunelu vpn:


ubnt@ubnt:~$ /config/./CheckL2MR_EDGE.sh


Cytat

---------------------------------------------------------------------
Sat May 1 11:57:07 CEST 2021
OK ----- Cinek_MR_Server_MR ----- 192.168.2.153
---------------------------------------------------------------------
---------------------------------------------------------------------
Sat May 1 11:57:12 CEST 2021
OK ----- Cinek_MR_Client_MR_1 ----- 192.168.2.152
---------------------------------------------------------------------
---------------------------------------------------------------------
Sat May 1 11:57:18 CEST 2021
Brak_polaczenia ----- Marian_Rouer_Client_OVPN_1 ----- 192.168.2.1
---------------------------------------------------------------------
---------------------------------------------------------------------
Sat May 1 11:57:23 CEST 2021
Brak_polaczenia ----- Marian_MR_Client_MR_1_Marian ----- 192.168.2.2
---------------------------------------------------------------------
---------------------------------------------------------------------
Sat May 1 11:57:28 CEST 2021
Brak_polaczenia ----- Marian_MR_Client_MR_2_Michal ----- 192.168.2.3
---------------------------------------------------------------------
---------------------------------------------------------------------
Sat May 1 11:57:33 CEST 2021
OK ----- Grzesiek_Router_Client_OVPN_2 ----- 192.168.2.10
---------------------------------------------------------------------
---------------------------------------------------------------------
Sat May 1 11:57:38 CEST 2021
OK ----- Grzesiek_MR_Client_MR_1 ----- 192.168.2.11
---------------------------------------------------------------------

Oznacza to że automatycznie cały segment sieci VPN będzie zgłaszał brak połączenia czyli wszystkie dekodery umieszczone w tym segmencie. Zazwyczaj oznacza to na problem z nawiązaniem połączenia vpn - padł tunel vpn/router/konfiguracja vpn lub brakiem prądu w danej lokalizacji.


Powyższy opis przedstawia nam sytuacje detekcji problemu w czasie rzeczywistym - ale chodzi nam bardziej o to by skrypt czuwał za nas i tylko podczas wykrycia jakiegoś problemu dał nam znać byśmy mogli zadziałać zanim ktoś zgłosi problem ;)

Do tego nam był potrzebny klient smtp na EDGERouter: https://openlinksys.info/forum/viewth...d_id=22604
Skoro mamy go już zainstalowanego i przetestowaliśmy odbiór naszej poczty to zabierzmy się za skrypt.


#!/bin/bash
R1="0*Cinek_Router_Server_OVPN"
R2="192.168.2.153*Cinek_MR_Server_MR"
R3="192.168.2.152*Cinek_MR_Client_MR_1"
R4="192.168.2.1*Marian_Rouer_Client_OVPN_1"
R5="192.168.2.2*Marian_MR_Client_MR_2_Marian"
R6="192.168.2.3*Marian_MR_Client_MR_3_Michal"
R7="192.168.2.10*Grzesiek_Router-Client_OVPN_2"
R8="192.168.2.11*Grzesiek_MR_Client_MR_4"
R9="0*Brak"
R10="0*Brak"
R11="0*Brak"
R12="0*Brak"
LOK="/config/mail.txt"
TEST="/config/test"
BR=br0
PASS="hasło do poczty"
ADR="adres naszej poczty"
HOST_SMTP="adres naszego serwera smtp np dla o2 to poczta.o2.pl, dla interii poczta.interia.pl itd"
LINIA=28
echo "1" >> $TEST
DEL_LOG=`grep "1" < "$TEST" | wc -l`
if [ $DEL_LOG -ge 2 ] then
   if [ -e "$LOK" ] then
      rm "$LOK"
      if [ -e "$TEST" ] then
         rm "$TEST"
      fi
   fi   
fi
for A in $R1 $R2 $R3 $R4 $R5 $R6 $R7 $R8 $R9 $R10 $R11 $R12
   do
   IP=`echo "$A" |awk -F"*" '{printf $1}'`
   OPIS=`echo "$A" |awk -F"*" '{printf $2}'`
      if [ "$IP" != 0 ] then
      PING=`sudo /usr/sbin/arping -I "$BR" "$IP" -c 5 |grep "0 reply" |wc -l`
         if [ "$PING" = 1 ] then
         echo "-------------------------------------------------------------------------" >> "$LOK"
         echo `date` >> "$LOK"
         echo "Brak_polaczenia ----- $OPIS ----- $IP" >> "$LOK"
         echo "-------------------------------------------------------------------------" >> "$LOK"
         fi
         if [ "$PING" = 0 ] then
         echo "-------------------------------------------------------------------------" >> "$LOK"
         echo `date` >> "$LOK"
         echo "OK ----- $OPIS ----- $IP"  >> "$LOK"
         echo "-------------------------------------------------------------------------" >> "$LOK"
         sudo chmod 777 "$LOK"
         fi
      fi
done
for B in $R1 $R2 $R3 $R4 $R5 $R6 $R7 $R8 $R9 $R10 $R11 $R12
do
   IP=`echo "$B" |awk -F"*" '{printf $1}'`
   OPIS=`echo "$B" |awk -F"*" '{printf $2}'`
      if [ "$IP" != 0 ] then
      MAIL=`grep "Brak_polaczenia" < "$LOK" | grep $OPIS | wc -l`
         if [ $MAIL -ge 2 ] then
         tail -n "$LINIA" /config/mail.txt > /config/mail1.txt
         /config/smtp-cli --host="$HOST_SMTP" --port=587 -4 --hello-host=EDGERouter --disable-starttls --disable-ssl --auth-login --missing-modules-ok --user="$ADR" --pass="$PASS" --from="$ADR" --to="$ADR" --subject="MultiRoom Zawieszony" --body-plain="/config/mail1.txt"
         rm "$LOK"
         fi
      fi
done
exit 0


Zapisuje sobie go w lokalizacji pod nazwą - jak widać /config/WatchL2MR_EDGE.sh

Konfiguracja:
R1-R12 - to samo co w skrypcie poprzednim
LOK,TEST - pliki pomocnicze nie należy zmieniać jak nie trzeba
BR - to samo co w skrypcie poprzednim
PASS - hasło do naszego serwera pocztowego
ADR - adres naszej poczty
HOST_SMTP - adres naszego serwera SMTP
LINIA - liczba zależna od zdefiniowanych zmiennych R*4 u mnie mam 7 IP sprzętu więc 7*4=28

Zasada działania skryptu:
Skrypt w zależności od zdefiniowanego interwału w harmonogramie - u mnie co 15 min sprawdza nam połączenia między urządzeniami jeśli wynik będzie OK to nic nie robi.
Jednak gdy wykryje brak połączenia odnotowuje to i przy kolejnym sprawdzeniu jeśli brak połączenia powtórzy się na danym urządzeniu wysyła do nas maila co 1,5h przy interwale 15 min - ta zwłoka wynika z wykluczeniem chwilowego zaniku prądu lub przejściowych problemów.
Skrypt będzie tak długo spamował naszą pocztę, aż na połączeniach w zdefiniowanych zmiennych R nie wróci status OK.

Teraz trzeba skrypt umieścić w harmonogramie:

Odpalamy GUI i wchodzimy w zakładkę: Config tree
Przechodzimy w drzewie Configuration do pozycji
-system
-- task-scheduler
--- task
rozwijamy zakładkę:
W okienku task wpisujemy nazwę zadania: Dowolnie (Watch)
Updatelist
Dodadzą nam się kolejne pozycje pod zakładka task
- Watch
crontab-spec
interval

Tutaj wybieramy jedna z opcji crontab - https://pl.wikipedia.org/wiki/Crontab lub interwał
Dla mnie wystarczający jest interwał 15 min więc wpisuje 15m

ostatnia zakładka to executable wpisuje w niej ścieżkę do skryptu
arguments
path /config/WatchL2MR_EDGE.sh

I to by było na tyle, wynudzonych zapraszam na piwo ;).
Edytowany przez hermes-80 dnia 01-05-2021 14:39
===============================================================
Netgear WNR3500L v1
Podziękowania dla administracji Openlinksys.info!
 
shibby
elegancki opis Smile
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
 
hermes-80
W drugim skrypcie po 60 linii po
rm "$LOK"
powinno być
break
przez fi

Oraz jeszcze pomyliłem się w interwale jeśli mamy ustawione co 15 min to maila dostaniemy co 45 min.

Ale nie mogę tego już poprawić.
===============================================================
Netgear WNR3500L v1
Podziękowania dla administracji Openlinksys.info!
 
Przejdź do forum
Zaloguj
Wprowadź adres e-mail lub nazwę użytkownika

Hasło



Nie masz jeszcze konta? Zarejestruj się.

Zapomniałeś/aś hasła?
Aktualnie online
· Gości online: 90

· Użytkowników online: 0

· Łącznie użytkowników: 24,115
· Najnowszy użytkownik: Ja
Czat
Musisz się zalogować, aby opublikować wiadomość.

Maniek91PL
06-11-2024 22:37
dzięki !Grin

maxikaaz
29-10-2024 14:27
@Maniek91PL - Administration=> Admin Access, i tam masz "Allow Wireless Access" do zaznaczenia

Maniek91PL
26-10-2024 22:07
siemka! ktoś przypomni co się ustawiało jeśli nie mogę wejść od strony wifi do tomato? od lan działa

overflow2
04-10-2024 17:34
Kupowałem Asusy n10u albo n12d1 ale nie widzę ich, chyba już nie produkują, Chodzi o coś nowego i taniego. Transfery niewielkie.

maxikaaz
04-10-2024 09:38
@overflow2 patrząc po dostępności funkcji w nowych kompilacjach, to chyba nawet WRT54G/GL jeszcze ma OpenVPN, albo jakiś odpowiednik... zależy, na jakie transfery liczysz.

overflow2
30-09-2024 20:53
Jaki aktualnie najtańszy router do tomato do openvpn?

maxikaaz
27-07-2024 15:07
@servee - na początek router do rozebrania i obejrzenia, ciężko wróżyć tak tylko po objawach

maxikaaz
27-07-2024 14:55
@servee - cały kontroler nie pada tak sobie z powodu "zbiegu okoliczności",
więc prawdopodobnie gdzieś przepięcie.

servee
25-07-2024 13:33
@maxikaaz: działało, aż pewnego pięknego dnia przestało działać. W tym dniu była też burza, ale to raczej zbieg okoliczności.

maxikaaz
25-07-2024 11:38
@servee - o ile problem jest w obrębie samych wyjść (dławiki, warystory), to naprawialne, ale jeśli w samym SoC - to nienaprawialne ze względu na koszta. A co było przyczyną?

95,490,868 unikalnych wizyt