네트워크 진단은 네트워크 관리자가 직면하는 다양한 문제들을 파악하고 해결하는 데 필수적인 요소입니다. 이는 모든 네트워크 및 시스템 관리 업무에서 중요한 부분을 차지합니다.
네트워크 내 두 지점 사이에서 IP 패킷이 이동하는 경로를 파악하는 것은 숙련된 전문가에게는 매우 유용한 정보를 제공합니다.
네트워크 경로 분석 및 문제 해결을 위해 널리 사용되는 도구 중 하나가 바로 traceroute입니다. 이 도구는 다양한 플랫폼에서 사용할 수 있습니다.
traceroute는 간단히 말해, 프로브 패킷(ICMP ECHO 또는 TCP SYN)을 보내고, 그 후 ICMP “시간 초과” 응답을 수신하여 출발지부터 목적지까지의 IP 패킷 경로를 추적합니다. 이때 패킷의 TTL(Time To Live) 값은 의도적으로 1로 설정되며, ICMP “포트에 연결할 수 없음” 응답을 받을 때까지 1씩 증가합니다. 이는 패킷이 목적지 호스트에 도달했거나 최대 홉 수(기본값 30홉)에 도달했음을 의미합니다.
traceroute 실행 결과의 예시는 다음과 같습니다.
$ traceroute google.com traceroute to google.com (172.217.169.14), 30 hops max, 60 byte packets 1 140.91.200.22 (140.91.200.22) 0.129 ms 140.91.200.19 (140.91.200.19) 0.151 ms 140.91.200.77 (140.91.200.77) 0.114 ms 2 linxbgp1.iwscloud.com (195.66.226.34) 0.735 ms 0.701 ms 1.024 ms 3 195.66.224.125 (195.66.224.125) 0.603 ms 0.591 ms 0.591 ms 4 108.170.246.129 (108.170.246.129) 0.583 ms 0.745 ms 0.714 ms 5 209.85.241.95 (209.85.241.95) 1.576 ms 209.85.241.93 (209.85.241.93) 1.545 ms 209.85.241.95 (209.85.241.95) 1.520 ms 6 lhr25s26-in-f14.1e100.net (172.217.169.14) 0.584 ms 0.547 ms 0.507 ms $
위의 결과에서 볼 수 있듯이, 기본적인 traceroute 출력은 TTL(Time To Live), 각 패킷의 왕복 시간, 최대 홉 수, 패킷 크기(바이트), IP 주소, 그리고 가능한 경우 확인된 도메인 이름을 보여줍니다.
Traceroute는 응답 지연을 분석하고 두 노드 간의 라우팅 경로를 파악하는 데 매우 유용하며, 목적지에 도달하기까지 경로 상의 문제 지점을 식별하는 데 도움이 됩니다. 하지만 인터넷상의 많은 방화벽 및 라우터가 traceroute 메시지를 차단하므로, 결과가 항상 정확하지 않을 수 있다는 점을 염두에 두어야 합니다.
프로브 메시지의 유형을 변경하여 어느 정도 문제 해결이 가능하지만, 이는 일시적인 해결책에 불과할 수 있습니다. 따라서 이 도구를 사용할 때는 이러한 제약 사항을 고려해야 합니다.
traceroute의 일부 옵션은 원시 패킷 수정을 위해 루트 권한과 같은 관리자 권한이 필요할 수 있습니다.
tracepath 명령어
Red Hat Enterprise Linux (RHEL) 8 및 그 파생 Linux 배포판에는 traceroute 명령어가 기본적으로 설치되어 있지 않습니다. 이는 이전 버전의 Red Hat Linux나 CentOS에서 해당 유틸리티를 사용하던 사람들에게는 중요한 변화처럼 느껴질 수 있습니다.
하지만 RHEL 8에는 tracepath라는 명령어가 기본적으로 제공되어 있으며, traceroute와 유사한 기능을 제공합니다. 이 명령어는 시스템 설치 시 바로 사용할 수 있도록 준비되어 있습니다.
또한 tracepath는 MTU 옵션을 지원하여 네트워크를 통해 전송할 수 있는 최대 패킷 크기인 MTU(Maximum Transmission Unit) 값을 탐지할 수 있습니다.
tracepath 명령어 실행 결과 예시를 아래에서 확인할 수 있습니다.
$ tracepath 131.153.76.66 1?: [LOCALHOST] pmtu 9000 1: 140.91.200.23 0.416ms asymm 2 1: 140.91.200.23 0.239ms asymm 2 2: 140.91.200.74 0.194ms pmtu 1500 2: oracle-svc071175-lag003322.ip.twelve99-cust.net 1.344ms 3: ldn-b7-link.ip.twelve99.net 19.996ms asymm 2 4: ldn-bb1-link.ip.twelve99.net 0.803ms asymm 5 5: prs-bb1-link.ip.twelve99.net 8.548ms asymm 6 6: mei-b5-link.ip.twelve99.net 18.111ms asymm 5 7: no reply 8: phoenix-svc071932-ic358857.ip.twelve99-cust.net 179.691ms asymm 7 9: 131.153.47.139 163.358ms asymm 8 10: no reply 11: 131.153.76.66 159.071ms !H Resume: pmtu 1500 $
tracepath 기본 출력은 위에서 볼 수 있듯이 TTL(Time To Live) 또는 패킷의 왕복 시간, MTU(Maximum Transmission Unit) 값, tracepath를 통과하는 네트워크 경로 및 확인된 도메인 이름을 보여줍니다.
tracepath 사용법
tracepath 명령어의 일반적인 사용법은 다음과 같습니다.
$ tracepath <옵션> <목적지 DNS 또는 IP 주소>
#1. 별도의 옵션 없이 tracepath를 실행하면 아래와 같이 대상 경로가 표시됩니다.
$ tracepath 131.153.56.85 1?: [LOCALHOST] pmtu 9000 1: 140.91.200.77 0.226ms asymm 2 1: 140.91.200.79 0.497ms asymm 2 2: 140.91.200.74 0.216ms pmtu 1500 2: oracle-svc071174-lag003319.ip.twelve99-cust.net 0.691ms 3: slou-b1-link.ip.twelve99.net 1.249ms asymm 2 4: ldn-bb4-link.ip.twelve99.net 0.749ms asymm 3 5: nyk-bb1-link.ip.twelve99.net 80.617ms asymm 8 6: rest-bb1-link.ip.twelve99.net 153.250ms asymm 21 7: nyk-bb1-link.ip.twelve99.net 83.084ms asymm 6 8: nash-bb1-link.ip.twelve99.net 280.770ms asymm 9 9: no reply 10: dls-b23-link.ip.twelve99.net 110.820ms asymm 9 11: phx-b1-link.ip.twelve99.net 131.524ms 12: phx-b1-link.ip.twelve99.net 131.632ms asymm 11 13: giglinx-ic305413-phx-b1.ip.twelve99-cust.net 132.583ms asymm 12 14: no reply 15: giglinx-ic305414-phx-b1.ip.twelve99-cust.net 142.685ms asymm 12 16: PHOENIX-NAP.ear3.Chicago2.Level3.net 135.245ms asymm 4 17: no reply 18: no reply 19: speedchi.phoenixnap.com 133.809ms reached Resume: pmtu 1500 hops 19 back 8 $
#2. IP 주소만 출력하려면 -n 플래그를 사용할 수 있습니다.
$ tracepath -n 131.153.56.85 1?: [LOCALHOST] pmtu 1500 1: 140.91.200.74 0.393ms asymm 2 1: 140.91.200.21 0.180ms asymm 2 2: 213.248.69.255 0.576ms 3: 213.248.98.246 1.210ms asymm 2 4: 62.115.117.122 1.371ms asymm 3 5: 62.115.133.239 141.920ms asymm 20 6: 62.115.141.244 77.732ms asymm 7 7: no reply 8: 62.115.137.55 881.711ms asymm 9 9: no reply 10: 62.115.137.55 914.855ms asymm 9 11: 62.115.125.97 132.182ms 12: 62.115.125.97 131.686ms asymm 11 13: 62.115.42.6 133.132ms asymm 12 14: no reply 15: 62.115.42.10 143.880ms asymm 12 16: 4.14.13.150 134.869ms asymm 4 17: no reply 18: 4.14.13.150 145.263ms asymm 4 19: 131.153.56.85 133.636ms reached Resume: pmtu 1500 hops 19 back 8 $
#3. 호스트 이름과 IP 주소를 함께 출력하려면 -b 플래그를 사용합니다.
$ tracepath -b 131.153.56.85 1?: [LOCALHOST] pmtu 1500 1: 140.91.200.19 (140.91.200.19) 0.197ms asymm 2 1: 140.91.200.74 (140.91.200.74) 0.141ms asymm 2 2: oracle-svc071175-lag003322.ip.twelve99-cust.net (213.248.98.247) 1.186ms 3: slou-b1-link.ip.twelve99.net (213.248.98.246) 10.273ms asymm 2 4: ldn-bb4-link.ip.twelve99.net (62.115.141.246) 0.941ms asymm 3 5: prs-bb2-link.ip.twelve99.net (62.115.133.239) 141.858ms asymm 20 6: rest-bb1-link.ip.twelve99.net (62.115.141.244) 76.210ms asymm 7 7: no reply 8: rest-bb1-link.ip.twelve99.net (62.115.141.244) 89.209ms asymm 7 9: no reply 10: dls-b23-link.ip.twelve99.net (62.115.136.119) 110.335ms asymm 9 11: phx-b1-link.ip.twelve99.net (62.115.125.97) 132.091ms 12: phx-b1-link.ip.twelve99.net (62.115.125.97) 131.844ms asymm 11 13: giglinx-ic315451-phx-b1.ip.twelve99-cust.net (80.239.195.78) 142.975ms asymm 14 14: no reply 15: no reply 16: PHOENIX-NAP.ear3.Chicago2.Level3.net (4.14.13.150) 135.233ms asymm 4 17: no reply 18: no reply 19: speedchi.phoenixnap.com (131.153.56.85) 133.871ms reached Resume: pmtu 1500 hops 19 back 8 $
#4. 패킷 길이 기본값(65535) 대신 사용자 정의 값을 설정하려면 -l 플래그와 함께 원하는 값을 지정합니다.
$ tracepath -l 300 131.153.56.85 1: 140.91.200.77 0.405ms asymm 2 2: oracle-svc071174-lag003319.ip.twelve99-cust.net 0.589ms 3: slou-b1-link.ip.twelve99.net 1.448ms asymm 2 4: ldn-bb4-link.ip.twelve99.net 0.960ms asymm 3 5: nyk-bb1-link.ip.twelve99.net 81.564ms asymm 8 6: rest-bb1-link.ip.twelve99.net 78.414ms asymm 7 7: nyk-bb1-link.ip.twelve99.net 84.286ms asymm 6 8: rest-bb1-link.ip.twelve99.net 87.529ms asymm 7 9: no reply 10: dls-b23-link.ip.twelve99.net 110.534ms asymm 9 11: phx-b1-link.ip.twelve99.net 131.449ms 12: phx-b1-link.ip.twelve99.net 131.303ms asymm 11 13: giglinx-ic315451-phx-b1.ip.twelve99-cust.net 143.059ms asymm 14 14: phx-b1-link.ip.twelve99.net 142.348ms asymm 11 15: giglinx-ic--305416-phx-b1.ip.twelve99-cust.net 143.554ms asymm 12 16: PHOENIX-NAP.ear3.Chicago2.Level3.net 134.790ms asymm 4 17: no reply 18: PHOENIX-NAP.ear3.Chicago2.Level3.net 145.926ms asymm 4 19: speedchi.phoenixnap.com 133.736ms reached Resume: pmtu 300 hops 19 back 8 $
#5. -p 플래그를 사용하여 초기 대상 포트를 지정할 수 있습니다. 다음은 포트 9000을 설정한 예입니다.
$ tracepath -p 9000 131.153.56.85 1?: [LOCALHOST] pmtu 1500 1: 140.91.200.18 0.160ms asymm 2 1: 140.91.200.74 0.177ms asymm 2 2: oracle-svc071175-lag003322.ip.twelve99-cust.net 1.151ms 3: slou-b1-link.ip.twelve99.net 1.727ms asymm 2 4: no reply 5: nyk-bb1-link.ip.twelve99.net 81.357ms asymm 8 6: rest-bb1-link.ip.twelve99.net 78.325ms asymm 7 7: no reply 8: rest-bb1-link.ip.twelve99.net 87.908ms asymm 7 9: no reply 10: dls-b23-link.ip.twelve99.net 109.797ms asymm 9 11: phx-b1-link.ip.twelve99.net 132.036ms 12: dls-b23-link.ip.twelve99.net 121.404ms asymm 9 13: giglinx-ic315450-phx-b1.ip.twelve99-cust.net 136.322ms asymm 12 14: phx-b1-link.ip.twelve99.net 142.596ms asymm 11 15: no reply 16: PHOENIX-NAP.ear3.Chicago2.Level3.net 135.182ms asymm 4 17: no reply 18: no reply 19: speedchi.phoenixnap.com 133.562ms reached Resume: pmtu 1500 hops 19 back 8 $
#6. 기본적으로 30으로 설정된 최대 홉 수는 -m 플래그를 사용하여 사용자 지정할 수 있습니다.
$ tracepath -m 20 131.153.56.85 1?: [LOCALHOST] pmtu 1500 1: 140.91.200.18 0.175ms asymm 2 1: 140.91.200.77 0.169ms asymm 2 2: oracle-svc071174-lag003319.ip.twelve99-cust.net 0.669ms 3: slou-b1-link.ip.twelve99.net 2.443ms asymm 2 4: no reply 5: prs-bb2-link.ip.twelve99.net 142.778ms asymm 20 6: rest-bb1-link.ip.twelve99.net 76.756ms asymm 7 7: no reply 8: rest-bb1-link.ip.twelve99.net 89.272ms asymm 7 9: no reply 10: dls-b23-link.ip.twelve99.net 110.378ms asymm 9 11: phx-b1-link.ip.twelve99.net 132.582ms 12: phx-b1-link.ip.twelve99.net 132.135ms asymm 11 13: phx-b1-link.ip.twelve99.net 142.154ms asymm 11 14: no reply 15: giglinx-ic305414-phx-b1.ip.twelve99-cust.net 142.298ms asymm 12 16: PHOENIX-NAP.ear3.Chicago2.Level3.net 134.362ms asymm 4 17: no reply 18: no reply 19: speedchi.phoenixnap.com 133.474ms reached Resume: pmtu 1500 hops 19 back 8 $
tracepath는 고급 패킷 수정 기능을 지원하지 않으므로 traceroute와 같은 관리자 권한을 필요로 하지 않습니다.
요약
이 글에서는 traceroute 명령어의 사용법과 네트워크 관련 문제 해결 방법, 그리고 RHEL 8 시스템에서 tracepath 명령어를 사용하여 동일한 작업을 수행하는 방법을 간략하게 설명했습니다.
이러한 명령어에 대한 자세한 정보는 각 도구의 매뉴얼 페이지를 참조하십시오.
$ man traceroute $ man tracepath