tracepath 명령어: traceroute 대신 홉과 경로 MTU 확인

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)
테스트 환경RHEL 계열AlmaLinux 9.8iputils 20210202root 계정Debian 12 · traceroute 2.1.2 일반 계정
네트워크 명령어tracepath위치/usr/bin/tracepath

리눅스 서버에서 목적지까지 패킷이 거쳐 가는 경로(홉)와 경로 MTU는 tracepath 명령어로 root 권한 없이 확인할 수 있습니다. traceroute가 설치되어 있지 않은 AlmaLinux 9 서버에서 홉 수를 10으로 제한해 example.com까지 경로를 확인한 결과, 넷째 홉까지 응답 시간과 경로 MTU 1500을 읽었고 그 뒤 여섯 홉에서는 응답이 오지 않았습니다.

아래 출력은 AlmaLinux 9.8 서버(root 계정)에서 실행한 결과이며, traceroute 버전과 패키지 상태는 Debian 12 서버(일반 계정)에서 확인했습니다. 첫 홉과 중간 라우터의 IPv6 주소는 문서용 예시 주소로 바꿨고, 응답 시간과 pmtu 값은 그대로 두었습니다.

1️⃣ tracepath 명령어 사용법

  • ↪️ 목적지까지 홉과 경로 MTU 확인

tracepath는 목적지 이름이나 IP 주소 하나를 받아 UDP 패킷을 보내고, 응답한 홉을 TTL 순서대로 한 줄씩 출력합니다. 기본 최대 홉 수는 30이며, -m으로 바꿀 수 있습니다.

example.com에는 -m 10을 붙여 열 번째 홉까지만 확인했습니다.

tracepath -n -m 10 example.com
 1?: [LOCALHOST]                        0.006ms pmtu 9001
 1:  fe80::1%eth0                                          0.077ms pmtu 1500
 1:  2001:db8:a::5b                                        2.627ms asymm  8 
 2:  2001:db8:a::52                                        1.473ms asymm 12 
 3:  2001:db8:b::1e                                       19.653ms asymm  9 
 4:  2001:db8:c::                                          3.642ms asymm 11 
 5:  no reply
 6:  no reply
 7:  no reply
 8:  no reply
 9:  no reply
10:  no reply
     Too many hops: pmtu 1500
     Resume: pmtu 1500 

이 서버는 example.com의 IPv6 주소로 패킷을 보냈고, 넷째 홉까지는 응답 시간이 나왔습니다. 다섯째 홉부터는 no reply가 이어져 열 홉 안에 목적지에 닿았다는 reached 줄이 나오지 않았고, 끝나기까지 약 18초가 걸렸습니다.

같은 목적지에 -m 없이 실행했을 때는 30초 안에 끝나지 않았습니다. 응답 없는 홉이 많은 경로는 -m으로 확인할 홉 수를 줄여 실행합니다.

설치된 tracepath의 버전은 -V로 확인하며, 이 서버의 tracepath는 iputils 20210202였습니다.

tracepath -V
tracepath from iputils 20210202

2️⃣ tracepath 출력 읽기

  • ↪️ 홉 번호, pmtu, asymm, reached

출력 한 줄은 홉 번호, 응답한 주소, 왕복 시간 순서로 이어집니다. 경로 MTU가 바뀐 지점에는 pmtu가, 가는 길과 돌아오는 길의 홉 수가 다르면 asymm이 붙습니다. 줄마다 확인하는 내용은 아래와 같습니다.

출력뜻
1?:홉 번호 칸 — 응답에서 TTL을 얻지 못해 짐작한 번호에는 ?가 붙음
[LOCALHOST]패킷이 아직 네트워크로 나가지 않은 서버 자신의 줄
0.077ms그 홉까지 왕복한 시간
pmtu 1500그 지점에서 바뀐 경로 MTU(바이트) — 바뀔 때만 붙음
asymm 8가는 길과 돌아오는 길의 홉 수 차이 — 공식 매뉴얼은 믿을 만한 값이 아니라고 설명
no reply그 TTL로 보낸 패킷에 응답이 오지 않은 홉
reached목적지에 닿은 줄
Too many hops-m으로 정한 홉 수까지 확인하고 멈춤
Resume: pmtu … hops … back …경로 전체의 MTU, 목적지까지 홉 수, 돌아오는 홉 수의 짐작값

