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

Linux traceroute명령을 사용하여 네트워크 패킷 여정의 느린 구간을 찾아 내고 느린 네트워크 연결 문제를 해결할 수 있습니다. 방법을 보여 드리겠습니다!

Traceroute의 작동 원리

어떻게 감사 할 때 traceroute작품을 훨씬 더 쉽게 결과를 이해한다. 네트워크 패킷이 목적지에 도달하기 위해 거쳐야하는 경로가 복잡할수록 속도 저하가 발생할 수있는 위치를 정확히 찾아 내기가 더 어려워집니다.

소규모 조직의 LAN (Local Area Network)은 비교적 간단 할 수 있습니다. 아마도 적어도 하나의 서버와 라우터가있을 것입니다. 서로 다른 위치간에 또는 인터넷을 통해 통신하는 WAN (광역 네트워크)에서는 복잡성이 증가합니다. 그런 다음 네트워크 패킷은 라우터 및 게이트웨이와 같은 많은 하드웨어를 만나고 전달되고 라우팅됩니다.

데이터 패킷의 메타 데이터 헤더는 길이, 출처, 이동 경로, 사용중인 프로토콜 등을 설명합니다. 프로토콜의 사양은 헤더를 정의합니다. 프로토콜을 식별 할 수 있으면 헤더에서 각 필드의 시작과 끝을 결정하고 메타 데이터를 읽을 수 있습니다.

tracerouteTCP / IP 프로토콜 제품군을 사용하고 사용자 데이터 그램 프로토콜 패킷을 보냅니다. 헤더에는 8 비트 정수 값이 포함 된 TTL (Time to Live) 필드가 있습니다. 이름에서 알 수 있듯이 기간이 아니라 개수를 나타냅니다.

패킷은 라우터를 통해 출발지에서 목적지로 이동합니다. 패킷이 라우터에 도착할 때마다 TTL 카운터가 감소합니다. TTL 값이 1에 도달하면 패킷을 수신하는 라우터는 값을 감소시키고 현재 0임을 알 수 있습니다. 그런 다음 패킷은 "시간 초과"되었기 때문에 폐기되고 여행의 다음 홉으로 전달되지 않습니다.

라우터는 ICMP (Internet Message Control Protocol) Time Exceeded 메시지를 패킷의 출처로 다시 전송하여 패킷 시간 초과를 알립니다. Time Exceeded 메시지에는 원본 헤더와 원본 패킷 데이터의 처음 64 비트가 포함됩니다. 이것은 의견 요청 792의 6 페이지에 정의되어 있습니다.

따라서 traceroute패킷을 보내지 만 TTL 값을 1로 설정하면 패킷이 폐기되기 전에 첫 번째 라우터까지만 도달합니다. 라우터에서 ICMP 시간 초과 메시지를 수신하고 왕복에 소요 된 시간을 기록 할 수 있습니다.

그런 다음 TTL을 2로 설정하여 연습을 반복합니다. 두 홉 후에는 실패합니다. tracerouteTTL을 3으로 늘리고 다시 시도합니다. 이 프로세스는 대상에 도달하거나 최대 홉 수 (기본적으로 30)가 테스트 될 때까지 반복됩니다.

일부 라우터는 제대로 작동하지 않습니다.

일부 라우터에는 버그가 있습니다. 패킷을 버리고 ICMP 시간 초과 메시지를 올리는 대신 TTL이 0 인 패킷을 전달하려고합니다.

Cisco에 따르면 일부 인터넷 서비스 공급자 (ISP)는 라우터가 전달하는 ICMP 메시지 수를 제한합니다.

일부 장치는 ICMP 패킷을 보내지 않도록 구성되어 있습니다. 이는 종종 장치가 스머프 공격과 같은 분산 서비스 거부에 참여하도록 무의식적으로 강요되지 않도록하기위한 것입니다.

traceroute회신에 대한 기본 제한 시간은 5 초입니다. 5 초 이내에 응답을받지 못하면 시도가 취소됩니다. 이는 매우 느린 라우터의 응답이 무시됨을 의미합니다.

