Esiste un'utilità equivalente al tracepath di Linux per OS X?

5

Sto tentando di determinare il percorso MTU dal mio Mac su vari siti e non riesco a trovare un'utilità integrata per realizzare questo.

In Linux, userei un'utilità come tracepath , ma mi chiedo se c'è qualche tipo di equivalente disponibile per OS X.

    
posta reedog117 20.03.2014 - 23:57
fonte

3 risposte

8

Puoi utilizzare lo standard ping di Mac OSX per trovare pmtu.

ping -D -s <size> <host> shoud fa il trucco. Si noti che la dimensione è solo la dimensione del payload del datagramma ICMP. Per visualizzare l'MTU IP, è necessario aggiungere 8 byte dell'intestazione ICMP e 20 byte dell'intestazione IP (ad esempio, per inviare un pacchetto IP da 1500 byte, è necessario specificare la dimensione come 1472). Tieni presente che -D è importante qui, poiché attiva il flag Dont-Fragment.

Puoi anche usare ping -D -g <minsize> -G <maxsize> -h <sizeincr> <host> per eseguire un ping sweep. Questo esegue il ping del tuo host con pacchetti a partire da minsize fino a maxsize in sizeincr incrementi. Ancora una volta, la stessa regola si applica alle tue dimensioni, queste sono solo per il payload ICMP (quindi devi aggiungere 28 byte alla dimensione specificata qui per la dimensione MTU IP completa).

Quello che stai cercando è un messaggio irraggiungibile ICMP con un "sottotipo di tipo" Frammentazione necessaria ma non frammentare su ". L'indirizzo IP del mittente del messaggio ICMP sopra riportato è l'host o il router che ha il suo MTU impostato su un valore inferiore alla dimensione del pacchetto, sul collegamento che userebbe per inoltrare il pacchetto verso la destinazione.

Si noti inoltre che a volte i firewall (male configurati) o i filtri del traffico bloccheranno tutti i messaggi ICMP e in tal caso non vedrete alcuna risposta. Per verificare quale host ha abbandonato il pacchetto, è possibile eseguire traceroute verso la propria destinazione e quindi eseguire ripetutamente il ping su ogni hop con "-D" e una dimensione o una sweep per scoprire l'MTU locale del collegamento a cui è connesso. Sarà il collegamento tra l'ultimo host che è possibile eseguire il ping e il primo host che non è possibile avrà un MTU più piccolo.

Ancora una volta - tutto questo è soggetto ai router che gestiscono ICMP, che potrebbero non farlo.

Il protocollo PMTUD (Path MTU Discovery) funziona allo stesso modo. Utilizza i pacchetti TCP con flag DF attivo. Gli endpoint delle sessioni TCP concordano sul loro MSS (Maximum Segment Size, che è MTU meno IP e intestazioni TCP, 40B) - scelgono il più piccolo dei valori MSS pubblicizzati da ciascun host nell'handshake TCP. Quindi inviano tutto il traffico con flag DF e attendono ICMP non raggiungibile o TCP ACK. Quest'ultimo significa che la PMTU è sufficiente, il primo significa che devono eliminare MSS.

Spero che ti aiuti!

    
risposta data 21.03.2014 - 13:03
fonte
3

traceroute è disponibile su Mac. Traceroute è in realtà una versione più dettagliata di tracepath .

man traceroute ti darà i dettagli ma traceroute <host> fa la stessa cosa di tracepath <host> .

    
risposta data 21.03.2014 - 00:12
fonte
0

fare un ping -DRo <hostname| IPAddr> ha fatto un semplice tracepath per me

Ho anche creato un semplice shellscript chiamato tracepath, e assomiglia a:

#!/bin/sh
#ping -D -g <minsize> -G <maxsize> -h <sizeincr>
echo "tracepath to $1 \n"
ping -DRo $1

Non proprio bello come un vero tracepath

    
risposta data 01.08.2018 - 19:15
fonte

Leggi altre domande sui tag