traceroute 명령어: 설치와 사용법 & -n, -I, -T 옵션

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)
테스트 환경RHEL 계열AlmaLinux 9.8root 계정Debian 12 · traceroute 2.1.2 일반 계정2026-10-29 확인

목적지까지 패킷이 거쳐 가는 라우터를 한 홉씩 확인할 때는 traceroute 명령어를 사용합니다. AlmaLinux 9.8 서버에는 traceroute가 설치되어 있지 않아 dnf로 설치했고, traceroute 2.1.2가 들어 있는 Debian 12 서버에서 example.com까지 경로를 추적한 결과 일곱째 홉에서 목적지에 닿았습니다.

아래 출력은 Debian 12 서버의 일반 계정으로 실행한 결과이고, 설치 장의 rpm·dnf 출력만 AlmaLinux 9.8 서버(root 계정)에서 받았습니다. 서버 호스트 이름은 server1로, 경로에 나온 라우터·목적지 주소는 예시 주소(192.0.2.x, 198.51.100.x, 203.0.113.x)로 바꿨습니다. 설치 패키지의 릴리스 번호(주 버전 2.1은 그대로)와 dnf 메타데이터 시각도 예시 값이고, 응답 시간은 실측 그대로 두었습니다.

1️⃣ traceroute 설치

  • ↪️ RHEL 계열은 dnf, Debian 계열은 apt

traceroute는 배포판에 따라 기본 설치 여부가 다릅니다. AlmaLinux 9.8 서버에서 실행하자 [traceroute: command not found]가 나왔고, rpm으로 조회해도 설치된 패키지가 없었습니다.

rpm -q traceroute
package traceroute is not installed

RHEL 계열은 dnf로 설치합니다. 설치 전에 [--assumeno]를 붙여 미리 보자 baseos 저장소의 traceroute 패키지 하나만 설치 대상으로 나왔고, 함께 설치되는 패키지는 없었습니다.

dnf install --assumeno traceroute
Last metadata expiration check: 0:05:00 ago on Thu Oct 29 09:00:00 2026.
Dependencies resolved.
================================================================================
 Package            Architecture   Version                 Repository      Size
================================================================================
Installing:
 traceroute         x86_64         3:2.1.0-9.el9           baseos          56 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 56 k
Installed size: 107 k
Operation aborted.

내려받을 크기는 56k, 설치 뒤 크기는 107k였습니다. [--assumeno]는 모든 물음에 no로 답하는 옵션이라, 설치하지 않고 [Operation aborted.]로 끝납니다(dnf 공식 문서 기준).

실제 설치는 [--assumeno]를 뺀 [dnf install traceroute]로 진행했습니다.

dnf install traceroute
Last metadata expiration check: 0:20:00 ago on Thu Oct 29 09:00:00 2026.
Dependencies resolved.
================================================================================
 Package            Architecture   Version                 Repository      Size
================================================================================
Installing:
 traceroute         x86_64         3:2.1.0-9.el9           baseos          56 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 56 k
Installed size: 107 k
Downloading Packages:
traceroute-2.1.0-9.el9.x86_64.rpm               3.6 MB/s |  56 kB     00:00    
--------------------------------------------------------------------------------
Total                                            97 kB/s |  56 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : traceroute-3:2.1.0-9.el9.x86_64                        1/1 
  Running scriptlet: traceroute-3:2.1.0-9.el9.x86_64                        1/1 
  Verifying        : traceroute-3:2.1.0-9.el9.x86_64                        1/1 

Installed:
  traceroute-3:2.1.0-9.el9.x86_64                                               

Complete!

[Installed:] 아래에는 traceroute 패키지 하나만 나왔고, 의존성 패키지 없이 [Complete!]로 설치가 끝났습니다.

설치 뒤에는 [traceroute --version]으로 버전을 확인했습니다.

traceroute --version
Modern traceroute for Linux, version 2.1.0
Copyright (c) 2016  Dmitry Butskoy,   License: GPL v2 or any later

