📚 네트워크 · 패킷 분석 › 01. TCP/IP 구조 이해 — 37편
이전 글: 36. TTL과 네트워크 경로 · 다음 글: 38. TCP란 무엇인가

1. 개념

traceroute(Windows에서는 tracert)는 목적지까지 패킷이 지나가는 라우터를 순서대로 찾아내는 진단 도구입니다. 원리는 한 문장으로 요약됩니다.

TTL을 1, 2, 3…으로 늘려 가며 보내면, TTL이 0이 되는 라우터가 차례로 ICMP Time Exceeded를 보내 오므로 그 출발지 IP를 순서대로 기록하면 경로가 된다.

TTL이 라우터마다 1씩 줄어드는 원리는 36. TTL과 네트워크 경로, Time Exceeded(Type 11)를 포함한 ICMP 메시지 체계는 34. ICMP와 ping — 오류 보고 프로토콜 읽는 법에서 다뤘습니다. 이 글은 두 가지를 조합한 도구의 동작 방식과 결과 해석에 집중합니다.

구성 요소역할
프로브(Probe)TTL을 지정해 보내는 시험 패킷 (UDP, ICMP Echo, TCP SYN 중 하나)
ICMP Time Exceeded (11/0)중간 라우터가 "여기서 TTL이 끝났다"고 알려주는 응답 → 홉 하나 확인
목적지 도달 신호방식에 따라 Port Unreachable, Echo Reply, SYN/ACK 또는 RST
RTT각 프로브의 왕복 시간 (홉마다 보통 3회 측정)

2. 동작 원리

Linux traceroute의 기본 방식(UDP)으로 203.0.113.10(문서용 예시 주소)까지 추적하는 과정입니다.

[PC 192.168.10.20]
  │
  │ TTL=1, UDP → 203.0.113.10:33434
  ↓
[R1 192.168.10.1]  TTL 1→0 폐기 ──→ ICMP 11/0 (출발지 R1)   ⇒ 1홉: 192.168.10.1
  │
  │ TTL=2, UDP → :33435 (프로브마다 포트 증가)
  ↓
[R1] 2→1 → [R2 198.51.100.1]  1→0 폐기 ──→ ICMP 11/0 (출발지 R2) ⇒ 2홉: 198.51.100.1
  │
  │ TTL=3 ...
  ↓
[R3] 응답 없음 (ICMP 생성 차단·제한) ──→ 시간 초과              ⇒ 3홉: * * *
  │
  │ TTL=4
  ↓
[목적지 203.0.113.10] 도착 → 닫힌 UDP 포트 ──→ ICMP 3/3 Port Unreachable
                                                      ⇒ 4홉: 목적지 도달, 종료
  • 각 TTL마다 기본 3개의 프로브를 보내므로 한 줄에 RTT가 3개 찍힙니다.
  • UDP 방식은 목적지에서 쓰지 않을 것으로 예상되는 높은 포트(기본 33434부터 증가)를 사용합니다. 목적지가 닫힌 포트라고 알려주면(Port Unreachable) 도착한 것으로 판단합니다.
  • 최대 홉 수(기본 30)에 도달하거나 목적지 응답을 받으면 종료합니다.

3. 주요 특징

프로브 방식에 따라 방화벽 통과 여부와 남는 흔적이 달라집니다.

방식명령 예프로브목적지 도달 신호특징
UDP (Linux 기본)traceroute -n 대상UDP, 높은 포트ICMP 3/3 Port Unreachable목적지 방화벽이 UDP를 막으면 마지막 홉이 *
ICMP Echosudo traceroute -I -n 대상ICMP Type 8Echo Reply (Type 0)Windows tracert의 방식
TCP SYNsudo traceroute -T -p 443 -n 대상TCP SYNSYN/ACK 또는 RST웹 서비스처럼 허용된 포트로 방화벽 뒤까지 확인할 때
UDP (tracepath)tracepath -n 대상UDPPort Unreachableroot 불필요, 경로 MTU(pmtu)도 표시

결과를 읽을 때 자주 헷갈리는 표시입니다.

표시의미주의
* * *대기 시간 안에 응답 없음그 홉이 없는 게 아니라 ICMP를 안 보내거나 막힌 것. 다음 홉이 보이면 경로는 정상
같은 홉에 IP가 여러 개프로브마다 다른 경로를 탐다중 경로 로드밸런싱(ECMP) 환경에서 흔함
중간 홉 RTT가 뒤 홉보다 큼그 라우터가 ICMP 생성을 낮은 우선순위로 처리그 구간이 실제로 느리다는 뜻이 아닐 수 있음
!H, !N, !X 등Host/Net Unreachable, 관리적 차단 등 ICMP 오류 수신경로상 장비가 거부함
마지막까지 *목적지 또는 그 앞 방화벽이 프로브·응답을 차단다른 방식(-I, -T)으로 교차 확인

또한 traceroute가 보여주는 것은 가는 방향 경로이며, Time Exceeded의 출발지는 대개 라우터의 들어온 쪽 인터페이스 IP입니다. 돌아오는 경로가 다를 수 있다는 점(비대칭 라우팅)과, MPLS 같은 구간은 홉이 드러나지 않을 수 있다는 점도 기억해 둡니다.


