[-]
Szybkie szukanie


Baner sklepu jdtech.pl
Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Gargoyle/OpenWRT i automatyczne resetowanie połączenia
11-02-2015, 02:30 (Ten post był ostatnio modyfikowany: 12-02-2015 12:08 przez jakubd.)
Post: #1
Gargoyle/OpenWRT i automatyczne resetowanie połączenia
Właśnie odkryłem coś bardzo ciekawego: można wreszcie całkowicie zautomatyzować resetowanie połączenia dla routerów MR3420 i analogicznych działających pod kontrolą OpenWRT/Gargoyle.
Efekt jest taki:
1. Korzystamy sobie z sieci
2. Połączenie się resetuje i zostajemy poczęstowani kodem CAPTCHA
3. Rozwiązujemy kod i...
4. ...po chwili router sam rozpoznaje to, że kod został wpisany poprawnie i resetuje połączenie.

Czyż to nie jest piękne?
Rozwiązanie było gotowe już kilka miesięcy temu, ale nie mieściło się w pamięci flash większości routerów. Na szczęście ktoś genialny wpadł na pomysł zastąpienia wget'a z obsługą POST starym dobrym netcatem (nc), który jest wbudowany w OpenWRT. Efekt: działa pysznie, nie ma żadnych istotnych wymagań co do wolnej pamięci flash.

Instrukcja sprawdzona dla MR3420v2 z Gargoyle 1.6.2.2 (najnowszy z września 2014):
Logujemy się do konsoli (putty przez SSH, user root, pass - taki jak daliśmy do routera) i odpalamy polecenia (wymagany dostęp do Internetu):
Kod:
wget http://dl.eko.one.pl/projekty/99-aero2 -O /etc/hotplug.d/iface/99-aero2
chmod 755 /etc/hotplug.d/iface/99-aero2

Ograniczenia: działa tylko dla modemów sterowanych przez ppp (czyi E3131 w każdej wersji poza HiLink spełnia ten wymóg).

Routery MR3420 w jdtech.pl od dziś oferuję już przygotowane w ten sposób.

KUDOS należą się oczywiście Cezaremu (admin eko.one.pl, twórca Gargoyle po polsku) oraz koledze summner, który wpadł na to genialne w swojej prostocie rozwiązanie.
Historia tego wynalazku: http://eko.one.pl/forum/viewtopic.php?id=8754
Znajdź wszystkie posty użytkownika
Podziękuj Odpowiedz cytując ten post
11-02-2015, 12:38 (Ten post był ostatnio modyfikowany: 11-02-2015 12:40 przez szopen.)
Post: #2
Gargoyle/OpenWRT i automatyzne resetowanie połączenia
dodajmy jeszcze, że tylko "gargoyle by obsy" czyli powstałe u Cezarego
http://eko.one.pl/?p=openwrt-gargoylepl
jest "z pudełka" przygotowane do pracy z Aero2 (głównie to łatka umożliwiająca DNS rebind dla aero2 ale i inne udogodnienia)

natomiast gargoyle stamtąd
https://www.gargoyle-router.com/
nie ma tych udogodnień, za to jest dostępna wersja 1.7.0 bazowana na OpenWRT Barrier Breaker (1.6.x są oparte na AA)

Statystyki Folding@home
[Obrazek: sigimage.php?un=szopen&t=247478]
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika
Podziękuj Odpowiedz cytując ten post
11-02-2015, 14:01
Post: #3
Gargoyle/OpenWRT i automatyzne resetowanie połączenia
I dodam jeszcze artykuł z bloga aktualny: http://jdtech.pl/2015/02/aero2-automatyc...terze.html
Znajdź wszystkie posty użytkownika
Podziękuj Odpowiedz cytując ten post
11-02-2015, 23:45
Post: #4
Gargoyle/OpenWRT i automatyzne resetowanie połączenia
Uzupełniając tą historię dodam tylko iż wydaje mi się, że na pomysł automatycznego resetowania połączenia z poziomu routera wpadłem jako pierwszy Blush
Już na początku maja 2014 sprzedałem na Allegro router mobilny Zalip z taką funkcją.
Znajdź wszystkie posty użytkownika
Podziękuj Odpowiedz cytując ten post
12-02-2015, 01:24
Post: #5
Gargoyle/OpenWRT i automatyzne resetowanie połączenia
Pamiętam. Ale najważniejszą sprawą jest w tym wypadku szerokie udostępnienie rozwiązania dla wielu urządzeń (rozwiązanie z wget dla routerów z nadmiarem flash było dostępne od wakcji 2014), stałe wsparcie - wraz ze ewentualnymi zmianami na stronie operatora.
Dla OpenWRT pierwsza wersja po mojej propozycji praktycznego rozwiązania pojawiła się prawie natychmiast już 21 maja 2014 (inspirowana twoim pomysłem po weryfikacji praktycznej zasady działania). Czekaliśmy tylko na to, żeby zrobić to w 1-2kbajt a nie 1-2MB pamięci flash.
Znajdź wszystkie posty użytkownika
Podziękuj Odpowiedz cytując ten post
12-02-2015, 01:27
Post: #6
RE: Gargoyle/OpenWRT i automatyzne resetowanie połączenia
Hmmm... dla hilinka pewnie też by się dało, ale trzeba by lekko zmodyfikować i rozbudować skrypt:
1) Sprawdzenie czy uci wan.proto == dhcp
2) Jeżeli tak pobranie urządzenia (eth1, eth2) za pomocą uci wan.ifname
3) Mając urządzenie pobrać adres modemu (hmmm... da się sprawdzić za pomocą ifconfig device jakie IP ma dla modemu hilink router, wtedy po modyfikacji drobnej byłby adres modemu)