[command -v traceroute]로 찾은 실행 파일 경로는 [/usr/bin/traceroute]였습니다.

Debian 계열은 배포판 저장소의 traceroute 패키지를 [apt install traceroute]로 설치합니다(Debian 공식 패키지 정보 기준). 설치된 버전은 --version으로 확인합니다.

traceroute --version
Modern traceroute for Linux, version 2.1.2
Copyright (c) 2016  Dmitry Butskoy,   License: GPL v2 or any later

Debian 12 서버에는 traceroute 패키지가 이미 설치되어 있었고, 버전은 [Modern traceroute for Linux] 2.1.2로 나왔습니다.

2️⃣ traceroute 명령어 사용법

  • ↪️ 기본 꼴과 출력 줄 읽기

traceroute는 목적지 이름이나 IP 주소 하나를 받아, TTL을 1부터 하나씩 늘린 패킷을 보냅니다. TTL이 1인 패킷은 첫 라우터에서, 2인 패킷은 둘째 라우터에서 수명이 끝납니다. 그 라우터가 돌려보낸 [time exceeded] 응답으로 traceroute는 홉마다 주소와 왕복 시간을 출력합니다(공식 매뉴얼 기준).

목적지에 닿으면 목적지가 [port unreachable]로 응답해 그 홉에서 끝나고, 닿지 못하면 최대 홉 수까지 이어집니다. 공식 매뉴얼 기준으로 한 홉에 패킷을 세 번 보내 한 줄에 시간이 세 개 나오고, 확인하는 홉은 기본 30개까지입니다.

example.com에는 -n으로 주소만 출력하고, -m 10으로 열째 홉까지만 확인했습니다.

traceroute -n -m 10 example.com
traceroute to example.com (203.0.113.154), 10 hops max, 60 byte packets
 1  192.0.2.1  0.110 ms  0.083 ms  0.067 ms
 2  192.0.2.2  0.348 ms  0.273 ms  0.263 ms
 3  198.51.100.77  0.426 ms  0.337 ms 198.51.100.13  1.251 ms
 4  198.51.100.49  0.968 ms  1.264 ms 198.51.100.53  1.148 ms
 5  * * *
 6  203.0.113.19  1.631 ms 203.0.113.25  2.549 ms 203.0.113.14  1.543 ms
 7  203.0.113.154  1.544 ms  1.656 ms  1.607 ms

첫 줄에는 목적지 이름과 실제로 보낸 주소, 최대 홉 수, 패킷 크기 60바이트가 나왔습니다. 일곱째 홉에서 목적지 주소가 응답하자 열째 홉까지 가지 않고 끝났고, 실행부터 끝까지 1초가 걸리지 않았습니다.

출력뜻
traceroute to example.com (203.0.113.154)목적지 이름과, 이름을 풀어 실제로 보낸 주소
10 hops max확인할 최대 홉 수 — -m으로 정하며 기본값은 30
60 byte packets보내는 패킷 크기 — IPv4 기본 60바이트, IPv6 기본 80바이트(공식 매뉴얼 기준)
1홉 번호 — 그 패킷에 붙인 TTL 값
192.0.2.1그 홉에서 응답한 라우터의 주소
0.110 ms 0.083 ms 0.067 ms한 홉에 보낸 패킷 세 개의 왕복 시간
198.51.100.77 … 198.51.100.13같은 홉에서 패킷마다 다른 라우터가 응답해 주소가 둘 나온 줄
* * *세 패킷 모두 정해진 시간 안에 응답이 없음 — 별표 하나가 패킷 하나
!H · !N · !P · !X시간 뒤에 붙는 도달 불가 기호 — 호스트·네트워크·프로토콜 도달 불가, 관리상 금지(공식 매뉴얼 기준)