4. 예시

실습 예시 — 본인 소유 VM에서 본인이 관리하는 대상(또는 허용된 대상)으로 실행합니다.

# 설치
# Rocky Linux
sudo dnf install -y traceroute
# Ubuntu
sudo apt install -y traceroute

# 기본 UDP 방식, 이름 해석 없이(-n)
traceroute -n 203.0.113.10

# ICMP Echo 방식, TCP SYN(443) 방식 (raw 소켓이 필요해 root 권한)
sudo traceroute -I -n 203.0.113.10
sudo traceroute -T -p 443 -n 203.0.113.10

# 프로브를 캡처해 TTL 증가와 응답을 확인
sudo tcpdump -nn -v -i ens33 'icmp or (udp and dst portrange 33434-33534)'

Windows에서는 tracert -d 203.0.113.10(-d: 이름 해석 안 함)을 사용합니다.

출력 형식 예시(값은 환경마다 다름):

traceroute to 203.0.113.10 (203.0.113.10), 30 hops max, 60 byte packets
 1  192.168.10.1   0.512 ms  0.470 ms  0.455 ms
 2  198.51.100.1   3.102 ms  3.087 ms  3.210 ms
 3  * * *
 4  203.0.113.10   8.954 ms  8.901 ms  9.012 ms

해석: 1홉은 게이트웨이, 2홉은 외부 라우터, 3홉은 ICMP를 보내지 않는 라우터이며 4홉에서 목적지가 응답했습니다. 3홉이 *여도 4홉이 보이므로 경로 자체는 이어져 있습니다.

📷 [실습 화면 삽입 위치] traceroute 실행 중 tcpdump 화면 — TTL이 1, 2, 3으로 늘어나는 프로브와 time exceeded in-transit 응답


5. 보안 관점

  • traceroute 결과는 내부 구조를 드러냅니다. 외부에서 내부 대상으로 traceroute가 통과하면 방화벽 뒤의 라우터 IP, 망 구성 깊이가 노출될 수 있습니다. 그래서 경계 장비에서 외부발 Time Exceeded 생성이나 외부로 나가는 ICMP를 제한하는 정책을 두기도 합니다.
  • 정찰 단계의 경로 파악: 공격자는 대상 앞에 어떤 장비가 몇 단계 있는지 확인하기 위해 traceroute류를 사용할 수 있으며, 이는 05. 네트워크 스캔 징후 분석 영역 229. 외부망 정찰의 외부망 정찰과 연결됩니다.
  • ICMP를 전부 막는 것은 부작용이 있습니다. Time Exceeded와 Unreachable은 진단과 PMTUD에 쓰이므로, 정책은 "무엇을 어느 방향으로 허용할지" 단위로 정합니다(34. ICMP와 ping — 오류 보고 프로토콜 읽는 법 참고).

6. SOC 관점

흔적 위치확인할 수 있는 것
방화벽 로그33434~33534 범위의 UDP, TTL이 작은 프로브에 대한 ICMP Time Exceeded 송신, TCP SYN 반복
IDS/IPStraceroute 관련 시그니처(룰셋에 따라 다름), TTL이 작은 패킷의 연속
패킷 캡처같은 목적지로 TTL이 1, 2, 3…으로 증가하는 패킷 묶음

관제자가 확인할 질문

  • 출발지가 내부 운영자·모니터링 시스템인가, 외부의 알 수 없는 주소인가?
  • 외부발이라면 우리 망의 몇 번째 홉까지 Time Exceeded가 나갔는가? (구조 노출 범위)
  • 같은 출발지가 traceroute 직후 포트 스캔 등 다른 정찰을 이어갔는가?

오탐 주의: 내부 사용자의 장애 확인, 네트워크 모니터링 도구(mtr 등), CDN·서비스 사업자의 경로 측정은 정상 traceroute를 만듭니다. 33434 이상 UDP 포트 트래픽은 다른 애플리케이션도 쓸 수 있으므로 TTL 증가 패턴을 함께 확인해야 traceroute라고 판단할 수 있습니다.


7. 핵심 정리

  • traceroute는 TTL을 1씩 늘린 프로브를 보내고, 각 라우터의 ICMP Time Exceeded 출발지를 순서대로 기록해 경로를 구합니다.
  • Linux 기본은 UDP(33434부터), Windows tracert는 ICMP Echo, -T는 TCP SYN 방식이며 목적지 도달 신호가 각각 다릅니다.
  • * * *는 홉이 없다는 뜻이 아니라 응답이 없다는 뜻이며, 뒤 홉이 보이면 경로는 이어져 있습니다.
  • 결과는 가는 방향 경로만 보여주며, 다중 경로·비대칭 경로·ICMP 처리 우선순위 때문에 해석에 주의가 필요합니다.
  • 외부발 traceroute는 내부 구조 노출과 정찰의 흔적이 될 수 있으므로 출발지와 후속 행위를 함께 봅니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글