웹사이트 검색

Traceroute 및 MTR을 사용하여 네트워크 문제를 진단하는 방법


소개

서버 관리의 중요한 부분은 네트워크 연결을 모니터링하는 것입니다.

사용하기 간단하지만 알아두면 유용한 몇 가지 도구가 있습니다. 이 가이드에서는 traceroute라는 도구를 사용하여 네트워크 문제가 발생할 수 있는 위치를 진단하는 방법에 대해 설명합니다.

또한 ping 및 traceroute의 많은 기능을 하나의 인터페이스로 결합하는 mtr라는 유틸리티도 살펴보겠습니다.

Traceroute 사용 방법

traceroute는 원격 서버에 대한 경로를 표시하는 간단한 도구입니다. 이것은 방문하려는 웹 사이트에서 로컬 네트워크의 프린터에 이르기까지 무엇이든 될 수 있습니다.

traceroute 프로그램은 거의 모든 Linux 배포판에 기본적으로 설치되므로 설치할 필요가 없습니다.

이를 호출하려면 탐색하려는 웹사이트 또는 IP 주소를 제공하기만 하면 됩니다.

  1. traceroute google.com

다음과 유사한 출력이 표시됩니다.

Output
traceroute to google.com (173.194.38.137), 30 hops max, 60 byte packets 1 192.241.160.253 (192.241.160.253) 0.564 ms 0.539 ms 0.525 ms 2 192.241.164.241 (192.241.164.241) 0.487 ms 0.435 ms 0.461 ms 3 xe-3-0-6.ar2.nyc3.us.nlayer.net (69.31.95.133) 1.801 ms 1.802 ms 1.762 ms 4 144.223.28.73 (144.223.28.73) 0.583 ms 0.562 ms 0.550 ms 5 144.232.1.21 (144.232.1.21) 1.044 ms 1.048 ms 1.036 ms 6 74.125.49.212 (74.125.49.212) 0.494 ms 0.688 ms 0.643 ms 7 209.85.248.180 (209.85.248.180) 0.650 ms 209.85.248.178 (209.85.248.178) 0.621 ms 0.625 ms 8 72.14.236.208 (72.14.236.208) 0.618 ms 72.14.236.206 (72.14.236.206) 0.898 ms 72.14.236.208 (72.14.236.208) 0.872 ms 9 72.14.239.93 (72.14.239.93) 7.478 ms 7.989 ms 7.466 ms 10 72.14.232.73 (72.14.232.73) 20.002 ms 19.969 ms 19.975 ms 11 209.85.248.228 (209.85.248.228) 30.490 ms 72.14.238.106 (72.14.238.106) 34.463 ms 209.85.248.228 (209.85.248.228) 30.707 ms 12 216.239.46.54 (216.239.46.54) 42.502 ms 42.507 ms 42.487 ms 13 216.239.46.159 (216.239.46.159) 76.578 ms 74.585 ms 74.617 ms 14 209.85.250.126 (209.85.250.126) 80.625 ms 80.584 ms 78.514 ms 15 72.14.238.131 (72.14.238.131) 80.287 ms 80.560 ms 78.842 ms 16 209.85.250.228 (209.85.250.228) 171.997 ms 173.668 ms 170.068 ms 17 66.249.94.93 (66.249.94.93) 238.133 ms 235.851 ms 235.479 ms 18 72.14.233.79 (72.14.233.79) 233.639 ms 239.147 ms 233.707 ms 19 sin04s01-in-f9.1e100.net (173.194.38.137) 236.241 ms 235.608 ms 236.843 ms

첫 번째 줄은 traceroute가 작동하는 조건을 알려줍니다.

Output
traceroute to google.com (173.194.38.137), 30 hops max, 60 byte packets

지정된 호스트, DNS가 해당 도메인에 대해 반환하는 IP 주소, 확인할 최대 홉 수 및 사용할 패킷 크기를 제공합니다.