셋째와 넷째 홉은 한 줄에 주소가 둘, 여섯째 홉은 셋 나왔습니다. 한 홉에 보낸 패킷 세 개에 서로 다른 라우터가 응답하면, traceroute는 공식 매뉴얼대로 응답한 주소를 모두 이어서 출력합니다.

-n 없이 실행하면 응답한 주소를 호스트 이름으로 바꿔 출력합니다.

traceroute localhost
traceroute to localhost (127.0.0.1), 30 hops max, 60 byte packets
 1  server1 (127.0.0.1)  0.068 ms  0.048 ms  0.028 ms

localhost로 실행하자 홉 칸에 Debian 12 서버의 호스트 이름이 나왔고, 괄호 안에 주소 127.0.0.1이 붙었습니다.

3️⃣ traceroute 옵션

  • ↪️ -n, -q, -m과 보내는 방식 -I, -T

traceroute 2.1.2의 --help에는 옵션 34개가 나옵니다. 그중 출력을 바꾸는 -n, -q, -m과 보내는 패킷을 바꾸는 -I, -T를 Debian 12 서버의 일반 계정으로 실행해 보았습니다.

[traceroute -n]은 주소를 호스트 이름으로 바꾸지 않고 IP 주소만 출력합니다. 같은 localhost에 -n을 붙이자 홉 칸에 127.0.0.1만 남았습니다.

traceroute -n localhost
traceroute to localhost (127.0.0.1), 30 hops max, 60 byte packets
 1  127.0.0.1  0.073 ms  0.075 ms  0.025 ms

-q는 한 홉에 보내는 패킷 수를 정하는 옵션이며, 기본값은 3입니다. -q 1로 줄이자 시간이 하나만 나왔고, -q 5로 늘리자 다섯 개가 나왔습니다.

traceroute -q 1 -n 127.0.0.1
traceroute to 127.0.0.1 (127.0.0.1), 30 hops max, 60 byte packets
 1  127.0.0.1  0.096 ms
traceroute -q 5 -n 127.0.0.1
traceroute to 127.0.0.1 (127.0.0.1), 30 hops max, 60 byte packets
 1  127.0.0.1  0.083 ms  0.028 ms  0.024 ms  0.022 ms  0.022 ms

-m은 확인할 최대 홉 수를 바꾸는 옵션입니다. 256을 넣자 [max hops cannot be more than 255]로 거절되었습니다.

traceroute -m 256 -n 127.0.0.1
max hops cannot be more than 255

보내는 패킷은 기본이 UDP입니다. -I는 ICMP ECHO로, -T는 TCP SYN(기본 80번 포트)으로 바꿔 보냅니다. 두 옵션은 UDP가 걸러지는 경로를 다른 패킷으로 다시 확인할 때 사용합니다. 일반 계정으로 두 옵션을 실행하자 권한이 부족하다는 메시지를 남기고 종료 코드 1로 끝났습니다.

traceroute -I -n 127.0.0.1
You do not have enough privileges to use this traceroute method.
socket: Operation not permitted
traceroute -T -n 127.0.0.1
You do not have enough privileges to use this traceroute method.
socket: Operation not permitted

공식 매뉴얼은 기본 방식과 -U(목적지 포트 53 고정)를 일반 계정에 허용된 방식으로 적고 있습니다. -I는 커널 설정 ping_group_range가 그 계정의 그룹을 허용할 때만 일반 계정으로 실행됩니다.

cat /proc/sys/net/ipv4/ping_group_range
1	0

Debian 12 서버의 값은 리눅스 커널 문서 기준으로 어떤 그룹도 허용하지 않는 [1 0]이었습니다. -T는 이 설정과 상관없이 일반 계정에 허용된 방식에 들지 않으므로, 두 옵션은 root 권한이 있는 계정에서 실행합니다.

📌 주요 옵션: 이 글에서 실행한 결과

