¿Existe una utilidad equivalente a la ruta de rastreo de Linux para OS X?

5

Estoy intentando determinar la ruta MTU de mi Mac a varios sitios y no puedo encontrar una utilidad incorporada para lograr esto.

En Linux, usaría una utilidad como tracepath , pero me pregunto si hay algún tipo de equivalente disponible para OS X.

    
pregunta reedog117 20.03.2014 - 23:57

3 respuestas

8

Puedes usar el ping estándar que viene con el Mac OSX para encontrar pmtu.

ping -D -s <size> <host> debería hacer el truco. Tenga en cuenta que el tamaño es solo el tamaño de carga útil del datagrama ICMP. Para ver la MTU IP, debe agregar 8 bytes del encabezado ICMP y 20 bytes del encabezado IP (por ejemplo, para enviar un paquete IP de 1500 bytes, debe especificar el tamaño como 1472). Tenga en cuenta que -D es importante aquí, ya que activa la marca Dont-Fragment.

También puede usar ping -D -g <minsize> -G <maxsize> -h <sizeincr> <host> para ejecutar un barrido de ping. Esto hace ping a su host con paquetes desde minsize hasta maxsize en incrementos de sizeincr . Una vez más, la misma regla se aplica a sus tamaños: estos son solo para la carga útil de ICMP (por lo que debe agregar 28 bytes al tamaño especificado aquí para el tamaño completo de IP MTU).

Lo que estás buscando es un mensaje ICMP inalcanzable con un subtítulo "Fragmentación necesaria pero No fragmentar" en el subtipo. La dirección IP del remitente del mensaje ICMP anterior es el host o enrutador que tiene su MTU configurada para ser inferior al tamaño de su paquete, en el enlace que usaría para reenviar su paquete hacia el destino.

Tenga en cuenta también que, a veces, los cortafuegos o los filtros de tráfico (mal configurados) bloquearán todos los mensajes ICMP y, en tal caso, no verá ninguna respuesta. Para probar qué host eliminó el paquete, puede ejecutar traceroute a su destino y luego hacer ping repetidamente en cada salto en el camino con '-D' y un tamaño o barrido para descubrir la MTU local del enlace al que está conectado el salto. Será el enlace entre el último host al que puede hacer ping y el primer host que no puede, tendrá un MTU más pequeño.

Nuevamente, todo esto está sujeto a los enrutadores que manejan ICMP, lo que podría no hacerlo.

El protocolo PMTUD (Path MTU Discovery) funciona de la misma manera. Utiliza paquetes TCP con el indicador DF activado. Los puntos finales de las sesiones TCP concuerdan con su MSS (Tamaño de segmento máximo, que es MTU menos IP y encabezados TCP, 40B): eligen el menor de los valores MSS anunciados por cada host en el protocolo de enlace TCP. Luego, envían todo el tráfico con los indicadores de DF activados y esperan el ICMP inalcanzable o un ACK de TCP. El último significa que el PMTU es suficiente, el primero significa que necesitan abandonar el MSS.

Espero que ayude!

    
respondido por el mike 21.03.2014 - 13:03
3

traceroute está disponible en la Mac. Traceroute es en realidad una versión más destacada de tracepath .

man traceroute le dará los detalles pero traceroute <host> hace lo mismo que tracepath <host> .

    
respondido por el Tony Williams 21.03.2014 - 00:12
0

hacer un ping -DRo <hostname| IPAddr> hizo un tracepath simple para mí

También creé un shellscript simple llamado tracepath, y parece que:

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

No es tan agradable como una ruta de acceso real

    
respondido por el guest 01.08.2018 - 19:15

Lea otras preguntas en las etiquetas