왜 IP 주소를 핑 (ping) 할 수는 있지만 '추적 (traceroute)'할 수 없습니까?


46

IP 주소를 핑할 수는 있지만 추적 경로를 지정할 수는 없습니다. 이것은 어떻게 될 수 있습니까?

[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 ~]$

CENSORED추적 경로 의 다섯 번째 IP 주소는 "ping CENSORED.CENSORED"의 주소와 다릅니다.


traceroute의 출력은 무엇입니까?
ChrisF

1
IP는 왜 "검열"입니까?
Sathyajith Bhat

1
IP가 "검열"된 이유는 무엇입니까? 아마도 공개되지 않았기 때문일까요? pff
LanceBaynes

8
나는 포스터가 IP를 수정하여 컴퓨터를 해킹하려고 시도하지 않았다고 가정합니다.
msw

이 별들은 검열을 의미하는 것이
아니라

답변:


42

기본 UDP 방법 대신 다른 경로 (예 : TCP SYN 또는 ICMP)를 사용하십시오.

예를 들어 ICMP와 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는 OSX 용 스위치가 아닌 것 같습니다. OSX에서 TCP SYN을 사용하는 대안이 있습니까?
Manachi

2
@Manachi :brew install tcptraceroute
iolsmit

1
@Manchi는 ... 맨 페이지를 읽어 : "경로 추적 -P TCP <IP>"
benba

23

Traceroute는 ICMP 또는 UDP 패킷을 기반으로합니다. 그것은 당신과 censored.censored 사이의 경로에서 각 라우터를 효과적으로 핑합니다. 각 후속 패킷에 대해 TTL (Time-To-Live)을 증가시킵니다 (일반적으로 1-30). 각 패킷이 마지막에서 증가 된 TTL과 함께 전송 될 때 경로의 다음 라우터는 오류 코드를 리턴합니다. .

홉 6이 응답하지 않으면 ICMP / UDP 메시지를 차단하는 것일 수 있습니다. 따라서 Ping은 사용자와 라우터 사이의 라우터가 추적 경로를 사용하는 것처럼 응답하지 않고 ICMP / UDP 패킷을 전달하기 때문에 작동합니다.


2
대부분의 (모든?) * nix 배포판에서 traceroute는 ICMP가 아닌 기본적으로 UDP를 사용합니다.
h0tw1r3

좋은 지적, 수정합니다.
리스 깁슨

5 블록 UDP 이후의 모든 라우터? 그 맞습니까?
LanceBaynes

나는 그렇게 생각하지 않습니다. 다른 사람이 더 잘 설명 할 수는 있지만 홉 6이 응답하지 않고 패킷을 전달하지 않는다고 생각합니다. 그렇지 않으면 적어도 대상에서 마지막 응답을 얻습니다 (30 홉 이상 떨어져 있지 않은 경우).
리스 깁슨

1
그러나 나는 그것이 30 홉 이하로 떨어져 있다고 확신합니다. 따라서 대답은 좋지 않습니다. 홉 7,8,9 등에서 나는 traceroute에 답장을 할 것이다 : \
LanceBaynes

12

나는 질문의 일부에 대한 답을 보지 못했습니다 .

일부 ISP는 라우터가 두 가지 방식으로 추적 경로를 추적하지 못하게하는 것으로 알려져 있습니다. IP 패킷에서 TTL을 줄이지 않거나 (IP 자체 웜홀 생성) ICMP를 전달하는 동안 만료 된 TTL에 응답하지 않습니다.

내부 네트워크 토폴로지를 개인용으로 유지해야하기 때문입니다. 그게 다야.

traceroute여러 소스 / 대상으로 /로부터 발행 하면 네트워크 토폴로지에 대한 정보가 드러나므로 모든 사람이 좋아하지는 않습니다.


2

Traceroute는 일부 라우터가 응답하지 않도록 구성 될 수있는 ICMP 메시지를 사용합니다.


Ping은 ICMP이기도하지만 차이점을 설명하지는 않습니다. 상태 traceroute가 udp도 사용할 수 있다는 다른 답변을 읽는 이점이 있습니다.
Rich Homolka

트레이스 루트 ICMP 패킷을 명시 적으로 차단하는 한 가지 방법은 TTL = 1 인 수신 ICMP를 삭제하는 것입니다. 어쩌면 그들은 어떤 이유로 그렇게하고 있습니다.
LawrenceC

2

때로는 경로 ping추적과 같은 정보를 얻는 데 사용할 가치가 있습니다.

#!/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

-t $ TTL 인수로 ping을 호출하면 방화벽을 피하고 방화벽 뒤의 라우터의 IP 주소 등을 찾을 수 있습니다.


3
수퍼 유저 상태가 필요한 (이상하게도) -I 플래그를 사용하여 traceroute를 호출하는 것과 같습니다.
Tzarium

1
@Tzarium ping도 수퍼 유저 상태가 필요합니다. suid 비트가 설정되어 있으므로 무료로 사용할 수 있습니다.
itsadok

0

6 이상의 노드가 모두 UDP 패킷에 응답하지 않거나 노드 6 자체가 UDP 패킷을 차단합니다. 플로팅 방법을 시도 할 수 있습니다.이 방법은 detination 경로의 경로에서 어떤 노드가 ICMP / TCP SYN을 차단하는지에 따라 작동합니다.

  1. ICMP를 사용하여 경로 추적 : $ sudo traceroute -I

  2. TCP syn을 사용하여 경로 추적 : $ sudo traceroute -T

  3. 초과하는 홉인 경우 다음 중 하나를 사용하십시오. $ sudo traceroute -I -m 60

또는

$ sudo traceroute -T -m 60

후자는 대륙 전역의 ftp로 경로를 추적하면서 나를 위해 일했습니다.


0

유닉스 환경에서 ping 명령을 사용하여 경로를 추적하려면 다음을 시도하십시오.

for ((TTL=1;TTL<30;TTL++));
do
ping -c 1 -t $TTL <IP>;
done
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.