최대 홉 수는 -m 플래그로 조정할 수 있습니다. 라우팅하려는 호스트가 30홉 이상 떨어진 경우 여기에서 더 큰 값을 지정해야 할 수 있습니다. 설정할 수 있는 최대값은 255입니다.

  1. traceroute -m 255 obiwan.scrye.net

호스트 이름 뒤에 정수를 제공하여 각 홉으로 전송되는 패킷의 크기를 조정할 수 있습니다.

  1. traceroute google.com 70

다음과 같은 출력이 표시됩니다.

Output
traceroute to google.com (173.194.38.128), 30 hops max, 70 byte packets 1 192.241.160.254 (192.241.160.254) 0.364 ms 0.330 ms 0.319 ms 2 192.241.164.237 (192.241.164.237) 0.284 ms 0.343 ms 0.321 ms

첫 번째 줄 이후의 각 줄은 "홉\ 또는 지정한 호스트가 나타내는 컴퓨터에 도달하기 위해 트래픽이 통과해야 하는 중간 호스트를 나타냅니다.

각 행의 형식은 다음과 같습니다.

Output
hop_number host_name (IP_address) packet_round_trip_times

다음은 볼 수 있는 홉의 예입니다.

Output
3 nyk-b6-link.telia.net (62.115.35.101) 0.311 ms 0.302 ms 0.293 ms

각 필드의 의미는 다음과 같습니다.

  • hop_number: 호스트가 컴퓨터에서 분리된 정도의 순차 카운트입니다. 번호가 더 높은 호스트의 트래픽은 라우팅되기 위해 더 많은 컴퓨터를 거쳐야 합니다.
  • host_name: 이 필드에는 사용 가능한 경우 호스트의 IP 주소에 대한 역방향 DNS 조회 결과가 포함됩니다. 역방향 DNS 쿼리에서 정보가 반환되지 않으면 IP 주소 자체가 제공됩니다.
  • IP_address: 이 필드에는 이 네트워크 홉의 IP 주소가 포함됩니다.
  • packet_round_trip_times: 라인의 나머지 부분은 패킷이 호스트로 왕복하고 다시 돌아오는 왕복 시간을 제공합니다. 기본적으로 세 개의 패킷이 각 호스트로 전송되고 각 시도는 줄 끝에 추가됩니다.

각 호스트에 대해 테스트되는 패킷 수를 변경하려면 다음과 같이 -q 옵션으로 숫자를 지정할 수 있습니다.

  1. traceroute -q1 google.com

역방향 DNS 조회를 건너뛰어 추적 속도를 높이려면 -n 플래그를 전달할 수 있습니다.

  1. traceroute -n google.com

다음과 같은 출력이 표시됩니다.

Output
traceroute to google.com (74.125.235.7), 30 hops max, 60 byte packets 1 192.241.160.253 0.626 ms 0.598 ms 0.588 ms 2 192.241.164.241 2.821 ms 2.743 ms 2.819 ms 3 69.31.95.133 1.470 ms 1.473 ms 1.525 ms

traceroute가 일부 별표(*)로 분해되면 호스트 경로에 문제가 있는 것입니다.

Output
... 15 209.85.248.220 (209.85.248.220) 121.809 ms 72.14.239.12 (72.14.239.12) 76.941 ms 209.85.248.220 (209.85.248.220) 78.946 ms 16 72.14.239.247 (72.14.239.247) 101.001 ms 92.478 ms 92.448 ms 17 * * 209.85.250.124 (209.85.250.124) 175.083 ms 18 * * * 19 * * *

경로 문제는 무엇을 의미합니까?

traceroute 시도가 특정 홉이나 노드에서 중지되고 호스트에 대한 경로를 찾을 수 없으면 문제가 있는 것입니다.

경로가 반환되지 않는 홉이 네트워킹 문제의 위치일 수 있지만 진단하기가 항상 쉬운 것은 아닙니다.