Mając adres urządzenia dalej posługujemy się już api HiLinka:
4) Pobrać APN i sprawdzić czy to Aero (darmowy) za pomocą api hilinka metodą GET dla adresu /api/dialup/profiles a tam na podstawie indeksu obecnego profilu (CurrentProfile) pobrać nazwę APN (ApnName),
5) Jeżeli potwierdzone powyższe plus sprawdzone czy kapeć wpisany wtedy można zrobić reboota z API metodą POST dla adresu api kończącego się api/device/control z odpowiednim requestem (patrz przykład 1a lub 1b używania API i opis api device/control)

P.S. Niektóre komendy wpisałem jako skróty myślowe Tongue
Znajdź wszystkie posty użytkownika
Podziękuj Odpowiedz cytując ten post
12-02-2015, 01:51
Post: #7
RE: Gargoyle/OpenWRT i automatyzne resetowanie połączenia
Moje rozwiązanie opiera się na tcpdump - 350KB.
Znajdź wszystkie posty użytkownika
Podziękuj Odpowiedz cytując ten post
12-02-2015, 12:06
Post: #8
Gargoyle/OpenWRT i automatyzne resetowanie połączenia
tcpdump też fajna metoda, zupełnie inne podejście, ale:
1. MRxx20 mają najwyżej 320 kb wolnego flash po hardreset
2. Trzeba zobaczyć, jakie jest obciążenie procesora działającym tcpdumpem
3. Musi być dodatkowa logika, żeby nie włączało się to przy innych operatorach - w LTE a nawet szybkich 3G może nieźle ograniczyć wydajność.

Co do rozwiązania VipeRsan: super sprawa, tylko trzeba chyba jeszcze sprawdzać wersję modemu - nie wiem, czy przypadkiem API nie zmienia się w zależności od modemu.
Poza tym może być po drugiej stronie ZTE, a nie Huawei i strzelanie na ślepo URLami nie jest najzdrowszym pomysłem.

Fajnie by było napisać jakiś uniwersalny programik do resetowania połączenia, który działałby w shellu tak, aby można było go wrzucić do Windows, Linuksa, jak i routera.
Znajdź wszystkie posty użytkownika
Podziękuj Odpowiedz cytując ten post
12-02-2015, 12:30 (Ten post był ostatnio modyfikowany: 12-02-2015 12:32 przez VipeRsan.)
Post: #9
Gargoyle/OpenWRT i automatyczne resetowanie połączenia
API HiLinka jest (z tego co na razie widziałem) nie zmienne, ale nie wiadomo jak będzie z nowszym firmware bo w wynalazku jaki jest u ruskich E3372h z nowym firmware (fw 22.491.03.*) ponoć nie chce coś działać API lub sprawdzanie tokena :/ Jak ktoś miałby taki modem i/lub takie oprogramowanie lub wyższe to niech się zgłosi Tongue

Co do ZTE to pfff... no cóż nie wiem co tam w środku piszczy Tongue
Znajdź wszystkie posty użytkownika
Podziękuj Odpowiedz cytując ten post
12-02-2015, 23:25
Post: #10
RE: Gargoyle/OpenWRT i automatyczne resetowanie połączenia
(12-02-2015 12:06)jakubd napisał(a):  tcpdump też fajna metoda, zupełnie inne podejście, ale:
1. MRxx20 mają najwyżej 320 kb wolnego flash po hardreset
2. Trzeba zobaczyć, jakie jest obciążenie procesora działającym tcpdumpem
3. Musi być dodatkowa logika, żeby nie włączało się to przy innych operatorach - w LTE a nawet szybkich 3G może nieźle ograniczyć wydajność.