example.com 출력에서는 첫 줄 [LOCALHOST]의 pmtu가 9001이었고, 첫 홉에서 1500으로 바뀌었습니다. TTL 1 줄이 주소만 바뀌어 두 번 나온 것도 공식 매뉴얼 예시에 있는 꼴입니다. 매뉴얼은 첫 패킷이 경로 MTU 때문에 첫 홉에서 거절되면 같은 TTL 줄이 한 번 더 나온다고 설명합니다.

목적지에 닿으면 줄 끝에 reached가 붙고, 마지막 Resume 줄에 목적지까지의 홉 수가 나옵니다. 127.0.0.1에 보내자 한 홉 만에 reached가 나왔고, Resume 줄은 [pmtu 65535 hops 1 back 1]이었습니다.

tracepath -n 127.0.0.1
 1:  127.0.0.1                                             0.047ms reached
     Resume: pmtu 65535 hops 1 back 1 

reached 없이 Too many hops로 끝난 경로는 -m으로 정한 홉 안에서 목적지 응답을 받지 못한 것입니다. example.com 경로도 열 홉까지 reached가 없어 Resume 줄에 홉 수 없이 pmtu만 남았습니다.

3️⃣ tracepath 옵션

  • ↪️ -n, -b, -m과 패킷 길이 -l

tracepath 옵션은 -4, -6, -n, -b, -l, -m, -p, -V 여덟 개뿐이고, 목적지를 빼고 실행하면 이 목록이 사용법으로 나옵니다. 옵션 없이 실행하면 응답한 주소를 이름으로 풀어 출력하며, localhost에 보내자 홉 칸에 localhost가 나왔습니다.

tracepath localhost
 1?: [LOCALHOST]                        0.003ms pmtu 65536
 1:  localhost                                             0.048ms reached
 1:  localhost                                             0.030ms reached
     Resume: pmtu 65536 hops 1 back 1 

[tracepath -n]은 이름을 풀지 않고 IP 주소만 출력합니다. 같은 localhost에 -n을 붙이자 홉 칸이 IPv6 주소 ::1로 바뀌었고, example.com 경로도 -n으로 실행해 홉 칸에는 주소만 나왔습니다.

tracepath -n localhost
 1?: [LOCALHOST]                        0.005ms pmtu 65536
 1:  ::1                                                   0.039ms reached
 1:  ::1                                                   0.010ms reached
     Resume: pmtu 65536 hops 1 back 1 

-b는 이름과 주소를 함께 출력합니다. 127.0.0.1에 -b를 붙이자 이름 뒤 괄호에 주소가 붙어 [localhost (127.0.0.1)]로 나왔습니다.

tracepath -b 127.0.0.1
 1:  localhost (127.0.0.1)                                 0.050ms reached
     Resume: pmtu 65535 hops 1 back 1 

-m은 확인할 최대 홉 수를 정하는 옵션이며, 0부터 255까지 지정할 수 있었습니다. -m 0을 붙이자 홉 줄 없이 바로 Too many hops와 Resume 줄만 나왔고, 256을 넣자 [out of range]로 거절되었습니다.

tracepath -m 0 127.0.0.1
     Too many hops: pmtu 65535
     Resume: pmtu 65535 

-l은 처음 보내는 패킷 길이이며, 기본값은 IPv4 65535바이트, IPv6 128000바이트입니다. 127.0.0.1에 -l 1500을 붙이자 Resume 줄의 pmtu가 65535에서 1500으로 바뀌었습니다.

tracepath -l 1500 -n 127.0.0.1
 1:  127.0.0.1                                             0.028ms reached
     Resume: pmtu 1500 hops 1 back 1 

-p는 처음 보낼 목적지 UDP 포트를 정하는 옵션입니다. 127.0.0.1에 -p 33434를 붙인 결과는 붙이지 않았을 때와 같았습니다.

