Skip to main content

Linux에서 'traceroute'명령을 사용하는 방법

[스무디] 리눅스 네트워크 명령어 (할 수있다 2024)

[스무디] 리눅스 네트워크 명령어 (할 수있다 2024)
Anonim

traceroute 명령은 정보 패킷이 소스에서 목적지까지 착수하는 여정을 매핑하기 위해 Linux에서 사용됩니다. traceroute에 대한 한 가지 용도는 네트워크를 통해 데이터 손실이 발생할 때 위치를 찾는 것입니다. 이는 다운 된 노드를 나타낼 수 있습니다.

레코드의 각 홉이 원래 PC와 의도 한 대상 사이의 새로운 서버 또는 라우터를 반영하므로 traceroute 검색 결과를 검토하면 네트워크 트래픽에 악영향을 미칠 수있는 느린 지점을 식별 할 수 있습니다.

어떻게 작동 하는가?

네트워크 트래픽이 따르는 특정 경로를 평가하거나 패킷을 버리는 잘못된 게이트웨이를 찾는 것은 몇 가지 문제 해결 과제를 제시합니다. traceroute는 IP 프로토콜을 사용합니다. 살기위한 시간 필드를 사용하여 대상 호스트에 대한 경로를 따라 각 게이트웨이에서 ICMP TIME_EXCEEDED 응답을 요청합니다.

traceroute 명령을 실행할 때 포함시켜야하는 유일한 매개 변수는 대상의 호스트 이름 또는 IP 주소입니다.

Traceroute 구문 및 스위치

traceroute -dFInrvx -에프 first_ttl -지 게이트웨이 -나는 Iface -엠 max_ttl -피 포트 -큐 nqueries -에스 src_addr -티 tos -w 기다리는 시간 -지 일시 정지 숙주 패킷 렌

위의 내용은 명령 행에서 작업하기 위해 traceroute 명령을 작성하는 방법이지만 명령의 성능 또는 출력은 하나 이상의 선택적 스위치를 지정하여 변경할 수 있습니다.

  • -에프: 첫 번째 발신 프로브 패킷에 사용 된 초기 생존 시간을 설정합니다.
  • -에프: "단편화하지 말 것"비트를 설정하십시오.
  • -디: 소켓 레벨 디버깅을 활성화합니다.
  • -지: 느슨한 소스 경로 게이트웨이를 지정하십시오 (최대 8).
  • -나는: 송신 프로브 패킷의 소스 IP 주소를 얻기 위해 네트워크 인터페이스를 지정하십시오. 일반적으로 멀티 홈 호스트에서만 유용합니다. (-에스 이 작업을 수행하는 다른 방법의 플래그.)
  • -나는: UDP 데이터 그램 대신 ICMP ECHO를 사용하십시오.
  • -엠: 발신 프로브 패킷에 사용되는 최대 지속 시간 (최대 홉 수)을 설정합니다. 기본값은 30 홉 (TCP 연결에 사용되는 기본값)입니다.
  • -엔: 홉 주소를 기호 및 숫자가 아닌 숫자로 출력하십시오 (경로에있는 각 게이트웨이에 대한 이름 서버 주소 검색 저장).
  • -피: 프로브에 사용되는 기본 UDP 포트 번호를 설정합니다 (기본값은 33434). Traceroute는 UDP 포트를 수신 대기하는 것이 아무것도 기대하지 않습니다. 베이스 에 기본 + nhops - 1 (ICMP PORT_UNREACHABLE 메시지가 라우트 추적을 종료하기 위해 리턴됩니다). 기본 범위의 포트에서 수신 대기중인 항목이 있으면이 옵션을 사용하여 사용하지 않는 포트 범위를 선택할 수 있습니다.
  • -아르 자형: 일반 라우팅 테이블을 무시하고 연결된 네트워크의 호스트로 직접 보내십시오. 호스트가 직접 연결된 네트워크에 있지 않으면 오류가 리턴됩니다. 이 옵션을 사용하면 경로가없는 인터페이스를 통해 로컬 호스트를 핑 (ping) 할 수 있습니다 (예 : 루팅 된 (8C)).
  • -에스: 나가는 프로브 패킷의 소스 주소로 다음 IP 주소 (일반적으로 호스트 이름이 아닌 IP 번호로 제공됨)를 사용하십시오. 멀티 홈 호스트 (둘 이상의 IP 주소가있는 호스트)에서이 옵션을 사용하여 소스 주소를 프로브 패킷이 전송되는 인터페이스의 IP 주소 이외의 다른 주소로 강제 설정할 수 있습니다. IP 주소가이 시스템의 인터페이스 주소 중 하나가 아닌 경우 오류가 반환되고 아무 것도 전송되지 않습니다. (-나는 이 작업을 수행하는 다른 방법의 플래그.)
  • -티: 설정 서비스 유형 프로브 패킷을 다음 값 (기본값은 0)으로 변경합니다. 이 값은 0 - 255 범위의 10 진 정수 여야합니다.이 옵션을 사용하면 서비스 유형에 따라 경로가 달라지는 지 확인할 수 있습니다. telnet과 ftp와 같은 일반적인 네트워크 서비스는 TOS를 제어 할 수 없기 때문에 4.4bsd를 실행하지 않는 경우 이것은 학문적 일 수 있습니다. TOS의 모든 값이 합법적이거나 의미있는 것은 아닙니다. 정의에 대한 IP 사양을 참조하십시오. 유용한 값은 아마`-티 16 '(낮은 지연)과`-티 8 '(높은 처리량).
  • -V: 자세한 출력. TIME_EXCEEDED 및 UNREACHABLEs 이외의 수신 된 ICMP 패킷이 나열됩니다.
  • -w : 프로브에 대한 응답을 기다리는 시간 (초)을 설정합니다 (기본값 5 초).
  • -엑스: IP 체크섬을 토글합니다. 일반적으로 traceroute가 IP 체크섬을 계산하지 못하게합니다. 경우에 따라 운영 체제는 나가는 패킷의 일부를 덮어 쓸 수는 있지만 체크섬을 다시 계산하지는 않습니다. 따라서 어떤 경우 기본값은 체크섬을 계산하지 않고-엑스 계산되게한다. 체크섬은 일반적으로 ICMP ECHO 프로브를 사용할 때 마지막 홉에 필요합니다 (-나는)이므로 ICMP를 사용할 때 항상 계산됩니다.
  • -지: 프로브 간 일시 중지 시간 (밀리 초)을 설정합니다 (기본값 0). Solaris 및 Cisco의 라우터와 같은 일부 시스템은 속도 제한 icmp 메시지를 수신합니다. 이 값을 사용하는 것이 좋습니다 (예 : 1/2 초).

