목차

소개

사전 요구 사항

요구 사항

사용되는 구성 요소

표기 규칙

일반 작업

Cisco IOS 및 Linux

Microsoft Windows

ICMP 연결 불가능 속도 제한

예

Cisco IOS 소프트웨어가 포함된 Cisco 라우터

Linux가 설치된 PC

MS Windows가 설치된 PC

추가 참고 사항

요약

관련 정보

소개

traceroute 명령을 사용하면 패킷이 통과한 홉의 시퀀스를 반환하여 패킷이 지정된 소스에서 목적지로 도달하기 위해 사용하는 경로를 결정할 수 있습니다. 이 유틸리티는 호스트 운영 체제(예: Linux 또는 Microsoft(MS) Windows) 및 Cisco IOS® 소프트웨어와 함께 제공됩니다.

사전 요구 사항

요구 사항

이 문서를 읽는 사람은 다음 운영 체제 중 하나에 대한 기본적인 지식을 가지고 있어야 합니다.

- Cisco IOS 소프트웨어

- 리눅스

- Microsoft Windows

사용되는 구성 요소

이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전에 적용됩니다.

- Cisco IOS Software 릴리스 12.2(27)를 실행하는 Cisco 라우터

- Red Hat Linux 버전 9를 실행하는 PC

- MS Windows 2000을 실행하는 PC

이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우, 모든 명령어의 잠재적인 영향을 미리 숙지하시기 바랍니다.

표기 규칙

문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 표기 규칙을 참조하십시오.

일반 작업

소스 디바이스(예: 호스트 또는 호스트 역할을 하는 라우터)에서 traceroute ip-address 명령을 실행하면 지정된 최대 홉까지 증가하는 TTL(Time To Live) 값을 사용하여 목적지로 IP 패킷을 전송합니다. 기본적으로 30입니다. 일반적으로, 목적지를 향하는 경로의 각 라우터는 이러한 패킷을 전달하는 동안 TTL 필드를 하나의 단위로 줄입니다. 경로 중간에 있는 라우터가 TTL = 1인 패킷을 발견하면 ICMP(Internet Control Message Protocol) "time exceeded" 메시지로 소스에 응답합니다. 이 메시지를 통해 소스는 패킷이 특정 라우터를 홉으로 통과함을 알 수 있습니다

traceroute 명령이 이 이 문서에서 다루는 다양한 운영 체제에서 구현되는 방법에는 몇 가지 차이점이 있습니다.

Cisco IOS 및 Linux

