22 Października 2021 19:08:57
Nawigacja
· Strona Główna
· Forum

· Tomato by Shibby
· FreshTomato


Wątki na forum
Najnowsze dyskusje
· Dostęp do LAN poprz...
· Jak się pozbyć rou...
· Przepustowość łą...
· [MOD] FreshTomato-AR...
· [Sptrzedam] Qnap TS-...
· Problemy z WiFi
· [S] ASUS RT-AC66U
· Jaki router wybrać-...
· [HOWTO] Kompilacja "...
· [MOD] FreshTomato-MI...
· Włączenie interfej...
· Własny NAS na Xpeno...
· pi-hole na tomato?
· Słaby zasięg Synol...
· IPS i EoIP
· Asus RT-AX55 vs RT-A...
· Udostępnienie inter...
· Proxmox pytania
· niepoprawny timestam...
· OpenVPN - problem z ...
Najpopularniejsze obecnie wątki
· [MOD] FreshTomato... [642]
· [MOD] FreshTomato... [331]
· Jaki router wybra... [55]
· Przepustowość ... [14]
· Jak się pozbyć ... [7]
· [S] ASUS RT-AC66U [4]
· [HOWTO] Kompilacj... [4]
· Problemy z WiFi [2]
· Dostęp do LAN po... [0]
· [Sptrzedam] Qnap ... [0]
Ankieta
Jaki procesor posiada twój router?

Broadcom MIPSEL
Broadcom MIPSEL
37% [146 głosów]

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

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

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

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

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

Żaden z powyższych
Żaden z powyższych
3% [12 głosów]

Ogółem głosów: 393
Musisz zalogować się, aby móc zagłosować.
Rozpoczęto: 02/02/2015 09:38
Twoje IP
3.236.239.91
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
Router: EdgeRouter ER-12
Switch: Ubiquiti US-8-150W
Wi-Fi: Ubiquiti UAP-AC-Pro + U6-Lite
NAS: Xpenology DS918+
Serwer: Dell 3040M
https://napiecie.salama.pl
 
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: 21

· Użytkowników online: 0

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

AdrianAdi
05-10-2021 23:03
Przymierzam się do kupna takiego i mam kilka pytań z tym zwoązanych

AdrianAdi
05-10-2021 23:02
Jest tu kto?

AdrianAdi
05-10-2021 22:59
Witam mam pytanie odnośnie routerów gamingowych do ps4 czyli konsoli

Maniek91PL
04-09-2021 10:34
Wink super ! Dzięki ! Adooni ! już testuje co i jak

Adooni
04-09-2021 06:31
sprawdzasz w status - overview, a zmieniasz w Basic - Network

Maniek91PL
03-09-2021 22:37
jak sprawdzić i zmienić kanał w wifi 2.4 w tomato ? Shock

goof3r
23-07-2021 16:21
Mi chodziło w sekcji VPN bo w WAN to nic mi nie da jak zmienie....

Adooni
22-07-2021 21:34
nie mam pod reka FT ale powinno to byc w WAN Settings -Type - L2TP. Jest tam tez pole L2TP Server

goof3r
22-07-2021 20:08
Witam, takie małe pytanie mam, czy w najnowszej wersji freshtomato jest możliwosć postawienia serwera/klienta VPN L2TP ?

Maniek91PL
20-07-2021 13:55
potwierdzam, wyczyściłem przeglądarkę, działa teraz prawidłowo na najnowszym freshtomato ! Dzięki jeszcze raz

45,583,390 unikalnych wizyt