결과 해석

Traceroute는 IP 패킷이 작은 TTL (time to live)로 UDP 프로브 패킷을 시작한 다음 게이트웨이에서 ICMP "시간 초과"응답을 수신하여 IP 호스트가 따르는 경로를 설명합니다. 우리는 TTL 값으로 프로브를 시작하고 ICMP "포트 도달 불가"(패킷이 목적지에 도착했음을 의미)를 얻을 때까지 또는 최대 값을 시도 할 때까지 하나씩 증가시킵니다. 기본값은 30 홉이며 기본값은 30 홉입니다. 그만큼-엠 깃발.

traceroute가 실행되면 각 TTL 설정에서 세 개의 프로브를 전송 한 다음 TTL, 게이트웨이 주소 및 각 프로브의 왕복 시간을 보여주는 행을 콘솔에 인쇄합니다. 프로브 응답이 다른 게이트웨이에서 오는 경우 각 응답 시스템의 주소가 인쇄됩니다. 5 초 제한 시간 내에 응답이없는 경우 (-w 플래그), 해당 프로브에 별표가 인쇄됩니다.

목적지 호스트가 UDP 프로브 패킷 처리에 의해 압도 당하지 않도록 목적지 포트는 해당 장치에서 사용되지 않을 값으로 설정됩니다. 대상의 네트워크 나 서비스가 해당 포트를 사용하는 경우에는 다음을 사용하여 값을 변경하십시오.-피 깃발.

샘플 사용 및 출력은 다음 예제와 비슷한 결과를 반환합니다.

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

두 번째 줄과 세 번째 줄은 같습니다. 이 결과는 두 번째 홉 시스템 인 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 "시간 초과"메시지를 보내지 않거나 너무 작아서 우리에게 도달 할 수없는 TTL로 메시지를 보냅니다. 14 ~ 17 행은 "시간 초과"메시지를 보내지 않는 MIT C 게이트웨이 코드를 실행합니다.

위의 예제에서 자동 게이트웨이 12는 4의 버그의 결과 일 수 있습니다. 23 BSD 네트워크 코드 및 그 파생어 : 4.3 코드를 실행하고 이전에 원래의 데이터 그램에 남아있는 TTL을 사용하여 도달 할 수없는 메시지를 보내는 컴퓨터. 게이트웨이의 경우 나머지 TTL은 0이므로 ICMP "시간 초과"는 다시 TTL을 반환하지 않습니다. 이 버그의 동작은 대상 시스템에 나타날 때 약간 더 재미 있습니다.

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 OS 3.5)은 도착하는 데이터 그램의 TTL을 ICMP 응답의 TTL로 사용하고 있습니다. 따라서 경로 길이의 두 배 이상인 TTL을 조사 할 때까지 회신 경로에서 응답이 시간 초과됩니다 (ICMP가 ICMP로 전송되지 않으므로 아무에게도 통지하지 않음). 즉, rip은 실제로 7 회입니다. 도망 간다.

TTL 1과 함께 반환되는 회신은이 문제가 있다는 단서입니다. Traceroute는 "!" (DEC Ultrix, Sun 3.x) 또는 비표준 (HPUX) 소프트웨어를 많이 제공하기 때문에이 문제가 자주 발생하고 프로브의 타겟 호스트.

그 후에 가능한 다른 주석은 다음과 같습니다.! H, !엔, 또는!피 (호스트, 네트워크 또는 프로토콜에 도달 할 수 없음)!에스 (출처 경로가 실패했습니다),!에프- (단편화 필요 - RFC1191 Path MTU Discovery 값이 표시됨)!엑스 (관리상의 금지 통신),!V (호스트 우선 순위 위반),!기음 (우선 순위 상쇄 효과), 또는! (ICMP 연결할 수없는 코드). 이 코드는 RFC1716을 대체하는 RFC1812에 의해 정의됩니다. 거의 모든 프로브가 도달 할 수없는 호스트가되면 traceroute는 포기하고 종료합니다.

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