초기 UDP(User Datagram Protocol) 데이터그램 프로브의 TTL은 1(또는 확장 트레이스라우트 명령에서 사용자가 지정한 최소 TTL로 설정됩니다. 초기 데이터그램 프로브의 대상 UDP 포트는 33434로 설정되거나 확장 traceroute 명령 출력에 지정된 대로 설정됩니다. extended traceroute 명령은 일반 traceroute 명령의 변형이 되므로 TTL 및 대상 포트 번호와 같은 traceroute 작업에서 사용하는 매개변수의 기본값을 수정할 수 있습니다. extended traceroute 명령을 사용하는 방법에 대한 자세한 내용은 Using the Extended ping and Extended traceroute Commands를 참조하십시오. 초기 데이터그램 프로브의 소스 UDP 포트는 임의 설정이 되어 있으며 논리 연산자 또는 0x8000이 있습니다(0x8000의 최소 소스 포트 확인). 다음 단계는 UDP 데이터그램을 시작할 때 수행되는 작업을 설명합니다.

참고: 매개변수를 구성할 수 있습니다. 이 예는 n = 1로 시작하고 n = 3으로 끝납니다.

1. UDP 데이터그램은 TTL = 1, 대상 UDP 포트= 33434, 소스 포트 임의 지정으로 디스패치됩니다.

2. UDP 대상 포트가 증가하며, 소스 UDP 포트가 임의 설정되고, 두 번째 데이터그램이 발송됩니다.

3. 2단계는 최대 3개의 프로브에 대해 반복됩니다(또는 확장 traceroute 명령 출력에서 요청한 횟수만큼). 전송된 각 프로브에 대해 "TTL exceeded" 메시지가 수신됩니다. 이 메시지는 대상 호스트에 대한 단계별 경로를 구축하는 데 사용됩니다.

4. TTL은 증가하며 ICMP "time exceeded" 메시지를 수신하는 경우 이 주기는 증분 대상 포트 번호와 함께 반복됩니다. 다음 메시지 중 하나를 가져올 수도 있습니다.

- 호스트에 도달했음을 나타내는 ICMP 유형 3, 코드 3("destination unreachable", "port unreachable") 메시지.

- "host unreachable", "net unreachable", "maximum TTL exceeded" 또는 "timeout" 메시지 유형으로서 프로브가 재전송됨을 의미합니다.

Cisco 라우터는 임의 소스 포트와 증분 대상 포트를 사용하여 UDP 프로브 패킷을 전송합니다(다른 프로브를 구별하기 위해). Cisco 라우터는 UDP/ICMP 패킷이 수신된 소스로부터 ICMP 메시지 "time exceeded"를 다시 전송합니다.

Linux traceroute 명령은 Cisco 라우터 구현과 유사합니다. 그러나 고정 소스 포트를 사용합니다. traceroute 명령의 -n 옵션은 이름 서버에 대한 요청을 피하기 위해 사용됩니다.

Microsoft Windows

MS Windows tracert 명령은 UDP 데이터그램 대신 ICMP 에코 요청 데이터그램을 프로브로 사용합니다. ICMP 에코 요청은 TTL을 증가시켜 시작되며 Cisco IOS 및 Linux에서 설명한 것과 동일한 작업이 발생합니다. ICMP 에코 요청 데이터그램을 사용할 때의 중요성은 최종 홉이 목적지 호스트에서 ICMP "unreachable" 메시지의 응답에 의존하지 않는다는 것입니다. 대신 ICMP 에코 응답 메시지를 사용합니다.

명령 구문은 다음과 같습니다.

tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name

이 표에서는 명령 매개 변수에 대해 설명합니다.

매개 변수

설명

-d

주소를 컴퓨터 이름으로 확인하지 않도록 지정합니다.

-h 최대 홉스

대상을 검색할 최대 홉의 수를 지정합니다.

-j 컴퓨터 목록

컴퓨터 목록을 따라 느슨한 소스 경로를 지정합니다.

-w 시간 초과

각 회신에 대한 시간 초과로 지정된 시간(밀리초)을 기다립니다.

대상_이름

대상 컴퓨터의 이름입니다.

ICMP 연결 불가능 속도 제한

ICMP 연결 불가능 테이블은 Cisco 라우터에서 500ms(DoS(Denial of Service) 공격 보호)당 하나의 패킷으로 제한됩니다. Cisco IOS Software 릴리스 12.1 이상에서는 이 속도 값을 구성할 수 있습니다. 추가된 명령은 다음과 같습니다.

ip icmp rate-limit unreachable

[DF] <1-4294967295 millisecond>

no ip icmp rate-limit unreachable [DF] (DF limits rate for code=4)

자세한 내용은 Cisco 버그 ID CSCdp28161(등록된 고객만 해당)을 참조하십시오.

이 제한은 이 출력에 표시된 대로 모든 ICMP 연결 불가능 집계 비율에 대한 것입니다. 자세한 내용은 RFC 792 를 참조하십시오.

type = 3, code

0 = net unreachable;

1 = host unreachable;

2 = protocol unreachable;

3 = port unreachable;

4 = fragmentation needed and DF set;

5 = source route failed.

이 제한은 ICMP 에코 요청 또는 ICMP "시간 초과" 메시지와 같은 다른 패킷에는 영향을 주지 않습니다.

예

이 네트워크 토폴로지는 다음 예에 사용됩니다.

세 가지 예시 각에서 서로 다른 디바이스 A가 사용됩니다. 디바이스 A에서 traceroute 150.1.4.2 명령이 디바이스 7C로 실행됩니다.

각 예에서 debug ip packet detail 명령은 디바이스 11A에서 실행됩니다.

Cisco IOS 소프트웨어가 포함된 Cisco 라우터

이 확장 traceroute 명령 예는 Cisco 라우터에서 traceroute 명령을 실행할 때 변경할 수 있는 옵션을 보여줍니다. 이 예에서는 모든 항목이 기본값으로 유지됩니다.

rp-10c-2611#traceroute

Protocol [ip]:

Target IP address: 150.1.4.2

Source address: 150.1.1.1

Numeric display [n]:

Timeout in seconds [3]:

Probe count [3]:

Minimum Time to Live [1]:

Maximum Time to Live [30]:

Port Number [33434]:

Loose, Strict, Record, Timestamp, Verbose[none]:

Type escape sequence to abort.

Tracing the route to 150.1.4.2

1 150.1.1.2 4 msec 0 msec 4 msec

2 150.1.2.2 4 msec 4 msec 0 msec

3 150.1.3.2 0 msec 0 msec 4 msec

4 150.1.4.2 4 msec * 0 msec

rp-11a-7204#

*Dec 29 13:13:57.060: IP: s=150.1.1.2 (local), d=150.1.1.1 (Ethernet4/0),

len 56, sending

*Dec 29 13:13:57.060: ICMP type=11, code=0

*Dec 29 13:13:57.064: IP: s=150.1.1.2 (local), d=150.1.1.1 (Ethernet4/0),

len 56, sending

*Dec 29 13:13:57.064: ICMP type=11, code=0

*Dec 29 13:13:57.064: IP: s=150.1.1.2 (local), d=150.1.1.1 (Ethernet4/0),

len 56, sending

*Dec 29 13:13:57.068: ICMP type=11, code=0

이 디버그 출력에서 Device 11A는 ICMP "time exceeded" 메시지를 프로브의 소스(150.1.1.1)으로 전송합니다. 이러한 ICMP 메시지는 TTL=1이 있는 초기 프로브에 대한 응답입니다. 디바이스 11A는 TTL을 0으로 줄이고 "시간 초과" 메시지로 응답합니다.

참고:  다음 두 가지 이유로 인해 이 디버그 출력에서는 UDP 프로브가 표시되지 않습니다.

- 디바이스 11A는 UDP 프로브의 대상이 아닙니다.

- TTL은 0으로 감소하며 패킷은 라우팅되지 않습니다. 따라서 디버그는 패킷을 인식하지 않습니다.

*Dec 29 13:13:57.068: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 28, forward

*Dec 29 13:13:57.068: UDP src=40309, dst=33437

*Dec 29 13:13:57.068: IP: s=150.1.2.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 56, forward

*Dec 29 13:13:57.068: ICMP type=11, code=0

*Dec 29 13:13:57.072: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 28, forward

*Dec 29 13:13:57.072: UDP src=37277, dst=33438

*Dec 29 13:13:57.072: IP: s=150.1.2.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 56, forward

*Dec 29 13:13:57.072: ICMP type=11, code=0

*Dec 29 13:13:57.076: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 28, forward

*Dec 29 13:13:57.076: UDP src=36884, dst=33439

*Dec 29 13:13:57.076: IP: s=150.1.2.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 56, forward

*Dec 29 13:13:57.076: ICMP type=11, code=0

이 디버그 출력은 150.1.4.2으로 향하는 소스 150.1.1.1의 UDP 프로브를 표시합니다.

참고:  이러한 프로브에서 TTL=2(디버그로 볼 수 없음)를 확인합니다. 디바이스 11A는 TTL을 1로 줄이고 UDP 패킷을 디바이스 7A로 전달합니다. 디바이스 7A는 TTL을 0으로 줄이고 ICMP "time exceeded" 메시지로 응답합니다.

*Dec 29 13:13:57.080: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 28, forward

*Dec 29 13:13:57.080: UDP src=37479, dst=33440

*Dec 29 13:13:57.080: IP: s=150.1.3.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 56, forward

*Dec 29 13:13:57.080: ICMP type=11, code=0

*Dec 29 13:13:57.084: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 28, forward

*Dec 29 13:13:57.084: UDP src=40631, dst=33441

*Dec 29 13:13:57.084: IP: s=150.1.3.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 56, forward

*Dec 29 13:13:57.084: ICMP type=11, code=0

*Dec 29 13:13:57.084: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 28, forward

*Dec 29 13:13:57.088: UDP src=39881, dst=33442

*Dec 29 13:13:57.088: IP: s=150.1.3.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 56, forward

*Dec 29 13:13:57.088: ICMP type=11, code=0

이 디버그 출력에서 다음 3개의 UDP 프로브가 표시됩니다. 이러한 프로브의 TTL은 3입니다. 디바이스 11A는 TTL을 2로 줄이고 디바이스 7A로 전달합니다. 디바이스 7A는 TTL을 1로 줄이고 패킷을 디바이스 7B에 전달합니다. 이렇게 하면 TTL이 0으로 감소하며 ICMP "time exceeded" 메시지로 응답합니다.

*Dec 29 13:13:57.088: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 28, forward

*Dec 29 13:13:57.088: UDP src=39217, dst=33443

*Dec 29 13:13:57.092: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 56, forward

*Dec 29 13:13:57.092: ICMP type=3, code=3

*Dec 29 13:13:57.092: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 28, forward

*Dec 29 13:13:57.096: UDP src=34357, dst=33444

*Dec 29 13:14:00.092: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 28, forward

*Dec 29 13:14:00.092: UDP src=39587, dst=33445

*Dec 29 13:14:00.092: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 56, forward

*Dec 29 13:14:00.092: ICMP type=3, code=3

이 디버그 출력에서 마지막 3개의 UDP 프로브를 볼 수 있습니다. 이러한 프로브의 원래 TTL은 4입니다. TTL은 디바이스 11A에 의해 3으로 감소된 다음 디바이스 7A에 의해 2로 감소되고 디바이스 7B에 의해 1로 감소되었습니다. 디바이스 7C는 프로브의 목적지이므로 ICMP "port unreachable" 메시지로 응답합니다.

참고: Device 7C는 속도 제한 때문에 두 개의 ICMP "port unreachable" 메시지만 전송합니다.

Linux가 설치된 PC

[root#linux-pc]#traceroute -n 150.1.4.2

traceroute to 150.1.4.2 (150.1.4.2), 30 hops max, 40 byte packets

1. 150.1.1.2 1.140 ms 0.793 ms 0.778 ms

2. 150.1.2.2 2.213 ms 2.105 ms 3.491 ms

1. 150.1.3.2 3.146 ms 2.314 ms 2.347 ms

1. 150.1.4.2 3.579 ms * 2.954 ms

rp-11a-7204#

*Jan 2 07:17:27.894: IP: s=150.1.1.2 (local), d=150.1.1.1 (Ethernet4/0),

len 56, sending

*Jan 2 07:17:27.894: ICMP type=11, code=0

*Jan 2 07:17:27.894: IP: s=150.1.1.2 (local), d=150.1.1.1 (Ethernet4/0),

len 56, sending

*Jan 2 07:17:27.894: ICMP type=11, code=0

*Jan 2 07:17:27.894: IP: s=150.1.1.2 (local), d=150.1.1.1 (Ethernet4/0),

len 56, sending

*Jan 2 07:17:27.894: ICMP type=11, code=0

이 디버그 출력에서 Device 11A는 ICMP "time exceeded" 메시지를 프로브의 소스(150.1.1.1)으로 전송합니다. 이러한 ICMP 메시지는 TTL=1이 있는 초기 프로브에 대한 응답입니다. 디바이스 11A는 TTL을 0으로 줄이고 "시간 초과" 메시지로 응답합니다.

참고: 다음 두 가지 이유로 인해 이 디버그 출력에서는 UDP 프로브가 표시되지 않습니다.

- 디바이스 11A는 UDP 프로브의 대상이 아닙니다.

- TTL은 0으로 감소하며 패킷은 라우팅되지 않습니다. 따라서 디버그는 패킷을 인식하지 않습니다.

*Jan 2 07:17:27.894: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2(FastEthernet0/0),

g=150.1.2.2, len 40, forward

*Jan 2 07:17:27.894: UDP src=33302, dst=33438

*Jan 2 07:17:27.898: IP: s=150.1.2.2 (FastEthernet0/0), d=150.1.1.1(Ethernet4/0),

g=150.1.1.1, len 56, forward

*Jan 2 07:17:27.898: ICMP type=11, code=0

*Jan 2 07:17:27.898: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2(FastEthernet0/0),

g=150.1.2.2, len 40, forward

*Jan 2 07:17:27.898: UDP src=33302, dst=33439

*Jan 2 07:17:27.898: IP: s=150.1.2.2 (FastEthernet0/0), d=150.1.1.1(Ethernet4/0),

g=150.1.1.1, len 56, forward

*Jan 2 07:17:27.898: ICMP type=11, code=0

*Jan 2 07:17:27.898: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2(FastEthernet0/0),

g=150.1.2.2, len 40, forward

*Jan 2 07:17:27.898: UDP src=33302, dst=33440

*Jan 2 07:17:27.902: IP: s=150.1.2.2 (FastEthernet0/0), d=150.1.1.1(Ethernet4/0),

g=150.1.1.1, len 56, forward

*Jan 2 07:17:27.902: ICMP type=11, code=0

참고: 이 디버그 출력에서는 소스 150.1.1.1에서 150.1.4.2으로 향하는 UDP 프로브가 표시됩니다.

참고: 이러한 프로브에서 TTL=2를 프로브합니다(디버그로 볼 수 없음). 디바이스 11A는 TTL을 1로 줄이고 UDP 패킷을 디바이스 7A로 전달합니다. 디바이스 7A는 TTL을 0으로 줄이고 ICMP "time exceeded" 메시지로 응답합니다.

*Jan 2 07:17:27.902: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2(FastEthernet0/0),

g=150.1.2.2, len 40, forward

*Jan 2 07:17:27.902: UDP src=33302, dst=33441

*Jan 2 07:17:27.906: IP: s=150.1.3.2 (FastEthernet0/0), d=150.1.1.1(Ethernet4/0),

g=150.1.1.1, len 56, forward

*Jan 2 07:17:27.906: ICMP type=11, code=0

*Jan 2 07:17:27.906: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2(FastEthernet0/0),

g=150.1.2.2, len 40, forward

*Jan 2 07:17:27.906: UDP src=33302, dst=33442

*Jan 2 07:17:27.910: IP: s=150.1.3.2 (FastEthernet0/0), d=150.1.1.1(Ethernet4/0),

g=150.1.1.1, len 56, forward

*Jan 2 07:17:27.910: ICMP type=11, code=0

*Jan 2 07:17:27.910: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2(FastEthernet0/0),

g=150.1.2.2, len 40, forward

*Jan 2 07:17:27.910: UDP src=33302, dst=33443

*Jan 2 07:17:27.910: IP: s=150.1.3.2 (FastEthernet0/0), d=150.1.1.1(Ethernet4/0),

g=150.1.1.1, len 56, forward

*Jan 2 07:17:27.910: ICMP type=11, code=0

다음 3개의 UDP 프로브가 이 디버그 출력에서 표시됩니다. 이러한 프로브의 TTL은 3입니다. 디바이스 11A는 TTL을 2로 줄이고 디바이스 7A로 전달합니다. 디바이스 7A는 TTL을 1로 줄이고 패킷을 디바이스 7B에 전달합니다. 이렇게 하면 TTL이 0으로 감소하며 ICMP "time exceeded" 메시지로 응답합니다.

*Jan 2 07:17:27.910: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2(FastEthernet0/0),

g=150.1.2.2, len 40, forward

*Jan 2 07:17:27.910: UDP src=33302, dst=33444

*Jan 2 07:17:27.914: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1(Ethernet4/0),

g=150.1.1.1, len 56, forward

*Jan 2 07:17:27.914: ICMP type=3, code=3

*Jan 2 07:17:27.914: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2(FastEthernet0/0),

g=150.1.2.2, len 40, forward

*Jan 2 07:17:27.914: UDP src=33302, dst=33445

*Jan 2 07:17:32.910: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2(FastEthernet0/0),

g=150.1.2.2, len 40, forward

*Jan 2 07:17:32.910: UDP src=33302, dst=33446

*Jan 2 07:17:32.914: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1(Ethernet4/0),

g=150.1.1.1, len 56, forward

*Jan 2 07:17:32.914: ICMP type=3, code=3

이 디버그 출력은 마지막 3개의 UDP 프로브를 표시합니다. 이러한 프로브의 원래 TTL은 4입니다. TTL은 디바이스 11A에 의해 3으로 감소된 다음 디바이스 7A에 의해 2로 감소되고 디바이스 7B에 의해 1로 감소되었습니다. 그런 다음 디바이스 7C는 프로브의 목적지이므로 ICMP "port unreachable" 메시지로 응답합니다.

참고: Device 7C는 속도 제한 때문에 두 개의 ICMP "port unreachable" 메시지만 전송합니다.

MS Windows가 설치된 PC

C:\>tracert 150.1.4.2

1 <10 ms <10 ms <10 ms 10.1.1.2

1 <10 ms <10 ms <10 ms 10.1.2.2

1 <10 ms <10 ms <10 ms 10.1.3.2

1 <10 ms 10 ms 10 ms 10.1.4.2

Trace complete

rp-11a-7204#

*Dec 29 14:02:22.236: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 78, forward

*Dec 29 14:02:22.236: UDP src=137, dst=137

*Dec 29 14:02:22.240: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 56, forward

*Dec 29 14:02:22.240: ICMP type=3, code=3

*Dec 29 14:02:23.732: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 78, forward

*Dec 29 14:02:23.732: UDP src=137, dst=137

*Dec 29 14:02:23.736: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 56, forward

*Dec 29 14:02:23.736: ICMP type=3, code=3

*Dec 29 14:02:25.236: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 78, forward

*Dec 29 14:02:25.236: UDP src=137, dst=137

*Dec 29 14:02:25.236: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 56, forward

*Dec 29 14:02:25.240: ICMP type=3, code=3

*Dec 29 14:02:26.748: IP: s=150.1.1.2 (local), d=150.1.1.1 (Ethernet4/0),

len 56, sending

*Dec 29 14:02:26.748: ICMP type=11, code=0

*Dec 29 14:02:26.752: IP: s=150.1.1.2 (local), d=150.1.1.1 (Ethernet4/0),

len 56, sending

*Dec 29 14:02:26.752: ICMP type=11, code=0

*Dec 29 14:02:26.752: IP: s=150.1.1.2 (local), d=150.1.1.1 (Ethernet4/0),

len 56, sending

*Dec 29 14:02:26.752: ICMP type=11, code=0

이 디버그 출력에서 Device 11A는 ICMP "time exceeded" 메시지를 프로브의 소스(150.1.1.1)으로 전송합니다. 이러한 ICMP 메시지는 TTL=1의 ICMP 에코 요청 패킷인 초기 프로브에 대한 응답입니다. 디바이스 11A는 TTL을 0으로 줄이고 ICMP 메시지로 응답합니다.

참고: 맨 위에 NETBIOS 이름 요청이 표시됩니다. 이러한 요청은 소스 및 목적지 포트가 137인 UDP 패킷으로 간주됩니다. 명확한 이유로 NETBIOS 패킷은 디버그 출력의 나머지 부분에서 제거됩니다. tracert 명령에서 -d 옵션을 사용하여 NETBIOS 동작을 비활성화할 수 있습니다.

참고: 다음 두 가지 이유로 인해 이 디버그 출력에서 ICMP 프로브가 표시되지 않습니다.

- 디바이스 11A는 ICMP 프로브의 대상이 아닙니다.

- TTL은 0으로 감소하며 패킷은 라우팅되지 않습니다. 따라서 디버그는 패킷을 인식하지 않습니다.

*Dec 29 14:02:32.256: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 92, forward

*Dec 29 14:02:32.256: ICMP type=8, code=0

*Dec 29 14:02:32.260: IP: s=150.1.2.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 56, forward

*Dec 29 14:02:32.260: ICMP type=11, code=0

*Dec 29 14:02:32.260: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 92, forward

*Dec 29 14:02:32.260: ICMP type=8, code=0

*Dec 29 14:02:32.260: IP: s=150.1.2.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 56, forward

*Dec 29 14:02:32.260: ICMP type=11, code=0

*Dec 29 14:02:32.264: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 92, forward

*Dec 29 14:02:32.264: ICMP type=8, code=0

*Dec 29 14:02:32.264: IP: s=150.1.2.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 56, forward

*Dec 29 14:02:32.264: ICMP type=11, code=0

이 디버그 출력에서는 소스150.1.1.1 ICMP 프로브가 150.1.4.2으로 이동됩니다.

참고: 이러한 프로브에서 TTL=2(디버그로 볼 수 없음). 디바이스 11A는 TTL을 1로 줄이고 디바이스 7A에 UDP 패킷을 전달합니다. 디바이스 7A는 TTL을 0으로 줄이고 ICMP "time exceeded" 메시지로 응답합니다.

*Dec 29 14:02:37.776: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 92, forward

*Dec 29 14:02:37.776: ICMP type=8, code=0

*Dec 29 14:02:37.776: IP: s=150.1.3.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 56, forward

*Dec 29 14:02:37.776: ICMP type=11, code=0

*Dec 29 14:02:37.780: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 92, forward

*Dec 29 14:02:37.780: ICMP type=8, code=0

*Dec 29 14:02:37.780: IP: s=150.1.3.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 56, forward

*Dec 29 14:02:37.780: ICMP type=11, code=0

*Dec 29 14:02:37.780: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 92, forward

*Dec 29 14:02:37.780: ICMP type=8, code=0

*Dec 29 14:02:37.784: IP: s=150.1.3.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 56, forward

*Dec 29 14:02:37.784: ICMP type=11, code=0

이 디버그 출력에서 다음 3개의 ICMP 프로브가 표시됩니다. 이러한 프로브의 TTL은 3입니다. 디바이스 11A는 TTL을 2로 줄이고 디바이스 7A로 전달합니다. 디바이스 7A는 TTL을 1로 줄이고 패킷을 디바이스 7B에 전달합니다. 이렇게 하면 TTL이 0으로 감소하며 ICMP "time exceeded" 메시지로 응답합니다.

*Dec 29 14:02:43.292: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 92, forward

*Dec 29 14:02:43.292: ICMP type=8, code=0

*Dec 29 14:02:43.296: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 92, forward

*Dec 29 14:02:43.296: ICMP type=0, code=0

*Dec 29 14:02:43.296: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 92, forward

*Dec 29 14:02:43.296: ICMP type=8, code=0

*Dec 29 14:02:43.300: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 92, forward

*Dec 29 14:02:43.300: ICMP type=0, code=0

*Dec 29 14:02:43.300: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),

g=150.1.2.2, len 92, forward

*Dec 29 14:02:43.300: ICMP type=8, code=0

*Dec 29 14:02:43.304: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),