옵션하는 일이 글에서 본 결과
-n주소를 호스트 이름으로 바꾸지 않고 IP 주소만 출력localhost에 붙이자 홉 칸에 127.0.0.1만 남음
-q한 홉에 보내는 패킷 수를 정함(기본 3)-q 1은 시간 하나, -q 5는 시간 다섯 개
-m확인할 최대 홉 수를 정함(기본 30)-m 10으로 example.com 일곱째 홉에서 끝남, -m 256은 [max hops cannot be more than 255]로 거절
-I패킷을 ICMP ECHO로 보냄일반 계정에서 권한 부족 메시지와 종료 코드 1
-T패킷을 TCP SYN(기본 80번 포트)으로 보냄일반 계정에서 권한 부족 메시지와 종료 코드 1
-U목적지 포트를 53으로 고정해 UDP로 보냄example.com 일곱째 홉부터 열째 홉까지 * * *, 목적지 주소는 안 나옴

📎 그 밖의 옵션: 공식 매뉴얼 기준

옵션하는 일
-w응답을 기다리는 최대 시간을 정함(기본 5초)
-p포트를 정함(UDP는 시작 포트, TCP는 고정 목적지 포트, ICMP는 시작 순번)
-f시작할 TTL을 정함(기본 1)
-N동시에 보내는 패킷 수를 정함(기본 16, 응답 속도를 제한하는 라우터에서는 줄임)
-s보내는 쪽 주소를 서버의 다른 인터페이스 주소로 바꿈
-i패킷을 내보낼 네트워크 인터페이스를 정함(기본은 라우팅 표대로)
-4IPv4로만 보냄(이름이 IPv4와 IPv6 주소를 모두 돌려주면 기본은 IPv4)
-6IPv6로만 보냄

🔲 traceroute 명령어 시뮬레이터

아래 시뮬레이터에서 example.com 경로를 -m으로 줄여 보거나, 127.0.0.1과 localhost로 -n, -q, -f(시작 홉)와 권한이 필요한 -I, -T를 직접 입력해 볼 수 있습니다.

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

4️⃣ traceroute 응답 없는 홉

  • ↪️ * * * 줄과 방화벽

보내는 방식을 바꿀 수 있어도, 응답하지 않는 홉은 [* * *]로 남습니다. 공식 매뉴얼 기준으로 별표 하나는 정해진 시간 안에 응답이 오지 않은 패킷 하나이고, 기다리는 시간은 최대 5초입니다.

중간 홉의 * * *를 보면 그 지점에서 경로가 끊겼다고 판단하기 쉽습니다. 기본 방식으로 보낸 example.com 경로에서는 다섯째 홉만 * * *였지만, 패킷은 그 홉을 지나 여섯째 홉을 거쳐 일곱째 홉의 목적지까지 닿았습니다.

-U는 목적지 포트를 53으로 고정해 보내는 방식입니다. 같은 example.com에 -U로 패킷을 보내자 여섯째 홉에서 목적지 앞 라우터가 응답한 뒤, 일곱째 홉부터 열째 홉까지 * * *가 이어지고 목적지 주소는 나오지 않았습니다.

traceroute -U -n -m 10 example.com
traceroute to example.com (203.0.113.154), 10 hops max, 60 byte packets
 1  192.0.2.1  0.176 ms  0.096 ms  0.661 ms
 2  * * *
 3  198.51.100.13  0.622 ms  0.586 ms  0.562 ms
 4  198.51.100.49  0.898 ms  1.314 ms 198.51.100.53  1.159 ms
 5  * * *
 6  203.0.113.9  3.773 ms 203.0.113.27  3.275 ms 203.0.113.14  8.973 ms
 7  * * *
 8  * * *
 9  * * *
10  * * *

공식 매뉴얼은 -U로 보내면 목적지 쪽 프로그램이 대개 응답하지 않아 마지막 홉을 볼 수 없다고 설명합니다. 방화벽이 traceroute의 UDP 포트나 ICMP ECHO를 걸러 내는 경로에서도 그 방화벽 뒤로는 응답이 오지 않아 * * *만 이어집니다.