옵션복사설명
-n이름을 풀지 않고 IP 주소만 출력
-b이름과 주소를 함께 출력
-m홉 수확인할 최대 홉 수 지정, 기본 30
-l길이처음 보내는 패킷 길이 지정, 기본 IPv4 65535, IPv6 128000
-V버전을 출력하고 끝냄
옵션복사설명
-4IPv4 주소로만 보냄
-6IPv6 주소로만 보냄
-p포트처음 보낼 목적지 UDP 포트 지정

4️⃣ tracepath와 traceroute 차이

  • ↪️ 설치, 권한, 보내는 패킷

traceroute를 설치할 수 없는 서버에서는 traceroute 대신 tracepath로 경로를 확인합니다. 확인한 AlmaLinux 9.8 서버에는 traceroute 패키지가 없었고, tracepath는 iputils 패키지에 들어 있어 따로 설치하지 않고 실행했습니다.

rpm -q traceroute
package traceroute is not installed

Debian 12 서버는 반대였습니다. traceroute 2.1.2가 설치되어 있었고, tracepath가 든 iputils-tracepath 패키지는 설치되지 않은 상태였습니다.

traceroute --version
Modern traceroute for Linux, version 2.1.2
Copyright (c) 2016  Dmitry Butskoy,   License: GPL v2 or any later
apt-cache policy iputils-tracepath
iputils-tracepath:
  Installed: (none)
  Candidate: 3:20221126-1+deb12u1

두 서버처럼 배포판에 따라 들어 있는 명령이 다르므로, 접속한 서버에서 어느 쪽이 있는지부터 확인합니다. tracepath는 root 권한이 필요 없고, UDP 패킷을 보낼 수 있는 계정이면 실행할 수 있습니다. AlmaLinux 9.8 서버의 tracepath 실행 파일도 권한이 rwxr-xr-x였고, 따로 붙은 권한(capability)은 없었습니다.

항목tracepathtraceroute
AlmaLinux 9.8 서버iputils 패키지에 들어 있어 바로 실행설치되어 있지 않음
Debian 12 서버iputils-tracepath 패키지 설치 안 됨traceroute 2.1.2 설치됨
보내는 패킷UDP기본 UDP, -I는 ICMP, -T는 TCP
홉마다 출력한 줄기본 세 번 보내 시간 세 개(-q로 바꿈)
옵션 수-4 -6 -n -b -l -m -p -V 여덟 개--help 첫 화면에만 20개 넘게

ICMP나 TCP로 경로를 보거나 홉마다 여러 번 보내 시간을 비교해야 한다면 traceroute 명령어를 설치해 사용하게 됩니다. 설치가 어렵거나 경로 MTU까지 함께 봐야 하는 서버에서는 tracepath가 맞습니다.

🔲 tracepath 명령어 시뮬레이터

아래 시뮬레이터에서 example.com 경로를 홉 수만 바꿔 다시 보거나, localhost와 127.0.0.1에 -n, -b, -m, -l을 직접 입력해 차이를 확인할 수 있습니다.

tracepath 명령어 시뮬레이터iputils 20210202
[root@server work]#
브라우저 안에서만 동작하며 실제 패킷은 보내지 않습니다. ↑↓로 앞에서 쓴 명령을 다시 불러옵니다.

🔢 FAQ & 추천 콘텐츠

종료 코드로는 알 수 없습니다. example.com에 -m 10으로 실행해 reached 없이 Too many hops로 끝났을 때도 종료 코드는 0이었습니다. 이름 풀이 실패와 잘못된 인수는 1, 목적지를 빼고 실행했을 때는 255였습니다. 종료 코드는 실행 오류만 구분하므로, 목적지에 닿았는지는 출력의 reached 줄로 확인합니다.

localhost는 IPv6 주소 ::1로 보내져 첫 줄 [LOCALHOST]에 루프백 인터페이스 MTU 65536이 나왔고, IPv4인 127.0.0.1에서는 IPv4 기본 패킷 길이 65535가 그대로 나왔습니다. ip link로 확인한 lo 인터페이스의 MTU도 65536이었습니다.

-4를 붙이면 IPv4 주소로만 보냅니다. localhost에 -4를 붙이자 [LOCALHOST] 줄 없이 IPv4로 한 홉 만에 reached가 나왔고, 반대로 127.0.0.1에 -6을 붙이자 [Address family for hostname not supported]로 끝났습니다.

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 1   +   3   =