g=150.1.1.1, len 92, forward

*Dec 29 14:02:43.304: ICMP type=0, code=0

이 디버그 출력은 마지막 3개의 ICMP 프로브를 표시합니다. 이러한 프로브의 원래 TTL은 4입니다. TTL은 디바이스 11A에 의해 3으로 감소된 다음 디바이스 7A에 의해 2로 감소되고 디바이스 7B에 의해 1로 감소되었습니다. 그런 다음 디바이스 7C는 프로브의 목적지이므로 ICMP 에코 응답 메시지(type=0, code=0)로 응답합니다.

참고: ICMP "port unreachable" 메시지가 표시되었으므로 ICMP 에코 응답 메시지의 속도가 제한되지 않습니다. 이 경우 세 개의 ICMP 에코 응답 메시지가 모두 전송됩니다.

추가 참고 사항

Cisco 라우터에서 traceroute 명령 회신의 코드는 다음과 같습니다.

! -- success

* -- time out

N -- network unreachable

H -- host unreachable

P -- protocol unreachable

A -- admin denied

Q -- source quench received (congestion)

? -- unknown (any other ICMP message)

UNIX에서 traceroute 명령을 실행하는 경우 다음 항목에 유의하십시오.

- "traceroute: icmp 소켓: 사용 권한이 거부되었습니다." 메시지입니다.