Traceroute 설치

tracerouteFedora 31에 이미 설치되었지만 Manjaro 18.1 및 Ubuntu 18.04에 설치해야합니다. tracerouteManjaro에 설치하려면 다음 명령을 사용하십시오.

sudo pacman -Sy traceroute

tracerouteUbuntu에 설치하려면 다음 명령을 사용하십시오.

sudo apt-get install traceroute

Traceroute 사용

위에서 다루었 듯이 traceroute's목적은 컴퓨터에서 대상까지의 각 홉에서 라우터에서 응답을 이끌어내는 것입니다. 어떤 사람들은 입술이 꽉 차서 아무것도주지 않을 수도 있고, 다른 사람들은 아마 아무런 문제없이 콩을 쏟을 것입니다.

예를 들어, traceroute유명한 블라 니 스톤이있는 아일랜드의 블라 니 성 웹 사이트를 실행합니다 . 전설에 따르면 블라 니 스톤에 키스하면 "개그의 선물"을 받게됩니다. 우리가 만나는 라우터가 적절하게 엉망이되기를 바랍니다.

다음 명령을 입력합니다.

traceroute www.blarneycastle.ie

첫 번째 줄은 다음 정보를 제공합니다.

  • 목적지 및 IP 주소.
  • traceroute 포기하기 전에 시도 할 홉 수입니다 .
  • 우리가 보내는 UDP 패킷의 크기.

다른 모든 줄에는 홉 중 하나에 대한 정보가 포함되어 있습니다. 세부 사항을 조사하기 전에 컴퓨터와 Blarney Castle 웹 사이트 사이에 11 개의 홉이 있음을 알 수 있습니다. Hop 11은 또한 우리가 목적지에 도달했음을 알려줍니다.

각 홉 라인의 형식은 다음과 같습니다.

  • 장치의 이름 또는 장치가 자신을 식별하지 않는 경우 IP 주소입니다.
  • IP 주소.
  • 세 가지 테스트 각각에 대해 왕복 소요 된 시간입니다. 여기에 별표가 있으면 해당 테스트에 대한 응답이 없음을 의미합니다. 장치가 전혀 응답하지 않으면 별표 3 개가 표시되고 장치 이름이나 IP 주소는 표시되지 않습니다.

아래에있는 내용을 검토해 보겠습니다.

  • 홉 1 : 첫 번째 통화 포트 (말장난 없음)는 로컬 네트워크의 DrayTek Vigor 라우터입니다. 이것이 우리의 UDP 패킷이 로컬 네트워크를 떠나 인터넷에 연결되는 방법입니다.
  • 홉 2 : 이 기기가 응답하지 않았습니다. ICMP 패킷을 보내지 않도록 구성되었을 수 있습니다. 또는 응답은했지만 너무 느려서  traceroute시간이 초과되었습니다.
  • 홉 3 : 장치가 응답했지만 이름이 아니라 IP 주소 만 얻었습니다. 이 줄에 별표가 있습니다. 이는 세 가지 요청 모두에 대한 응답을받지 못했음을 의미합니다. 이것은 패킷 손실을 나타낼 수 있습니다.
  • 홉 4 및 5 : 더 많은 익명 홉.
  • 홉 6 : 다른 원격 장치가 세 가지 UDP 요청을 각각 처리했기 때문에 여기에 많은 텍스트가 있습니다. 각 장치의 (다소 긴) 이름과 IP 주소가 인쇄되었습니다. 이는 많은 양의 트래픽을 처리 할 하드웨어가 많은 "풍부하게 채워진"네트워크를 만날 때 발생할 수 있습니다. 이 홉은 영국에서 가장 큰 ISP 중 하나에 속합니다. 따라서 동일한 원격 하드웨어가 세 개의 연결 요청을 처리한다면 사소한 기적이 될 것입니다.
  • 홉 7 : 이것은 ISP 네트워크를 떠날 때 UDP 패킷이 만든 홉입니다.
  • 홉 8 : 다시, 우리는 장치 이름이 아닌 IP 주소를 얻습니다. 세 가지 테스트 모두 성공적으로 반환되었습니다.
  • 홉 9 및 10 : 익명 홉이 두 개 더 있습니다.
  • 홉 11 : Blarney Castle 웹 사이트에 도착했습니다. 성은 아일랜드 코크에 있지만 IP 주소 위치 정보에 따르면 웹 사이트는 런던에 있습니다.