각 핑은 왕복 패킷을 나타내고 패킷이 종종 어느 방향으로든 다른 경로를 사용하는 상황으로 인해 완전히 다른, 아마도 더 가까운 경로에 문제가 있음을 나타낼 수 있습니다.

마지막으로 본 홉 바로 다음 홉에 문제가 있는 경우도 있습니다. 특정 홉에서 반환 경로를 얻을 수 없으면 문제의 정확한 위치를 진단하기 어렵습니다. 이것은 일반적으로 자신의 네트워크 외부에서는 불가능합니다.

MTR 사용 방법

traceroute 프로그램에 대한 동적 대안은 mtr입니다. ping과 traceroute의 기능을 결합한 mtr을 사용하면 원격 서버를 지속적으로 폴링하고 대기 시간과 성능이 시간이 지남에 따라 어떻게 변하는지 확인할 수 있습니다.

traceroute와 달리 mtr은 대부분의 시스템에 기본적으로 설치되지 않습니다. 다음 명령을 입력하여 얻을 수 있습니다.

우분투/데비안:

  1. sudo apt-get install mtr

CentOS/페도라:

  1. yum install mtr

아치:

  1. pacman -S mtr

설치되면 다음을 입력하여 호출할 수 있습니다.

  1. mtr google.com

다음과 같은 출력을 받게 됩니다.

Output
My traceroute [v0.80] traceroute (0.0.0.0) Tue Oct 22 20:39:42 2013 Resolver: Received error response 2. (server failure)er of fields q uit Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 1. 192.241.160.253 0.0% 371 0.4 0.6 0.1 14.3 1.0 2. 192.241.164.241 0.0% 371 7.4 2.5 0.1 37.5 4.8 3. xe-3-0-6.ar2.nyc3.us. 2.7% 371 3.6 2.6 1.1 5.5 1.1 4. sl-gw50-nyc-.sprintli 0.0% 371 0.7 5.0 0.1 82.3 13.1

출력이 비슷해 보일 수 있지만 traceroute에 비해 가장 큰 장점은 출력이 지속적으로 업데이트된다는 것입니다. 이를 통해 추세와 평균을 누적하고 시간 경과에 따라 네트워크 성능이 어떻게 변하는지 확인할 수 있습니다.

traceroute를 실행하면 간헐적으로 패킷이 손실되는 경로에서도 각 홉으로 보내진 패킷이 무사히 여행할 가능성이 있습니다. mtr 유틸리티를 사용하면 더 넓은 시간 범위에 걸쳐 데이터를 수집하여 이 상황을 모니터링할 수 있습니다.

--report 옵션을 사용하여 mtr을 실행할 수도 있습니다. 이 옵션은 각 홉에 10개의 패킷을 보낸 결과를 반환합니다.

  1. mtr --report google.com

보고서는 다음과 같습니다.

Output
HOST: traceroute Loss% Snt Last Avg Best Wrst StDev 1.|-- 192.241.160.254 0.0% 10 1.5 0.9 0.4 1.5 0.4 2.|-- 192.241.164.237 0.0% 10 0.6 0.9 0.4 2.7 0.7 3.|-- nyk-b6-link.telia.net 0.0% 10 0.5 0.5 0.2 0.7 0.2 4.|-- nyk-bb2-link.telia.net 0.0% 10 67.5 18.5 0.8 87.3 31.8

이것은 반드시 실시간으로 측정하고 싶지는 않지만 traceroute가 제공하는 것보다 더 넓은 범위의 데이터를 원할 때 유용할 수 있습니다.

결론

traceroutemtr을 사용하면 특정 도메인이나 주소로 가는 도중에 어떤 서버가 문제를 일으키는지 알 수 있습니다. 이는 내부 네트워크 문제를 해결할 때나 네트워크 문제가 발생할 때 회원이나 ISP를 지원하기 위해 정보를 제공하려고 할 때 유용할 수 있습니다.