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

리눅스 서버에서 목적지까지 패킷이 거쳐 가는 경로(홉)와 경로 MTU는 tracepath 명령어로 root 권한 없이 확인할 수 있습니다. traceroute가 설치되어 있지 않은 AlmaLinux 9 서버에서 홉 수를 10으로 제한해 example.com까지 경로를 확인한 결과, 넷째 홉까지 응답 시간과 경로 MTU 1500을 읽었고 그 뒤 여섯 홉에서는 응답이 오지 않았습니다.
아래 출력은 AlmaLinux 9.8 서버(root 계정)에서 실행한 결과이며, traceroute 버전과 패키지 상태는 Debian 12 서버(일반 계정)에서 확인했습니다. 첫 홉과 중간 라우터의 IPv6 주소는 문서용 예시 주소로 바꿨고, 응답 시간과 pmtu 값은 그대로 두었습니다.
1️⃣ tracepath 명령어 사용법
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 -Vtracepath from iputils 202102022️⃣ tracepath 출력 읽기
출력 한 줄은 홉 번호, 응답한 주소, 왕복 시간 순서로 이어집니다. 경로 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 옵션
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 | 버전을 출력하고 끝냄 |
| 옵션 | 복사 | 설명 |
|---|---|---|
| -4 | IPv4 주소로만 보냄 | |
| -6 | IPv6 주소로만 보냄 | |
| -p포트 | 처음 보낼 목적지 UDP 포트 지정 |
4️⃣ tracepath와 traceroute 차이
traceroute를 설치할 수 없는 서버에서는 traceroute 대신 tracepath로 경로를 확인합니다. 확인한 AlmaLinux 9.8 서버에는 traceroute 패키지가 없었고, tracepath는 iputils 패키지에 들어 있어 따로 설치하지 않고 실행했습니다.
rpm -q traceroutepackage traceroute is not installedDebian 12 서버는 반대였습니다. traceroute 2.1.2가 설치되어 있었고, tracepath가 든 iputils-tracepath 패키지는 설치되지 않은 상태였습니다.
traceroute --versionModern traceroute for Linux, version 2.1.2
Copyright (c) 2016 Dmitry Butskoy, License: GPL v2 or any laterapt-cache policy iputils-tracepathiputils-tracepath:
Installed: (none)
Candidate: 3:20221126-1+deb12u1두 서버처럼 배포판에 따라 들어 있는 명령이 다르므로, 접속한 서버에서 어느 쪽이 있는지부터 확인합니다. tracepath는 root 권한이 필요 없고, UDP 패킷을 보낼 수 있는 계정이면 실행할 수 있습니다. AlmaLinux 9.8 서버의 tracepath 실행 파일도 권한이 rwxr-xr-x였고, 따로 붙은 권한(capability)은 없었습니다.
| 항목 | tracepath | traceroute |
|---|---|---|
| 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을 직접 입력해 차이를 확인할 수 있습니다.
🔢 FAQ & 추천 콘텐츠
ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.