- traceroute 프로그램은 NIT(Network Interface Tap)를 사용하여 네트워크를 스누핑합니다. 이 장치는 루트에서만 액세스할 수 있습니다. root로 프로그램을 실행하거나 루트에 대한 사용자 ID를 설정해야 합니다.

요약

이 문서에서는 traceroute 명령이 UDP 및 ICMP 패킷을 사용하여 지정된 소스에서 지정된 대상으로의 패킷이 이동하는 경로를 확인하는 방법을 보여 줍니다. 출력에서 가능한 ICMP 메시지 유형은 다음과 같습니다.

- 전송 중에 TTL이 초과되면 type=11, code=0, 패킷이 목적지에 도달하기 전에 프로브 패킷의 TTL이 만료되는 모든 경우에 트랜짓 라우터가 패킷을 다시 전송합니다.

- 포트에 연결할 수 없는 경우 type=3, code=3, 패킷은 대상에 도달할 때 UDP 프로브 패킷에 대한 응답으로 다시 전송됩니다(UDP 애플리케이션이 정의되지 않음). 이러한 패킷은 500ms당 하나의 패킷으로 제한됩니다. 이렇게 하면 대상의 응답(Cisco 라우터 및 Linux의 출력 참조)이 짝수 응답에서 실패한 이유를 알 수 있습니다. 디바이스 7C는 ICMP 메시지를 생성하지 않으며 각 디바이스의 traceroute 명령 출력이 1초 이상 기다립니다. MS Windows tracert 명령 출력의 경우 UDP 포트 137이 Cisco 라우터에 없으므로 ICMP 메시지가 생성됩니다.

- 에코(type=8, code=0)가 있으면 에코 프로브 패킷이 MS Windows PC에서 전송됩니다.

- 에코 회신이 있는 경우 type=0, code=0이면 대상에 도달할 때 이전 패킷에 대한 회신이 전송됩니다. 이는 MS Windows tracert 명령에만 적용됩니다.

관련 정보

- 기술 지원 및 문서 − Cisco Systems