그래서 그것은 혼합 된 가방이었습니다. 일부 장치는 공을 들였고, 일부는 응답했지만 이름을 알려주지 않았고, 다른 장치는 완전히 익명으로 유지되었습니다.

그러나 우리는 목적지에 도착했고 11 홉 거리에 있고 여행의 왕복 시간은 13.773과 14.715 밀리 초였습니다.

장치 이름 숨기기

지금까지 살펴본 바와 같이 때때로 장치 이름을 포함하면 화면이 복잡해집니다. 데이터를 더 쉽게 볼 수 있도록 -n(매핑 없음) 옵션을 사용할 수 있습니다 .

예제에서이를 수행하기 위해 다음을 입력합니다.

traceroute -n blarneycastle.ie

이렇게하면 병목 현상을 나타낼 수있는 왕복 타이밍에 대해 큰 숫자를 쉽게 선택할 수 있습니다.

3 번 홉이 약간 용의자처럼 보이기 시작했습니다. 지난번에는 두 번만 응답했고 이번에는 한 번만 응답했습니다. 이 시나리오에서는 물론 우리가 통제 할 수 없습니다.

그러나 회사 네트워크를 조사 중이라면 해당 노드를 좀 더 깊이 파고 드는 것이 좋습니다.

traceroute 제한 시간 값 설정

기본 제한 시간 (5 초)을 연장하면 더 많은 응답을받을 수 있습니다. 이를 위해 -w(대기 시간) 옵션을 사용하여 7 초로 변경합니다. (이것은 부동 소수점 숫자입니다.)

다음 명령을 입력합니다.

traceroute -w 7.0 blarneycastle.ie

큰 차이가 없었으므로 응답 시간이 초과되었을 수 있습니다. 익명의 홉이 의도적으로 비밀 스러울 수 있습니다.

테스트 수 설정

기본적 traceroute으로 각 홉에 3 개의 UDP 패킷을 보냅니다. 우리는 사용 -q이 위 또는 아래를 조정하는 옵션 (쿼리 수).

traceroute테스트 속도를 높이기 위해 다음을 입력하여 보내는 UDP 프로브 패킷 수를 줄입니다.

traceroute -q 1 blarneycastle.ie

이것은 각 홉에 단일 프로브를 보냅니다.

초기 TTL 값 설정

TTL의 초기 값을 1이 아닌 다른 값으로 설정하고 일부 홉을 건너 뛸 수 있습니다. 일반적으로 TTL 값은 첫 번째 테스트 세트에 대해 1로 설정되고 다음 테스트 세트에 대해 2로 설정됩니다. 5로 설정하면 첫 번째 테스트에서 5 번 홉을 시도하고 1-4 번 홉을 건너 뜁니다.

Blarney Castle 웹 사이트가이 컴퓨터에서 11 홉이라는 것을 알고 있기 때문에 다음을 입력하여 바로 홉 11로 이동합니다.

traceroute -f 11 blarneycastle.ie

이는 목적지와의 연결 상태에 대한 멋지고 요약 된 보고서를 제공합니다.

배려

traceroute네트워크 라우팅을 조사하고 연결 속도를 확인하거나 병목 현상을 식별하는 데 유용한 도구입니다. Windows에는 tracert유사하게 작동 하는 명령도 있습니다.

그러나 UDP 패킷의 급류로 알려지지 않은 장치를 공격하고 싶지 않으며 traceroute스크립트 또는 무인 작업 에 포함 하는 것을 조심하십시오 .

traceroute네트워크에 가해지는로드 는 성능에 부정적인 영향을 미칠 수 있습니다. 지금 바로 해결하는 상황이 아니라면 정상적인 업무 시간 외에 사용할 수 있습니다.