Traceroute - 리눅스 명령 - 유닉스 명령

traceroute - 패킷이 네트워크 호스트에 걸리는 경로를 출력합니다.

개요

traceroute [ -dFInrvx ] [ -f first_ttl ] [ -g 게이트웨이 ]

[ -i iface ] [ -m max_ttl] [ -p port ]

[ -q nqueries ] [ -s src_addr ] [ -t tos ]

[ -w 대기 시간 ] [ -z pausemsecs ]

호스트 [ packetlen ]

기술

인터넷은 게이트웨이에 의해 서로 연결된 네트워크 하드웨어의 크고 복잡한 집계입니다. 패킷이 따르는 경로를 추적 (또는 패킷을 버리는 악의적 인 게이트웨이를 찾는 것)이 어려울 수 있습니다. tracerouteIP 프로토콜 `time to live '필드를 이용하고 어떤 호스트에 대한 경로를 따라 각 게이트웨이로부터 ICMP TIME_EXCEEDED 응답을 유도하려고 시도합니다.

유일한 필수 매개 변수는 대상 호스트 이름 또는 IP 번호 입니다. 기본 프로브 데이터 그램 길이는 40 바이트 이지만 목적지 호스트 이름 다음에 패킷 길이 (바이트)를 지정하여 증가시킬 수 있습니다.

다른 옵션은 다음과 같습니다.

-에프

첫 번째 발신 프로브 패킷에 사용 된 초기 생존 시간을 설정합니다.

-에프

"단편화하지 말 것"비트를 설정하십시오.

-디

소켓 레벨 디버깅을 활성화합니다.

-지

느슨한 소스 경로 게이트웨이를 지정하십시오 (최대 8).

-나는

송신 프로브 패킷의 소스 IP 주소를 얻기 위해 네트워크 인터페이스를 지정하십시오. 일반적으로 멀티 홈 호스트에서만 유용합니다. (이것을 수행하는 또 다른 방법은 -s 플래그를 참조하십시오.)

-나는

UDP 데이터 그램 대신 ICMP ECHO를 사용하십시오.

-엠

발신 프로브 패킷에 사용되는 최대 지속 시간 (최대 홉 수)을 설정합니다. 기본값은 30 홉 (TCP 연결에 사용되는 기본값)입니다.

-엔

홉 주소를 기호 및 숫자가 아닌 숫자로 출력하십시오 (경로에있는 각 게이트웨이에 대한 이름 서버 주소 검색 저장).

-피

프로브에 사용되는 기본 UDP 포트 번호를 설정합니다 (기본값은 33434). traceroute는 대상 호스트에서 기본 포트 + nhops - 1 에 UDP 포트 기반 에서 수신 대기하는 것이 아무것도 없기를 희망합니다 (따라서 ICMP PORT_UNREACHABLE 메시지가 경로 추적을 종료하기 위해 반환됩니다). 기본 범위의 포트에서 수신 대기중인 항목이 있으면이 옵션을 사용하여 사용하지 않는 포트 범위를 선택할 수 있습니다.

-아르 자형

일반 라우팅 테이블을 무시하고 연결된 네트워크의 호스트로 직접 보내십시오. 호스트가 직접 연결된 네트워크에 있지 않으면 오류가 리턴됩니다. 이 옵션은 라우트가없는 인터페이스 (예 : 라우트 된 (8C)로 인터페이스가 제거 된 후)를 통해 로컬 호스트를 ping하는 데 사용할 수 있습니다.

-에스

나가는 프로브 패킷의 소스 주소로 다음 IP 주소 (일반적으로 호스트 이름이 아닌 IP 번호로 제공됨)를 사용하십시오. 멀티 홈 호스트 (둘 이상의 IP 주소가있는 호스트)에서이 옵션을 사용하여 소스 주소를 프로브 패킷이 전송되는 인터페이스의 IP 주소 이외의 다른 주소로 강제 설정할 수 있습니다. IP 주소가이 시스템의 인터페이스 주소 중 하나가 아닌 경우 오류가 반환되고 아무 것도 전송되지 않습니다. (이것을 수행하는 또 다른 방법은 -i 플래그를 참조하십시오.)

-티

프로브 패킷의 서비스 유형을 다음 값 (기본값은 0)으로 설정합니다. 이 값은 0 - 255 범위의 10 진 정수 여야합니다.이 옵션을 사용하면 서비스 유형에 따라 경로가 달라지는 지 확인할 수 있습니다. (4.4bsd를 실행하지 않는 경우 telnet과 ftp와 같은 일반적인 네트워크 서비스가 TOS를 제어 할 수 없기 때문에 이것은 학문적 일 수 있습니다. TOS의 모든 가치가 합법적이거나 의미있는 것은 아닙니다. 정의에 대한 IP 스펙을보십시오. 유용한 값은` -t 16 '(낮은 지연)과` -t 8 '(높은 처리량) 일 것입니다.

-V

자세한 출력. TIME_EXCEEDED 및 UNREACHABLEs 이외의 수신 된 ICMP 패킷이 나열됩니다.

-w

프로브에 대한 응답을 기다리는 시간 (초)을 설정합니다 (기본값 5 초).

-엑스

IP 체크섬을 토글합니다. 보통 이것은 traceroute가 ip checksum을 계산하는 것을 방지합니다. 경우에 따라 운영 체제는 나가는 패킷의 일부를 덮어 쓰지만 체크섬을 다시 계산하지 않을 수 있습니다. 따라서 어떤 경우에는 체크섬을 계산하지 않고 -x를 사용하면 계산할 수 있습니다. 체크섬은 일반적으로 ICMP ECHO 프로브 ( -I )를 사용할 때 마지막 홉에 필요합니다. 따라서 ICMP를 사용할 때 항상 계산됩니다.

