Traceroute utilizza UDP o ICMP o entrambi?


24

Quando eseguo una traccia sul dominio www.google.com dal mio laptop, sto usando icmp o udp?
Ho pensato che fosse icmp tipo 11 ma durante la ricerca di qualcos'altro mi sono imbattuto in regole in cui è stato utilizzato icmp tipo 30 e ho visto le regole in cui è stato utilizzato udp.
Qualcuno può spiegarmi come funziona?
Sto lavorando su un firewall (iptables) per un server virtuale dedicato.

Risposte:


26

Il tipo di pacchetto inviato varia in base all'implementazione. Per impostazione predefinita, Windows tracertutilizza ICMP e sia Mac OS X che Linux tracerouteutilizzano UDP. Non ho macchine BSD o Solaris o altri sistemi operativi da controllare, ma la pagina man per la versione di Mac OS X menziona che la sua provenienza è BSD 4.3.

Le versioni per Mac e Linux che ho offrono la possibilità di scegliere una varietà di protocolli diversi tra cui pacchetti ICMP, TCP, UDP e GRE. Altri protocolli possono essere specificati in base al nome o al numero, ma traceroute non è a conoscenza del funzionamento di altri protocolli. Li manda semplicemente alla cieca.

Possono anche modificare sia il payload sia le porte di origine e di destinazione al fine di evitare i firewall o scoprire quale router lungo il percorso sta rilasciando pacchetti di una certa dimensione.

Tutte le versioni di traceroute si basano sulle risposte ICMP tipo 11 (tempo superato) di ciascun hop lungo il percorso. Se le risposte ICMP di tipo 11 vengono bloccate dal firewall, traceroute non funzionerà. Questi pacchetti sono in entrata, non in uscita.

ICMP tipo 30 è specificamente designato per traceroute ed è etichettato come "Richiesta di informazioni". Non sono stato in grado di trovare da nessuna parte dove questo è effettivamente utilizzato. La pagina man per le versioni di Mac OS X e Linux dice che -Iinvierà ICMP tipo 8 (richiesta di eco). Wikipedia afferma che Windows tracertutilizza anche richieste di eco ICMP. Il tipo ICMP 30 o il tipo 8 sono pacchetti in uscita, non in entrata.

Il tipo 0 ICMP (risposta all'eco) può tornare come l'ultimo pacchetto quando il TTL è esattamente uguale al numero di hop. Traceroute saprà che è terminato quando riceve uno di questi. Questo è un pacchetto in entrata.

I pacchetti TCP SYN causeranno un RSTpacchetto o un SYN ACKpacchetto in risposta quando raggiungono la loro destinazione. Se ricevi un SYN ACKpacchetto, è educato seguire un RSTpacchetto in modo da non lasciare una connessione semi-aperta sul server.

È possibile ottenere risposte di codice 4 di tipo 3 ICMP invece di risposte di tipo 11 ICMP se si invia un pacchetto di grandi dimensioni con il flag impostato "Non frammentare", tuttavia è probabile che ciò consenta solo di trovare l'hop con l'MTU più piccolo . Normalmente riceverai questo tipo di risposta solo da un hop lungo il percorso. Non tutti loro.


8

Il traceroute tradizionale utilizza UDP per incrementare le porte per ogni hop.

Puoi implementare qualsiasi tipo di pacchetto per implementarlo - ICMP, TCP SYN, ecc. Tutto ciò che serve è il pacchetto IP in scadenza e tu sei d'oro.

Varie implementazioni, come MacOS, offrono supporto per più tipi di traceroute, nonché modalità che non incrementano le porte, ecc., Per aggirare le restrizioni del firewall.


7
La porta UDP predefinita su un'implementazione simile a unix va da 33434 a 33534. Le implementazioni ICMP utilizzano una "richiesta di eco" (tipo 8).
Ouki,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.