📚 네트워크 · 패킷 분석 › 01. TCP/IP 구조 이해 — 18편
이전 글: 17. 게이트웨이와 라우팅 기초 — 다른 네트워크로 패킷은 어떻게 가는가 · 다음 글: 19. Static Routing

1. 개념

Routing Table(라우팅 테이블) 은 "어떤 목적지로 가는 패킷을 어디로(next hop), 어느 인터페이스로 내보낼지"를 적어 둔 표입니다. 라우터뿐 아니라 일반 PC와 서버도 자기만의 라우팅 테이블을 가지고 있으며, 패킷을 보낼 때마다 이 표를 조회합니다.

라우팅이 무엇이고 패킷이 홉을 지나며 어떻게 바뀌는지는 17. 게이트웨이와 라우팅 기초 — 다른 네트워크로 패킷은 어떻게 가는가에서 다뤘습니다. 이 글은 표의 구조와 조회 규칙에 집중합니다. 라우터 장비에서의 테이블 운영은 171. Router의 Routing Table에서 다룹니다.


2. 동작 원리

라우팅 테이블의 한 줄(엔트리)은 보통 다음 항목으로 구성됩니다.

항목의미Linux ip route 표기 예
목적지(Destination)네트워크 주소 + 프리픽스10.20.0.0/16, default
Next Hop(Gateway)패킷을 넘길 다음 라우터 IPvia 192.168.10.254
출력 인터페이스패킷을 내보낼 NICdev ens160
출처(Protocol)경로가 생긴 방법proto kernel, proto static, proto dhcp
Metric같은 목적지 경로가 여럿일 때 우선순위 (작을수록 우선)metric 100
Source이 경로로 보낼 때 쓸 출발지 IPsrc 192.168.10.20

조회 규칙의 핵심은 최장 일치(Longest Prefix Match) 입니다. 목적지 IP에 해당하는 엔트리가 여러 개면 프리픽스가 가장 긴(가장 구체적인) 엔트리를 선택합니다.

[패킷 목적지] 10.20.5.7
      ↓
[일치하는 엔트리 모두 찾기]
   default (0.0.0.0/0)      → 일치 (프리픽스 0)
   10.0.0.0/8               → 일치 (프리픽스 8)
   10.20.0.0/16             → 일치 (프리픽스 16)
   192.168.10.0/24          → 불일치
      ↓
[가장 긴 프리픽스 선택] 10.20.0.0/16
      ↓
[같은 프리픽스가 여럿이면] metric이 작은 쪽 선택
      ↓
[next hop의 MAC을 ARP로 확인 후 해당 인터페이스로 전송]

일치하는 엔트리가 하나도 없고 default도 없다면 패킷은 전송되지 않고 "Network is unreachable" 오류가 발생합니다.


3. 주요 특징

엔트리가 만들어지는 방식에 따라 세 종류로 나눌 수 있습니다.

종류생성 방식예
직접 연결(Connected)인터페이스에 IP를 설정하면 자동 생성192.168.10.0/24 dev ens160 proto kernel scope link
정적(Static)관리자가 수동 입력19. Static Routing
동적(Dynamic)OSPF·BGP 등 라우팅 프로토콜로 학습주로 라우터에서 사용
  • scope link 는 next hop 없이 같은 링크에서 직접 전달한다는 뜻입니다. 직접 연결 경로에는 via가 없습니다.
  • Linux는 여러 테이블을 가질 수 있습니다. ip route가 기본으로 보여 주는 것은 main 테이블이고, local 테이블에는 자기 주소·브로드캐스트 주소가 들어 있습니다. 정책 라우팅(ip rule)을 쓰는 서버에서는 main만 봐서는 실제 경로를 알 수 없습니다.
  • 라우팅 테이블은 "가는 방향"만 결정합니다. 돌아오는 패킷은 상대편 장비의 테이블이 결정하므로, 왕복 경로가 다를 수 있습니다(비대칭 라우팅).

