Możesz użyć standardu ping
dostarczonego z Mac OSX, aby znaleźć pmtu.
ping -D -s <size> <host>
powinienem załatwić sprawę. Uwaga: rozmiar jest tylko wielkością ładunku datagramu ICMP. Aby zobaczyć jednostkę MTU IP, musisz dodać 8 bajtów nagłówka ICMP i 20 bajtów nagłówka IP (tak na przykład, aby wysłać pakiet IP o długości 1500 bajtów, musisz podać rozmiar 1472). Uwaga, -D
jest tutaj ważna, ponieważ ustawia flagę Dont-Fragment na.
Możesz także użyć ping -D -g <minsize> -G <maxsize> -h <sizeincr> <host>
do uruchomienia operacji ping. To pingi hosta pakietami począwszy od minsize
maksymalnie maxsize
w sizeincr
odstępach. Ponownie, ta sama reguła dotyczy twoich rozmiarów - są one tylko dla ładunku ICMP (więc musisz dodać 28 bajtów do podanego tutaj rozmiaru dla pełnego rozmiaru MTU IP).
To, czego szukasz, to nieosiągalna wiadomość ICMP z podtypem „Konieczna fragmentacja, ale nie fragmentuj flagi”. Adres IP nadawcy powyższej wiadomości ICMP to host lub router, którego MTU jest ustawiony na wartość niższą niż rozmiar pakietu, w łączu, którego użyłby do przekazania dalej pakietu w kierunku miejsca docelowego.
Należy również pamiętać, że czasami (źle źle skonfigurowane) zapory ogniowe lub filtry ruchu blokują wszystkie wiadomości ICMP, w takim przypadku po prostu nie zobaczysz odpowiedzi. Aby sprawdzić, który host upuścił pakiet, możesz uruchomić polecenie traceroute do miejsca docelowego, a następnie wielokrotnie pingować każdy przeskok po drodze za pomocą „-D” oraz rozmiaru lub zakresu, aby odkryć lokalną MTU łącza, z którym przeskok jest połączony. Będzie to połączenie między ostatnim hostem, którego możesz pingować, a pierwszym hostem, którego nie możesz mieć, będzie miał mniejszy MTU.
Znowu - wszystko to zależy od routerów obsługujących ICMP, co może nie być możliwe.
Protokół PMTUD (Path MTU Discovery) działa w ten sam sposób. Używa pakietów TCP z włączoną flagą DF. Punkty końcowe sesji TCP zgadzają się na ich MSS (Maksymalny rozmiar segmentu, czyli MTU bez adresów IP i nagłówków TCP, 40B) - wybierają mniejszą z wartości MSS reklamowanych przez każdego hosta w uzgadnianiu TCP. Następnie wysyłają cały ruch z włączonymi flagami DF i czekają, aż ICMP będzie nieosiągalny lub TCP ACK. To drugie oznacza, że PMTU jest wystarczające, drugie oznacza, że muszą upuścić MSS.
Mam nadzieję, że to pomaga!
ping -M do -s <size> <host>
--M
flaga jest wskazówką dla PMTUD (-M do
oznacza, że zabrania fragmentacji nawet lokalnie,-M want
oznacza wykrywanie MTU ścieżki uruchamiania, ale umożliwia fragmentację, gdy lokalnie, i-M dont
oznacza, że nie rób pmtud i zezwala na fragmentację).traceroute
jest dostępny na komputerze Mac. Traceroute to właściwie bardziej funkcjonalna wersjatracepath
.man traceroute
poda ci szczegóły, aletraceroute <host>
robi to samo cotracepath <host>
.źródło
ping -g 1444 -G 1508 -c 2 -h 1 -D example.com
traceroute
mam komputer Mac (Mojave 10.14.3). Czy powinienem? FWIW jesttcptraceroute
napar.robi
ping -DRo <hostname| IPAddr>
tak prosty tracepath dla mnieStworzyłem również prosty skrypt powłoki o nazwie tracepath i wygląda następująco:
Nie tak ładna jak prawdziwa ścieżka
źródło