19 Kwietnia 2024 19:08:49
Nawigacja
· Strona Główna
· Forum

· Tomato by Shibby
· FreshTomato


Wątki na forum
Najnowsze dyskusje
· Szukam zaproszenia n...
· konfiguracja router ...
· [Howto] Xpenology na...
· dodatkowe złącza s...
· RT-N18U - nie można...
· Asus TUF-AX3000_V2 p...
· [MOD] Tomato64 (x86-64)
· Firewall nie zawsze ...
· [MOD] FreshTomato-AR...
· Optware na CIFS
· RT-AX56U - Status kl...
· [MOD] FreshTomato-MI...
· Multiroom N z wykorz...
· [S] Asus RT-AC68U E1
· [S] ASUS RT-AC68U
· Rozłączanie klient...
· serwer VPN za wan'em
· Przejscie z dyndns f...
· WDR3600 i problem z WAN
· Jaki USB hub do syno...
Najpopularniejsze obecnie wątki
· [Howto] Xpenology... [21]
· Szukam zaproszeni... [16]
· dodatkowe złącz... [4]
· konfiguracja rout... [0]
Ankieta
Jaki procesor posiada twój router?

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

Broadcom ARM
Broadcom ARM
52% [216 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: 416
Musisz zalogować się, aby móc zagłosować.
Rozpoczęto: 02/02/2015 09:38
Twoje IP
3.145.130.31
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: i7-7700T, 48GB RAM, 3x2TB SSD, 1x1TB SSD, 512GB NVMe, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology DS920+
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: 11

· Użytkowników online: 0

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

tamtosiamto
31-03-2024 12:54
Wesolego jajka wszytskim forumowiczom Grin

tamtosiamto
28-03-2024 23:24
tak, tak zgadza sie, ale ja pytam o wykluczenie noda na guest network w first set, i to nie dziala

Adooni
24-03-2024 13:16
Guest network is currently designed to allow the first set of each band (2.4G, 5G, 5G-1) available to the AiMesh node

tamtosiamto
24-03-2024 03:03
ale w 1 jest opcja do wyboru - dla calej sieci albo rutera only i wlasnie o tym mowie, ze nie dziala

Adooni
23-03-2024 16:31
w dokumencie asusa jest ze wlasnie dla 1 ma dzialac na nodach tez

tamtosiamto
23-03-2024 15:39
tak, ale nie zmienia to faktu, ze w pierwszej nie dziala wylaczanie aimesh dla goscinnej( a powinno), czyli jest jakis bug. Mam start soft, bo to dsl-ac68 ktory nie jest juz updateowany

Adooni
22-03-2024 18:07
nie, 1 wsza bedzie wszedzie trzeba 2ga zrobic dla kazdego pasma te nie sa przenoszone

tamtosiamto
19-03-2024 19:57
czyli jak mam jedna siec goscinna to powinno dzialac separowanie gosci od noda -a nie dziala Smile

tamtosiamto
19-03-2024 19:50
@Adooni 'Only one set is available for 1 band' i tak mam-1 set dla 2.4ghz i 1 dla 5ghz-czy czegos nie rozumiemW drugiej sieci goscinnej nie ma opcji wyboru Ruter only/ All nodes

Adooni
19-03-2024 19:14
no to przeczytaj to 2 pod - 1 stet z kazdego pasma jest dopuszczony na nody. zrob 2 siec jako goscinna na danym pasmie i wtedy sprawdz

71,174,178 unikalnych wizyt