* * *가 나온 자리읽는 법다시 확인
중간 홉 하나그 홉에서 응답이 오지 않음 — 뒤 홉이 응답하면 패킷은 그 홉을 지나감그대로 두고 뒤 홉을 읽음
목적지 앞에서 -m까지목적지나 그 앞 방화벽이 그 패킷이나 포트를 걸러 냄(공식 매뉴얼 기준)기본 방식 · -T(root) · [-T -p 포트]
실행할 때마다 바뀌는 홉라우터가 ICMP 응답 속도를 제한하면 응답 일부가 빠질 수 있음(공식 매뉴얼 기준)[-N 1] · [-w 5]

목적지 앞에서 멈췄다면 보내는 방식을 바꿔 다시 확인합니다. 공식 매뉴얼은 -T를 방화벽을 지나도록 만든 방식으로 소개합니다. 메일 서버처럼 열린 포트가 분명한 목적지는 [-T -p 25]처럼 그 포트를 정하면, -I로 닿지 못할 때도 닿을 수 있다고 설명합니다.

중간 홉의 *는 보내는 방식이나 실행에 따라 달라지기도 합니다. 둘째 홉은 기본 방식으로 실행했을 때 응답했지만, -U로 실행했을 때는 * * *로 나왔습니다. 공식 매뉴얼은 라우터가 ICMP 응답 속도를 제한하면 응답 일부가 빠질 수 있다며 [-N 1]로 동시에 보내는 패킷 수를 줄이라고 안내합니다. traceroute는 앞서 받은 응답 시간을 보고 기다릴 시간을 줄여 잡는데, 이 때문에 *가 일찍 찍힐 때는 [-w 5]처럼 기다릴 시간 하나만 지정해 그 계산을 끕니다(공식 매뉴얼 기준).

5️⃣ traceroute 대신 tracepath

  • ↪️ 설치가 어려운 서버에서

패키지를 설치할 수 없는 서버라면 tracepath 명령어로 같은 경로를 확인합니다. AlmaLinux 9.8 서버에는 traceroute가 없었지만 tracepath는 iputils 20210202로 들어 있었습니다. 반대로 Debian 12 서버에는 tracepath가 없었습니다. tracepath 공식 매뉴얼에 따르면 tracepath는 root 권한 없이 실행되는 대신 옵션이 적고, 보내는 패킷도 UDP뿐입니다. 그래서 -I, -T로 보내는 방식을 바꾸거나 -q로 홉마다 여러 번 보내 비교해야 할 때는 traceroute를 설치해 사용합니다.

🔢 FAQ & 추천 콘텐츠

종료 코드로는 알 수 없습니다. 기본 방식으로 example.com 일곱째 홉에서 닿았을 때와 -U로 열째 홉까지 닿지 못했을 때 모두 종료 코드는 0이었습니다. 잘못된 옵션과 범위를 벗어난 -m 값, 이름 풀이 실패는 2, 일반 계정의 -I와 -T는 1로 끝났습니다. 종료 코드는 실행 오류만 구분하므로, 목적지에 닿았는지는 마지막 줄에 목적지 주소가 나왔는지로 확인합니다.

Microsoft 문서 기준으로 Windows의 tracert는 TTL을 늘려 가며 ICMP Echo Request를 보내고, 리눅스 traceroute는 기본으로 UDP 패킷을 보냅니다(공식 매뉴얼 기준). 리눅스에서 tracert와 같은 ICMP 방식으로 확인할 때는 -I를 붙입니다.

-f로 처음 보낼 TTL을 정하면 그 홉부터 출력합니다. 공식 매뉴얼 기준 기본값은 1이고, 127.0.0.1에 -f 2를 붙이자 홉 번호가 2부터 나왔습니다. -m 0처럼 최대 홉이 시작 홉보다 작으면 [first hop out of range]로 거절되었습니다.

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

답글 남기기

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

인간임을 증명하세요: 9   +   5   =