14 votes

Existe-t-il un utilitaire équivalent au tracepath de Linux pour OS X ?

J'essaie de déterminer le MTU du chemin entre mon Mac et divers sites, et je ne trouve pas d'utilitaire intégré pour le faire.

Sous Linux, j'utiliserais un utilitaire comme tracepath mais je me demande s'il n'y a pas un équivalent disponible pour OS X.

17voto

mike Points 1801

Vous pouvez utiliser la norme ping que le Mac OSX est livré avec pour trouver pmtu.

ping -D -s <size> <host> devrait faire l'affaire. Veuillez noter que la taille est juste la taille de la charge utile du datagramme ICMP. Pour connaître la MTU IP, vous devez ajouter 8 octets de l'en-tête ICMP et 20 octets de l'en-tête IP (donc par exemple, pour envoyer un paquet IP de 1500 octets, vous devez spécifier une taille de 1472). Veuillez noter, -D est important ici, car il active le drapeau Dont-Fragment.

Vous pouvez également utiliser ping -D -g <minsize> -G <maxsize> -h <sizeincr> <host> pour lancer un balayage ping. Cette opération consiste à envoyer à votre hôte des paquets commençant par minsize jusqu'à maxsize sur sizeincr incréments. Encore une fois, la même règle s'applique à vos tailles - celles-ci ne concernent que la charge utile ICMP (vous devez donc ajouter 28 octets à la taille spécifiée ici pour la taille MTU IP complète).

Ce que vous recherchez est un message ICMP unreachable avec un sous-type "Fragmentation nécessaire mais drapeau Don't Fragment on" en retour. L'adresse IP de l'expéditeur du message ICMP ci-dessus est l'hôte ou le routeur dont le MTU est inférieur à la taille de votre paquet, sur le lien qu'il utiliserait pour transmettre votre paquet vers la destination.

Notez également que parfois, les pare-feu ou les filtres de trafic (mal configurés) bloquent tous les messages ICMP et, dans ce cas, vous ne verrez aucune réponse. Pour tester quel hôte a abandonné le paquet, vous pouvez lancer traceroute jusqu'à votre destination et ensuite envoyer plusieurs fois des ping à chaque saut sur le chemin avec '-D' et une taille ou un sweep pour découvrir le MTU local du lien auquel ce saut est connecté. Ce sera le lien entre le dernier hôte que vous pouvez pinger et le premier hôte que vous ne pouvez pas pinger qui aura un MTU plus petit.

Encore une fois, tout ceci est sujet à la gestion de l'ICMP par les routeurs, ce qui n'est pas toujours le cas.

Le protocole PMTUD (Path MTU Discovery) fonctionne de la même manière. Il utilise des paquets TCP avec le drapeau DF activé. Les points d'extrémité des sessions TCP se mettent d'accord sur leur MSS (Maximum Segment Size, qui est le MTU moins les en-têtes IP et TCP, 40B) - ils choisissent la plus petite des valeurs MSS annoncées par chaque hôte dans le handshake TCP. Ensuite, ils envoient tout le trafic avec les drapeaux DF activés et attendent le message ICMP unreachable ou un TCP ACK. Ce dernier signifie que la PMTU est suffisante, le premier signifie qu'ils doivent abandonner le MSS.

J'espère que cela vous aidera !

4voto

Tony Williams Points 11219

traceroute est disponible sur le Mac. Traceroute est en fait une version plus élaborée de tracepath .

man traceroute vous donnera les détails mais traceroute <host> fait la même chose que tracepath <host> .

-1voto

ludesign Points 929

Faire un ping -DRo <hostname| IPAddr> a fait un simple tracepath pour moi

J'ai également créé un script shell simple appelé tracepath, et qui ressemble à ceci :

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

Pas tout à fait aussi agréable qu'un vrai tracepath

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X