-지

프로브 간 일시 중지 시간 (밀리 초)을 설정합니다 (기본값 0). Solaris와 같은 일부 시스템과 Ciscos와 같은 라우터는 icmp 메시지를 제한합니다. 이것과 함께 사용할 좋은 값은 500입니다 (예 : 1/2 초).

이 프로그램은 작은 ttl (time-to-live)로 UDP 프로브 패킷을 시작한 다음 게이트웨이에서 ICMP "시간 초과"응답을 수신하여 IP 패킷이 일부 인터넷 호스트로 따라가는 경로를 추적하려고 시도합니다. 우리는 ICMP "port unreachable"(우리가 "host"에 도착해야 함)를 얻거나 최대 값을 얻을 때까지 ttl을 1 씩 증가시키고 하나씩 증가시킵니다 (기본값은 30 홉이며 -m 깃발). 각 ttl 설정에서 세 개의 프로브 ( -q 플래그로 변경)가 전송되고 ttl, 게이트웨이의 주소 및 각 프로브의 왕복 시간을 보여주는 행이 인쇄됩니다. 프로브 응답이 다른 게이트웨이에서 온 경우, 응답하는 각 시스템의 주소가 인쇄됩니다. 5 초 이내에 응답이없는 경우. 시간 종료 간격 ( -w 플래그로 변경)은 해당 프로브에 대해 "*"가 인쇄됩니다.

대상 호스트가 UDP 프로브 패킷을 처리하여 대상 포트가 희박한 값으로 설정되지 않도록해야합니다 (대상의 일부 노드가 해당 값을 사용하는 경우 -p 플래그로 변경할 수 있음).

샘플 사용 및 출력은 다음과 같을 수 있습니다.

[yak 71] % traceroute nis.nsf.net. traceroute to nis.nsf.net (35.1.1.48), 최대 30 홉, 38 바이트 패킷 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 버클리 .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) 99ms 99ms 80ms 9 129.140.71.6 (129.140.71.6) 139ms 239ms 319ms 10 129.140.81.7 (129.140.81.7) 220ms 199ms 199ms 11nic.merit.edu (35.1 .1.48) 239 ms 239 ms 239 ms

두 번째 줄과 세 번째 줄은 같습니다. 이것은 제 2 홉 시스템의 버그가 많은 커널 (lbl-csam.arpa)이 0 ttl (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 홉 최대 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 . 버클리 .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 .0115) 339 ms 279 ms 279 ms

게이트웨이 12, 14, 15, 16 및 17은 ICMP "시간이 초과되었습니다"메시지를 보내지 않거나 너무 작아서 우리에게 도달하지 못하게합니다. 14-17은 "시간 초과"를 보내지 않는 MIT C 게이트웨이 코드를 실행 중입니다. 하나님께서는 12 세의 일을 알고 계십니다.

위의 침묵 게이트웨이 12는 4의 버그의 결과 일 수 있습니다. [23] BSD 네트워크 코드 (및 그 유도체) : 4.x (x <= 3)는 원본에 남아있는 ttl을 사용하여 연결할 수없는 메시지를 보냅니다 데이터 그램. 게이트웨이의 경우 나머지 ttl은 0이므로 ICMP "시간 초과"는 다시 해당 값을 반환하지 않습니다. 이 버그의 동작은 대상 시스템에 나타날 때 약간 더 재미 있습니다.

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. 버클리 .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!

12 개의 "게이트웨이"(13 개가 최종 목적지 임)가 있으며 정확하게 그 중 마지막 절반이 "누락"됨을 주목하십시오. 실제로 일어나는 일은 립 (Sun-3을 실행하는 Sun OS3.5)이 도착하는 데이터 그램의 ttl을 ICMP 응답의 ttl로 사용한다는 것입니다. 따라서 답장은 경로 길이의 두 배 이상인 ttl로 조사 할 때까지 반송 경로에서 시간 초과됩니다 (ICMP가 ICMP로 전송되지 않으므로 아무에게도 통지하지 않음). 즉, 립은 실제로 7 홉 밖에 없습니다. ttl이 1로 반환되는 응답은이 문제가 있다는 단서입니다. Traceroute는 "!" (DEC Ultrix, Sun 3.x) 또는 비표준 (HPUX) 소프트웨어를 많이 제공하기 때문에이 문제를 자주 보거나 대상을 선택하는 데주의해야합니다. 프로브 호스트.

그 후 가능한 다른 주석은 ! H,! N 또는 ! P (호스트, 네트워크 또는 프로토콜에 연결할 수 없음),! S (원본 경로 실패),! F- (조각화 필요 - RFC1191 경로 MTU 검색 값이 표시됨) ! X (관리상의 금지 통신),! V (호스트 우선 순위 위반),! C (우선 순위 컷오프) 또는 ! (ICMP 연결할 수없는 코드). 이들은 RFC1812 (RFC1716을 대체)에 의해 정의됩니다. 거의 모든 프로브가 도달 할 수없는 경우 traceroute는 포기하고 종료합니다.

이 프로그램은 네트워크 테스트, 측정 및 관리에 사용됩니다. 주로 수동 오류 격리에 사용되어야합니다. 네트워크에 부과 될 수있는로드로 인해 일반 작업이나 자동화 된 스크립트에서 traceroute 를 사용하는 것은 현명하지 않습니다.

또한보십시오

pathchar (8), netstat (1), ping (8)