Pourquoi est-ce que je peux cingler une adresse IP mais pas la traceroute?


46

Je peux envoyer une requête ping à une adresse IP, mais je ne peux pas la tracer. Comment cela pourrait-il être?

[USERNAME@HOSTNAME ~]$ ping CENSORED.CENSORED
PING CENSORED.CENSORED (CENSORED) 56(84) bytes of data.
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=1 ttl=49 time=52.8 ms
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=2 ttl=49 time=49.4 ms
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=3 ttl=49 time=49.2 ms
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=4 ttl=49 time=50.4 ms
^C
--- CENSORED.CENSORED ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 49.276/50.494/52.804/1.401 ms
[USERNAME@HOSTNAME ~]$
[USERNAME@HOSTNAME ~]$ traceroute CENSORED.CENSORED
traceroute to CENSORED.CENSORED (CENSORED), 30 hops max, 60 byte packets
 1  CENSORED (CENSORED)  5.733 ms  6.000 ms  5.977 ms
 2  CENSORED (CENSORED)  0.428 ms  0.417 ms  0.393 ms
 3  CENSORED (CENSORED)  1.726 ms  1.718 ms  1.682 ms
 4  CENSORED (CENSORED)  26.699 ms  26.693 ms  26.670 ms
 5  CENSORED (CENSORED)  27.785 ms  27.769 ms  27.746 ms
 6  * * *
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *
[USERNAME@HOSTNAME ~]$

La cinquième CENSOREDadresse IP du traceroute n’est pas la même que celle du "ping CENSORED.CENSORED".


Quelle est la sortie du traceroute?
ChrisF

1
pourquoi l'adresse IP est-elle "censurée"?
Sathyajith Bhat

1
pourquoi l'adresse IP est-elle "censurée" ... peut-être parce que ce n'est pas public? pff
LanceBaynes

8
Je présume que l’affiche a corrigé l’adresse IP afin que nous ne cherchions pas à pirater sa machine.
MSW

ces étoiles ne signifient pas censure, elles signifient qu'il n'y a pas eu de réponse
jbu

Réponses:


42

Essayez d’utiliser une méthode différente dans votre traceroute, par exemple TCP SYN ou ICMP au lieu de la méthode UDP par défaut.

Par exemple, notez la différence entre ICMP et TCP:

x@x:~$ ping -qc4 94.254.2.51
PING 94.254.2.51 (94.254.2.51) 56(84) bytes of data.
--- 94.254.3.90 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3009ms
rtt min/avg/max/mdev = 7.781/7.807/7.836/0.067 ms

x@x:~$ sudo traceroute -I 94.254.2.51
traceroute to 94.254.2.51 (94.254.2.51), 30 hops max, 40 byte packets
1  <REDACTED>
2  <REDACTED>
3  <REDACTED>
4  <REDACTED>
5  netnod-ix-ge-a-sth-1500.bahnhof.net (194.68.123.85)  1.307 ms  1.299 ms  1.432 ms
6  sto-cr1.sto-cr3.bahnhof.net (85.24.151.165)  7.166 ms  7.364 ms  7.336 ms
7  sto-cr3.gav-cr1.bahnhof.net (85.24.151.195)  7.251 ms  7.099 ms  7.220 ms
8  zitius-a322-gw-c.bahnhof.net (85.24.153.249)  7.059 ms  7.074 ms  7.145 ms
9  h-2-51.A322.priv.bahnhof.se (94.254.2.51)  7.619 ms  7.750 ms  8.070 ms

x@x:~$ sudo traceroute -T 94.254.2.51
traceroute to 94.254.2.51 (94.254.2.51), 30 hops max, 40 byte packets
1  <REDACTED>
2  <REDACTED>
3  <REDACTED>
4  <REDACTED>
5  netnod-ix-ge-a-sth-1500.bahnhof.net (194.68.123.85)  1.621 ms  1.683 ms  1.817 ms
6  sto-cr1.sto-cr3.bahnhof.net (85.24.151.165)  8.530 ms  7.861 ms  7.820 ms
7  sto-cr3.gav-cr1.bahnhof.net (85.24.151.195)  7.724 ms  7.539 ms  7.486 ms
8  zitius-a322-gw-c.bahnhof.net (85.24.153.249)  7.572 ms  7.537 ms  7.553 ms
9  * * *
10  * * *
11  * * *
12  * * *
13  * * *

2
-T ne semble pas être un commutateur pour OSX. Existe-t-il une alternative à l'utilisation de TCP SYN sur OSX?
Manachi

2
@Manachi:brew install tcptraceroute
iolsmit

