Jak monitorować połączenia internetowe pod kątem przerw - w systemie Mac OS X

17

Subskrybuję nowego ISP i mam problemy z tym nowym ISP. Problemem jest kilka mikro przerw w połączeniu internetowym, rodzaj opóźnień, które prawdopodobnie są związane z przekroczeniem limitu czasu na ich serwerach proxy lub moim połączeniu z ich siecią.

Ponieważ mikroprzerwy zdarzają się przypadkowo, nie mogę tego udowodnić, ponieważ za każdym razem, gdy wysyłają technika do mojego biura, problemu nie można wykryć, szczególnie dlatego, że usługa może być stabilna przez 3, 4 godziny, a następnie ponownie zacząć wyświetlać problem.

Jest to bardzo denerwujące z dwóch powodów. Pobieram coś, a potem pobieranie nagle się zatrzymuje i muszę zacząć od nowa. Innym powodem jest to, że korzystam ze skrzynki VoIP podłączonej do mojego telefonu za pomocą sieci Ethernet, a ta skrzynka VoIP traci połączenie za każdym razem, a mój telefon VoIP przestaje odbierać / nawiązywać połączenia, zmuszając mnie do ponownego uruchomienia skrzynki za każdym razem, gdy ją wykrywam i pozostania z telefon w dół, bez zauważenia.

Moje pytanie brzmi: jak mogę monitorować serwis internetowy przez pewien okres, mówiąc mi, kiedy usługa jest wyłączona, wykreślić grafikę lub coś takiego? Jakieś narzędzie lub jakiś sposób monitorowania jakości sieci lub połączenia, które można uruchomić na komputerze Mac?

Moim pomysłem jest mieć coś do pokazania i udowodnienia, że ​​mam rację.

Kosmiczny pies
źródło
1
To pytanie może naprawdę dotyczyć tematu, pasuje do szablonu „dobre pytanie” (od Jak zadać pytanie, które może wymagać rekomendacji oprogramowania? ) „Mam <problem-x - przerwy w sieci >, że nie wiem jak to zrobić rozwiązałem. Próbowałem już X, Y, Z (uruchom ponownie VoIP, gdy go wykryję) , ale te programy nie działają, ponieważ to lub tamto. Jak to zrobić? " Czy jedynym problemem jest pytanie o „narzędzie do monitorowania połączenia z Internetem” zamiast „Jak monitorować połączenie z Internetem pod kątem przerw?”
Xen2050

Odpowiedzi:

5
Applications->Utilities->Console.app

Na początek spójrz na dzienniki.

Możesz także zajrzeć do ntop lub Little Snitch .

CaseyIT
źródło
1
ntop.org <poprawny link do ntop (myślę)
Frank Lämmer
Wyszukaj en0lub en1po otwarciu pliku console.app (nazwy interfejsów sieciowych), aby wyświetlić informacje o sieci.
Justin
7

Jeśli użyjesz:

ping -A -i 10 --apple-time 10.20.30.40 > monitor.txt

Będzie działał nieprzerwanie aż do zatrzymania i pingować co 10 sekund do 10.20.30.40(zmień adres)

Te --apple-timeśrodki, które będzie rejestrować czas każdego ping więc widać uszkodzeń. Tak jak:

11:33:10.793801 64 bytes from 10.20.30.40: icmp_seq=0 ttl=58 time=27.744 ms
11:33:11.780250 64 bytes from 10.20.30.40: icmp_seq=1 ttl=58 time=9.757 ms
11:33:12.781136 64 bytes from 10.20.30.40: icmp_seq=2 ttl=58 time=10.150 ms
11:33:13.782932 64 bytes from 10.20.30.40: icmp_seq=3 ttl=58 time=11.779 ms
11:33:14.785446 64 bytes from 10.20.30.40: icmp_seq=4 ttl=58 time=11.254 ms
Tony Lambert
źródło
2

Co powiesz na pingbieganie w terminalu? Wystarczy znaleźć serwer, który jest włączony i odpowiada na pingi. Chociaż nie pokazuje dokładnych czasów, daje pewien dowód, że coś jest nie tak.

Zedytowano, by dodać: Sam używałem go jakiś czas temu dla podobnego. Podczas gdy utrzymywali, że mój (starzenie się, szczerze mówiąc) bezprzewodowy punkt dostępowy może być winny, ponieważ nic nie znaleźli, „Mam limity czasu ping co najmniej raz na godzinę” pomogło nam zmusić inżyniera do sprawdzenia rzeczy.

Daniel Beck
źródło
2

Świst

Aby monitorować połączenie internetowe, możesz po prostu użyć ping polecenia. Po prostu wysyła ICMP ECHO_REQUEST i oczekuje odpowiedzi.

Pinguj adres IP routera, gdy nie odpowiada, możesz zgłosić swojemu dostawcy usług internetowych przerwę w dostępie do Internetu.

Jeśli router ma zaporę ogniową, użyj arpingzamiast tego lub po prostu wybierz innego zdalnego hosta, np

$ ping 4.2.2.1
PING 4.2.2.1 (4.2.2.1): 56 data bytes
64 bytes from 4.2.2.1: icmp_seq=0 ttl=57 time=37.710 ms
64 bytes from 4.2.2.1: icmp_seq=1 ttl=57 time=32.051 ms

Arping

Do monitorowania fizycznego połączenia z routerem możesz użyć arpingnp

$ sudo arping 192.168.0.1

