알아야 할 사항
- traceroute 명령에 포함해야 하는 유일한 매개변수는 대상의 호스트 이름 또는 IP 주소입니다.
- 1의 TTL로 프로브를 시작하고 ICMP "포트에 연결할 수 없음"이 발생하거나 최대 시도 값에 도달할 때까지 1씩 증가시킵니다.
이 기사는 Linux 머신에 적용 가능한 traceroute 정보를 다루고 명령 스위치 설명과 결과 해석 방법에 대한 정보를 포함합니다. Traceroute는 Windows에서 다르게 사용됩니다.
Traceroute 작동 방식
traceroute 명령은 정보 패킷이 소스에서 목적지까지 수행하는 여정을 매핑합니다. traceroute의 한 가지 용도는 네트워크 전체에서 데이터 손실이 발생하는 시점을 찾는 것입니다. 이는 노드가 다운되었음을 나타낼 수 있습니다.
레코드의 각 홉은 원래 PC와 의도한 대상 간의 새 서버 또는 라우터를 반영하기 때문에 경로 추적 검색 결과를 검토하면 네트워크 트래픽에 부정적인 영향을 미칠 수 있는 느린 지점을 식별할 수 있습니다.
Traceroute로 문제 해결
네트워크 트래픽이 따르는 특정 경로를 평가하거나 패킷을 버리는 잘못된 게이트웨이를 찾는 것은 몇 가지 문제 해결 과제를 제시합니다. Traceroute는 IP 프로토콜 수명을 사용합니다. 대상 호스트에 대한 경로를 따라 각 게이트웨이에서 ICMP TIME_EXCEEDED 응답을 요청하는 필드입니다.
traceroute 명령을 실행할 때 포함해야 하는 유일한 매개변수는 대상의 호스트 이름 또는 IP 주소입니다.
Traceroute 구문 및 스위치
Traceroute는 다음 일반 구문을 따릅니다.
traceroute [ -dFInrvx ] [ -f first_ttl ] [ -g gateway ] [ -i iface ] [ -m max_ttl ] [ -p port ] [ -q nqueries ] [ -s src_addr ] [ -t tos ] [ -w waittime ] [ -z pausemsecs ] host [ packetlen ]
하나 이상의 선택적 스위치를 지정하여 명령의 성능이나 출력을 변경할 수 있습니다.
결과 해석
Traceroute는 작은 TTL로 UDP 프로브 패킷을 시작한 다음 게이트웨이에서 ICMP "시간 초과" 응답을 수신하여 IP 패킷이 인터넷 호스트로 가는 경로를 간략하게 설명합니다. 1의 TTL로 프로브를 시작하고 ICMP "포트에 연결할 수 없음"(패킷이 목적지에 도착했음을 의미)이 될 때까지 1씩 증가시키거나 최대 시도 값(기본값은 30 홉으로 설정되며 다음으로 변경할 수 있음)에 도달합니다. 강한>-m 플래그.
traceroute가 실행되면 각 TTL 설정에서 세 개의 프로브를 보낸 다음 TTL, 게이트웨이 주소 및 각 프로브의 왕복 시간을 보여주는 라인을 콘솔에 인쇄합니다. 프로브 응답이 다른 게이트웨이에서 오는 경우 각 응답 시스템의 주소가 인쇄됩니다. traceroute가 5초 이내에 응답을 받지 못하는 경우( -w로 변경됨 플래그), 해당 프로브에 대한 별표를 인쇄합니다.
UDP 프로브 패킷 처리가 대상 호스트를 압도하는 것을 방지하기 위해 traceroute는 대상 포트를 장치가 사용하지 않을 값으로 설정합니다. 대상의 네트워크 또는 서비스가 해당 포트를 사용하는 경우 -p를 사용하여 값을 변경합니다. 플래그.
Traceroute 결과 예
샘플 사용 및 출력은 다음 예와 유사한 결과를 반환합니다.
[yak 71]% traceroute nis.nsf.net.
traceroute to nis.nsf.net (35.1.1.48), 30 hops max, 38 byte packet
1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms
2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 39 ms
5 ccn-nerif22.Berkeley.EDU (128.32.168.22) 39 ms 39 ms 39 ms
6 128.32.197.4 (128.32.197.4) 40 ms 59 ms 59 ms
7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 59 ms
8 129.140.70.13 (129.140.70.13) 99 ms 99 ms 80 ms
9 129.140.71.6 (129.140.71.6) 139 ms 239 ms 319 ms
10 129.140.81.7 (129.140.81.7) 220 ms 199 ms 199 ms
11 nic.merit.edu (35.1.1.48) 239 ms 239 ms 239 ms
두 번째와 세 번째 줄은 동일합니다. 이 결과는 TTL이 0인 패킷을 전달하는 두 번째 홉 시스템(lbl-csam.arpa)의 버그가 있는 커널(4.3 BSD 분산 버전의 버그)과 관련이 있습니다. NSFNet(129.140)이 NSS에 대한 주소 대 이름 변환을 제공하지 않기 때문에 패킷이 국가를 가로질러 가는 경로를 추측해야 합니다.
자동 게이트웨이 예
더 흥미로운 예는 다음과 같습니다.
[yak 72]% traceroute allspice.lcs.mit.edu.
traceroute to allspice.lcs.mit.edu (18.26.0.115), 30 hops max
1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
2 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 19 ms 19 ms
3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 19 ms
4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 19 ms 39 ms 39 ms
5 ccn-nerif22.Berkeley.EDU (128.32.168.22) 20 ms 39 ms 39 ms
6 128.32.197.4 (128.32.197.4) 59 ms 119 ms 39 ms
7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 39 ms
8 129.140.70.13 (129.140.70.13) 80 ms 79 ms 99 ms
9 129.140.71.6 (129.140.71.6) 139 ms 139 ms 159 ms
10 129.140.81.7 (129.140.81.7) 199 ms 180 ms 300 ms
11 129.140.72.17 (129.140.72.17) 300 ms 239 ms 239 ms
12 * * *
13 128.121.54.72 (128.121.54.72) 259 ms 499 ms 279 ms
14 * * *
15 * * *
16 * * *
17 * * *
18 ALLSPICE.LCS.MIT.EDU (18.26.0.115) 339 ms 279 ms 279 ms
Note that the gateways at 12, 14, 15, 16, and 17 hops away either don't send ICMP "time exceeded" messages or send them with a TTL too small to reach us. Lines 14 through 17 are running the MIT C Gateway code that doesn't send "time exceeded" messages.
The silent gateway 12 in the above example may be the result of a bug in the 4.[23]BSD network code and its derivatives: Machines running 4.3 code and earlier send an unreachable message using whatever TTL remains in the original datagram. For gateways, the remaining TTL is zero, the ICMP "time exceeded" is guaranteed to not make it back to us.
Destination System Silent Gateway Example
The behavior of this bug is slightly more interesting when it appears on the destination system:
1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 39 ms
3 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 39 ms 19 ms
4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 19 ms
5 ccn-nerif35.Berkeley.EDU (128.32.168.35) 39 ms 39 ms 39 ms
6 csgw.Berkeley.EDU (128.32.133.254) 39 ms 59 ms 39 ms
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 rip.Berkeley.EDU (128.32.131.22) 59 ms ! 39 ms ! 39 ms !
Notice that 12 "gateways" exist (13 is the final destination), and the last half of them are missing. What's really happening is that the server named rip (a Sun-3 running Sun OS 3.5) is using the TTL from our arriving datagram as the TTL in its ICMP reply. So, the reply will time out on the return path (with no notice sent to anyone since ICMPs aren't sent for ICMPs) until we probe with a TTL that's at least twice the path length—in other words, rip is really only seven hops away.
A reply that returns with a TTL of 1 is a clue this problem exists. Traceroute prints a ! after the time if the TTL is less than or equal to 1. Since vendors ship a lot of obsolete (DEC's Ultrix, Sun 3.x) or non-standard (HPUX) software, expect to see this problem frequently and take care picking the target host of your probes.
Other possible annotations after the time are !H, !N, or !P (host, network, or protocol unreachable), !S (source route failed), !F- (fragmentation needed—the RFC1191 Path MTU Discovery value is displayed), !X (communication administratively prohibited), !V (host precedence violation), !C (precedence cutoff in effect), or ! (ICMP unreachable code). These codes are defined by RFC1812, which supersedes RFC1716. If almost all the probes result in some kind of unreachable host, traceroute will give up and exit.
This program is intended for use in network testing, measurement, and management. It should be used primarily for manual fault isolation. Because of the load it could impose on the network, it's unwise to use traceroute during normal operations or from automated scripts.