4. 예시

실습 예시: 본인 소유 VM에서 테이블을 조회합니다. 명령은 Rocky Linux와 Ubuntu가 같습니다.

ip route show                 # main 테이블
ip route get 203.0.113.10     # 이 목적지로는 실제로 어느 경로를 쓰는가
ip route get 192.168.10.30
ip rule show                  # 정책 라우팅 규칙 (기본은 local, main, default)

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

default via 192.168.10.1 dev ens160 proto dhcp src 192.168.10.20 metric 100
10.20.0.0/16 via 192.168.10.254 dev ens160 proto static metric 100
192.168.10.0/24 dev ens160 proto kernel scope link src 192.168.10.20 metric 100

203.0.113.10 via 192.168.10.1 dev ens160 src 192.168.10.20 uid 1000
192.168.10.30 dev ens160 src 192.168.10.20 uid 1000
  • ip route get은 최장 일치 결과를 직접 보여 주므로 테이블을 눈으로 계산하는 것보다 정확합니다.
  • 외부 주소는 via 192.168.10.1(기본 게이트웨이), 같은 서브넷 주소는 via 없이 직접 전달됩니다.

Windows에서는 route print 또는 PowerShell Get-NetRoute로 확인하며, 표기 형식은 다르지만 목적지·마스크·게이트웨이·인터페이스·메트릭 구성은 같습니다.


5. 보안 관점

  • 경로 변조: 공격자가 호스트 권한을 얻으면 특정 대역의 경로를 자신이 통제하는 next hop으로 바꿔 트래픽을 우회시킬 수 있습니다. 라우팅 테이블은 변경 권한(root/관리자)을 가진 계정만 바꿀 수 있어야 합니다.
  • 의도하지 않은 경로: VPN 클라이언트나 가상화 소프트웨어가 추가한 경로 때문에 트래픽이 방화벽을 우회하는 경로로 나갈 수 있습니다.
  • 다중 NIC 서버: 인터페이스가 여러 개인 서버는 라우팅 테이블에 따라 관리망과 서비스망이 연결되는 통로가 될 수 있으므로 경로를 최소화하는 것이 좋습니다.

6. SOC 관점

흔적이 남는 곳

  • 호스트: 현재 테이블(ip route, route print)은 시점 정보라 변경 이력이 남지 않습니다. 변경 이력은 명령 실행 기록(쉘 히스토리, 감사 로그)이나 설정 파일 변경으로 추적해야 합니다.
  • 라우터: 경로 변경 시 장비 로그에 이벤트가 남는 경우가 많습니다(199. 네트워크 장비 로그 분석에서 다룸).

관제자가 확인할 질문

  • 트래픽이 왜 이 인터페이스·게이트웨이로 나갔는가? ip route get <목적지>로 재현할 수 있는가?
  • 특정 대역에 대해 평소 없던 static 경로가 생기지 않았는가?
  • 방화벽 로그에 있어야 할 통신이 없다면, 다른 경로로 우회한 것은 아닌가?

오탐 주의

  • VPN 연결, Docker·가상화 브리지 생성 시 경로가 자동으로 추가되는 것은 정상 동작입니다.
  • 비대칭 라우팅 환경에서는 한쪽 방향 로그만 보이는 것이 정상일 수 있습니다.

7. 핵심 정리

  • 라우팅 테이블은 목적지별로 next hop·출력 인터페이스·metric을 정한 표이며, 호스트도 가지고 있습니다.
  • 여러 엔트리가 일치하면 가장 긴 프리픽스(최장 일치)를, 같으면 metric이 작은 것을 선택합니다.
  • 엔트리는 직접 연결·정적·동적 세 가지 방식으로 생깁니다.
  • ip route get <목적지>로 실제 선택되는 경로를 확인하는 것이 가장 정확합니다.
  • 테이블은 현재 시점 정보이므로 변경 추적은 명령 기록·설정 파일·장비 로그로 해야 합니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글