Jest to szczególnie przydatne, gdy twoje WiFi ciągle spada, a router nie reaguje na standardowe pakiety ICMP. Zainstaluj przez Brew (brew install arping ).

Tcpdump

Są takie, tcpdumpktóre mogą zrzucić ruch w sieci. Na przykład, aby zrzucić wszystkie wychodzące pakiety do portu 80i 443składnia może być:

sudo tcpdump -i en0 port http or port https

Aby zapisać do pliku, dodaj -w file, a następnie przeczytaj go-r file . Będzie to obejmować dokładne sygnatury czasowe każdego odbieranego lub wysyłanego pakietu sieciowego.

Aby sprawdzić, czy Internet nie jest przerywany, poszukaj pakietów SYN (w sekcji Flagi), które wysyła twój komputer, i na każdy z nich serwer powinien odpowiedzieć SYN-ACK. Jeśli tak się nie dzieje i nie ma żadnego ruchu wstecz (tylko pakiety SYN, to nie ma połączenia z Internetem).

kenorb
źródło
Czy istnieje prosty sposób (np. Skrypt), który automatycznie przeszukuje dane wyjściowe tcpdump w poszukiwaniu pakietów SYN, które nie mają odpowiadającej odpowiedzi SYN-ACK?
Xen2050,
@ Xen2050 Myślę, że zignorowałbym zrzut lub wynik szukając Sflagi typu :, sudo tcpdump -i en0 -nl | grep -C5 "Flags .S"stamtąd, jeśli masz potwierdzenie w kontekście (dodatkowe | grep ack), to znaczy, że coś zareagowało. Potrzebujesz więc czegoś przeciwnego. Myślę, że coś znajdzieszawksed składni /, która może znaleźć 5 pakietów SYN z rzędu, a następnie może ostrzec, że coś jest nie tak (chyba że kontaktujesz się z jakimś martwym hostem).
kenorb
W celu monitorowania na żywo ping -A www.yahoo.com wyemituje sygnał dźwiękowy, gdy połączenie zostanie zerwane . Chociaż możesz użyć adresu IP, użycie adresu czytelnego dla człowieka sprawdzi również awarie DNS.
brianfit
1

Ta aplikacja rejestruje stan połączenia, a nawet twierdzi, że jest używany wewnętrznie przez Apple.

Rejestruj przerwy w sieci, prędkości wykresów w czasie i wiele więcej. Network Logger Pro może być również używany do monitorowania stron internetowych i tworzenia historycznych wykresów ich prędkości, awarii i czasów reakcji.

https://itunes.apple.com/us/app/network-logger-pro/id764324406?mt=12

Jest to jednak 10 USD: /

Justin
źródło
1

To był jeden z symptomów, który miałem , oprócz niskiej przepustowości. Okazało się, że jest to modem kablowy. Dobra wiadomość jest taka, że nie musisz nikogo przekonywać aby uzyskać nowy modem kablowy. Okazało się, że mój dostawca usług internetowych ma zasadę, że możesz po prostu zamienić modem kablowy na nowy prawie do woli. Sprawdź i sprawdź, czy twój to zrobi.

Jamie Cox
źródło
Ciekawe, ale doszedłeś do sedna. Tak, moje połączenie jest niestety modemem kablowym, ale jest zupełnie nowy (został zainstalowany przez nich miesiąc temu). Podejrzewam, że problemem jest ich sieć kablowa. Nigdy nie lubiłem kablowego internetu (byłem zmuszony z niego korzystać, ponieważ w moim regionie nie ma innej firmy oferującej usługi szerokopasmowe).
SpaceDog
1

Na własny użytek napisałem prosty skrypt Bash, aby to sprawdzić. To używaping jako sposób monitorowania limitów czasu, dokładnie tak, jak sugeruje większość odpowiedzi. Zaletą skryptu jest to, że wynik na ekranie pokazuje tylko te pingi, które przekroczyły limit czasu, a nie zawiera również pingów zakończonych sukcesem. Ponadto można przekazać parametr na czas monitorowania, a nie liczbę prób pingowania. W skrócie jest to tylko opakowanie dla następujących elementów: ping google.com -i 1 -c 60 | grep "timeout\|statistics\|transmitted\|avg" jego źródło i prosta instrukcja instalacji są dostępne pod poniższym linkiem:

https://github.com/superman-lopez/monitor-timeouts

Testowałem skrypt na MacOS i Ubuntu Linux.

#!/bin/bash
#Usage: ./monitor-timeouts.sh [duration] [target]
#example: ./monitor-timeouts.sh 60 192.168.1.1
minutes=$1
target=$2
if [ $# -eq 0 ]; then
    minutes=1
    target=google.com
fi
if [ -z "$2" ]; then
    target=google.com
fi
pings=$((60 * $minutes))

system=`uname`
if [[ $system == *"Linux"* ]]; then
    extraflag="-O"
fi

echo "Start monitor for network timeouts at `date` for $minutes minute(s)."
echo "Target host: $target"
ping $target -i 1 -c $pings $extraflag | grep -i "timeout\|unreachable\|no answer\|statistics\|transmitted\|avg"
echo "End monitoring at `date`."
Superman.Lopez
źródło
Witamy w Super User! Twój skrypt jest wystarczająco krótki, aby dołączyć go do posta; powinieneś edytować swoją odpowiedź, aby ją dołączyć
bertieb
Dzięki za sugestię
Superman.Lopez