Stwierdzę nawet, że tcpdump to metoda fajniejsza Smile
1. Czasami jak się dobrze przejrzy soft, to okazuje się że pewne pliki niczemu nie służą. Być może jednak w przypadku tego routera nie da się wygospodarować ani kilobajta.
2. Obciążenie jest żadne, patrz punkt 3.
3. Nie potrzeba dodatkowej logiki, wystarczy uruchomić tcpdump z parametrem "host bdi.free.aero2.net.pl" i analizujemy tylko pakiety z tego serwera.
Znajdź wszystkie posty użytkownika
Podziękuj Odpowiedz cytując ten post
13-02-2015, 00:38
Post: #11
Gargoyle/OpenWRT i automatyczne resetowanie połączenia
Gdyby odpalać go tylko po wejściu w kapeć... to by miało sens. Ale jak analizujesz wszelki ruch, to przy 30 Mbit/s tcpdump może spowalniać system (a ja nie wiem, czy klient będzie używał routera tylko do Aero2, czy nie).
W samym routerze MR3420 po prostu nie ma co wywalać, jeżeli chcemy zachować obsługę wielu modemów. Ale być może można skompilować tcpdumpa bez modułów nadmiarowych i jakoś skompresować elfa.
Znajdź wszystkie posty użytkownika
Podziękuj Odpowiedz cytując ten post
13-02-2015, 00:53 (Ten post był ostatnio modyfikowany: 13-02-2015 01:03 przez gbr.)
Post: #12
RE: Gargoyle/OpenWRT i automatyczne resetowanie połączenia
(13-02-2015 00:38)jakubd napisał(a):  Gdyby odpalać go tylko po wejściu w kapeć... to by miało sens. Ale jak analizujesz wszelki ruch, to przy 30 Mbit/s tcpdump może spowalniać system (a ja nie wiem, czy klient będzie używał routera tylko do Aero2, czy nie).

Z parametrem "host bdi.free.aero2.net.pl" tcpdump przechwytuje tylko pakiety dotyczące serwera captcha, reszta jest ignorowana, więc nie obciąża systemu.
Poza tym w przypadku mojego routera funkcja "auto restartu" jest konfigurowalna z interfejsu WWW. Można ją wyłączyć, zmienić adres serwera oraz zmienić frazę wyszukiwaną w komunikacie o poprawności odczytania kapcia.
Znajdź wszystkie posty użytkownika
Podziękuj Odpowiedz cytując ten post
13-02-2015, 13:33
Post: #13
Gargoyle/OpenWRT i automatyczne resetowanie połączenia
No to widzę, że zrobiłeś pełen kombajn Smile
Co do tcpdump - dumpuje tylko to, co dopasowane, ale PRZEGLĄDA cały ruch.
Znajdź wszystkie posty użytkownika
Podziękuj Odpowiedz cytując ten post
13-02-2015, 23:14
Post: #14
RE: Gargoyle/OpenWRT i automatyczne resetowanie połączenia
(13-02-2015 13:33)jakubd napisał(a):  Co do tcpdump - dumpuje tylko to, co dopasowane, ale PRZEGLĄDA cały ruch.

Nie ma to znaczenia. Jeżeli tcpdump nie dumpuje pakietów, to nie obciąża w ogóle systemu.
Sprawdzałem przy ciągłym transferze na poziomie około 10mbit/s. Router z Ralink RT3050F 320MHz.
Znajdź wszystkie posty użytkownika
Podziękuj Odpowiedz cytując ten post
06-03-2015, 11:17
Post: #15
RE: Gargoyle/OpenWRT i automatyczne resetowanie połączenia
U mnie od wczoraj przestało działać samoczynne resetowanie połączenia, w formie stworzonej przez Cezarego (pierwsza strona tego tematu). Ponowne wbicie tych komend nie dało efektu. W routerze nic nie zmieniałem. Wczoraj śmigało, a dzisiaj ani razu i musiałem się przeprosić z guzikiem Restart WAN. Ktoś ma ten sam problem?

Cezary zasugerował coś takiego:
ACTION=ifup INTERFACE=wan sh -x /etc/hotplug.d/iface/99-aero2

Ale jeszcze nie próbowałem.
Znajdź wszystkie posty użytkownika
Podziękuj Odpowiedz cytując ten post
06-03-2015, 13:03
Post: #16
Gargoyle/OpenWRT i automatyczne resetowanie połączenia
Trzeba by zobaczyć, czy coś się zmieniło na stronie Aero2.
Znajdź wszystkie posty użytkownika
Podziękuj Odpowiedz cytując ten post
Odpowiedz 


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Program do powiadomień dzwiękowych w przypadku utraty połączenia alowska 13 14 969 26-09-2015 02:25
Ostatni post: szopen
Brick Program do resetowania połączenia w TP-Link TL-MR3420 mshmaster 51 52 477 30-07-2014 10:46
Ostatni post: bako82
Brick garg by sebus [routery z gargoyle],[win] izaw 8 9 715 17-07-2014 00:08
Ostatni post: juniorjpdj
Brick Dekapeć OpenWrt by sciss [router OpenWRT +dodatk. łącze +konto shell mono],[dowolny] sciss 5 5 286 05-06-2014 02:49
Ostatni post: sciss