1
@Manchi: lisez la page de manuel ...: "traceroute -P TCP <IP>"
benba

23

Traceroute est basé sur les paquets ICMP ou UDP. Il pince efficacement chaque routeur sur le chemin entre vous et censored.censored. Il augmente la durée de vie (TTL) pour chaque paquet suivant qu'il envoie (de 1 à 30 normalement) en s'attendant à ce que chaque paquet étant envoyé avec une durée de vie augmentée à partir du dernier, le prochain routeur du chemin renverra un code d'erreur .

Si le saut 6 ne répond pas, il bloque probablement spécifiquement les messages ICMP / UDP. Ping fonctionne donc parce que les routeurs entre vous et lui ne font que transmettre les paquets ICMP / UDP au lieu de répondre, comme ils le font avec un traceroute.


2
Sur la plupart des distributions (toutes?) * Nix, traceroute utilise UDP par défaut, pas ICMP.
h0tw1r3

Bon point, va modifier.
Rhys Gibson

donc tous les routeurs après 5 blocs UDP? Est-ce exact?
LanceBaynes

Je ne pense pas. Quelqu'un d’autre aurait peut-être une meilleure explication, mais je pense que le saut 6 ne répond pas et ne transmet pas les paquets, sinon vous obtiendrez au moins une dernière réponse de votre destination (à moins que la distance ne soit supérieure à 30 sauts).
Rhys Gibson

1
Mais je suis sûr que c'est moins de 30 sauts. Donc, la réponse n'est pas bonne. Au saut 7,8,9, etc. J'aurais des réponses dans le traceroute: \
LanceBaynes

12

Je n'ai vu aucune réponse à la partie pourquoi des questions.

Plusieurs fournisseurs d'accès à Internet sont connus pour rendre leurs routeurs furtifs à traceroute de deux manières: soit ils ne décrémentent pas la durée de vie (TTL) dans les paquets IP (se créant eux-mêmes des trous de ver IP), soit ils ne répondent pas à la durée de vie dépassée tout en transmettant ICMP.

La raison est de garder leur topologie de réseau interne privée. C'est tout.

La publication de traceroutes depuis / vers plusieurs sources / destinations révèle des informations sur la topologie du réseau, ce qui ne ressemble pas à tout le monde.


2

Traceroute repose sur les messages ICMP, sur lesquels certains routeurs peuvent être configurés pour ne pas répondre.


Ping est aussi ICMP, cela n'explique pas la différence. J’ai l’avantage de lire d’autres réponses que l’état traceroute peut également utiliser l’UDP, ce que je ne connaissais pas auparavant.
Rich Homolka

Eh bien, un moyen de bloquer explicitement les paquets ICMP de traceroute consiste à supprimer les messages ICMP entrants qui sont TTL = 1. Peut-être qu'ils le font pour une raison quelconque.
LawrenceC

2

Il est parfois utile d’utiliser des pinginformations semblables à celles de traceroute:

#!/bin/bash
for TTL in 1 2 3 4 5 6 7 8 9 10 11 12
do
    ping -c 1 -n -t $TTL a.b.c.d
done

En appelant ping avec un argument -t $ TTL, vous pouvez parfois contourner le pare-feu et rechercher des adresses IP, etc., de routeurs derrière des pare-feu.


3
Cela revient à appeler traceroute avec l'option -I, bien que (curieusement) cela nécessiterait le statut de superutilisateur.
Tzarium

1
@Tzarium ping requiert également le statut de superutilisateur, il a juste le bit suid défini, vous le récupérez donc gratuitement.
Itsadok

0

Tous les nœuds à partir de 6 ne répondent pas aux paquets UDP ou le nœud 6 lui-même bloque les paquets UDP. Vous pouvez essayer les méthodes fllowing, qui, je l’espère, fonctionneront en fonction du nœud situé sur le chemin des blocs de détection, ICMP / TCP SYN:

  1. Utilisez ICMP pour traceroute: $ sudo traceroute -I

  2. Utilisez TCP syn pour traceroute: $ sudo traceroute -T

  3. Si ce sont les sauts qu'il dépasse, utilisez l'une des méthodes suivantes: $ sudo traceroute -I -m 60

OU

$ sudo traceroute -T -m 60

Ce dernier a travaillé pour moi tout en effectuant un traçage jusqu'à un ftp à travers le continent.


0

Pour utiliser la commande ping pour traceroute dans un environnement unix, essayez ceci:

for ((TTL=1;TTL<30;TTL++));
do
ping -c 1 -t $TTL <IP>;
done
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.