"라우팅 테이블"은 네트워크에서 데이터가 목적지까지 가는 경로를 결정하는 핵심 지도다. 이 표 하나를 읽을 수 있으면, 패킷이 왜 그 경로로 이동하는지 — 막히는 원인이 어디인지 — 한눈에 파악된다. 이번 글에서는 실제 터미널 출력을 기반으로 "라우팅 테이블" 읽는 법을 처음부터 끝까지 정리한다.

 

1 라우팅 테이블이란? — 네트워크의 내비게이션 앱

운전할 때 내비게이션이 "이 도로로 가면 목적지까지 최단 시간"이라고 알려주는 것처럼, 라우터(Router)도 패킷을 받을 때마다 "이 패킷을 어디로 넘길까?"를 판단해야 한다. 그 판단의 근거가 바로 "라우팅 테이블(Routing Table)"이다.

💡 비유로 이해하기
택배 분류 창고를 상상해 보자. 창고 직원은 운송장에 적힌 우편번호를 보고, 어떤 지역행 컨베이어 벨트에 올려야 하는지 즉시 판단한다. 이때 직원 책상 위에 붙어있는 "우편번호 ↔ 컨베이어 벨트 번호 대조표"가 바로 라우팅 테이블과 동일한 역할이다. 목적지 IP 주소 → 어느 인터페이스(출구)로 내보낼지 연결하는 표인 것이다.

모든 라우터, PC, 서버, 심지어 스마트폰도 자체적인 "라우팅 테이블"을 갖고 있다. 우리가 의식하지 못할 뿐이지, 지금 이 글을 읽는 동안에도 여러분의 기기는 이 표를 참조해 데이터를 보내고 있다.

📌 핵심 포인트
라우팅 테이블은 "목적지 네트워크 → 어디로 전달할지" 의 매핑 정보를 담은 데이터베이스다. 라우터는 패킷이 도착할 때마다 이 테이블을 조회(Lookup)해서 전달 경로를 결정한다.

 

2 라우팅 테이블을 구성하는 핵심 컬럼 5가지

"라우팅 테이블"의 각 행(Row)은 하나의 경로 항목(Route Entry)을 의미한다. 컬럼 구성은 OS나 장비마다 약간씩 다르지만, 본질적인 다섯 가지 필드는 동일하다.

컬럼명 의미 예시
Destination (목적지) 패킷이 향하는 목적지 네트워크 주소 192.168.1.0
Subnet Mask / Prefix 목적지 네트워크의 범위를 나타내는 마스크 255.255.255.0 (/24)
Gateway (게이트웨이) 패킷을 넘겨줄 다음 홉(Next Hop) 주소 192.168.0.1
Interface (인터페이스) 패킷이 나가는 로컬 네트워크 출구 eth0, wlan0
Metric (메트릭) 경로 우선순위 — 낮을수록 먼저 선택 100, 200

① Destination + Subnet Mask — "어디까지를 묶는가"

192.168.1.0/24라고 적힌 항목은 192.168.1.0 부터 192.168.1.255까지 256개의 IP를 하나의 네트워크로 묶는다는 의미다. 서브넷 마스크가 길수록(예: /32) 특정 단일 호스트만을 지정하고, 짧을수록(예: /0) 더 많은 범위를 포괄한다.

② Gateway — "다음 경유지"

라우터가 직접 닿을 수 없는 원격 네트워크로 패킷을 보낼 때, 중간에 넘겨줄 다음 라우터의 IP가 게이트웨이다. 만약 목적지가 로컬 네트워크 안이라면 게이트웨이가 필요 없고 0.0.0.0 또는 on-link 로 표시된다.

③ Metric — "어떤 경로를 먼저 쓸까"

동일한 목적지로 가는 경로가 여러 개 있을 때 메트릭이 낮은 쪽이 우선순위를 갖는다. 흔히 홉 수(Hop Count), 대역폭, 지연(Latency) 등을 기반으로 계산된다.

 

3 실제 "라우팅 테이블" 예시 읽기 — 터미널 출력 해석

리눅스 서버에서 ip route show 명령을 입력하면 아래와 같은 출력이 나온다. 한 줄씩 해석해 보자.

ip route show 출력 예시 default via 192.168.0.1 dev eth0 proto dhcp metric 100 192.168.0.0/24 dev eth0 proto kernel src 192.168.0.50 metric 100 10.10.0.0/16 via 10.10.0.1 dev eth1 proto static metric 200 172.16.5.0/24 dev eth1 proto kernel src 172.16.5.10 metric 101

각 줄의 의미를 풀어보면 다음과 같다:

default via 192.168.0.1 dev eth0
목적지가 라우팅 테이블 어디에도 해당하지 않는 패킷은 기본 게이트웨이인 192.168.0.1로 보내고, 출구는 eth0 인터페이스를 사용한다. 인터넷으로 나가는 모든 트래픽이 여기를 통과한다.
  • 192.168.0.0/24 dev eth0 src 192.168.0.50
    같은 로컬 네트워크 대역(192.168.0.x)으로 향하는 패킷은 게이트웨이 없이 eth0로 직접 전달한다. src는 이 기기의 로컬 IP다.
  • 10.10.0.0/16 via 10.10.0.1 dev eth1
    10.10.x.x 대역으로 가는 패킷은 두 번째 인터페이스 eth1을 통해 10.10.0.1 라우터로 넘긴다. 예를 들어 VPN이나 사내망으로 가는 경로가 이런 형태다.
  • 172.16.5.0/24 dev eth1
    또 다른 로컬 세그먼트(172.16.5.x)로의 직접 연결 경로다. 서버가 두 개의 NIC(네트워크 카드)를 가질 때 흔히 보이는 구조다.

 

4 데이터는 어떤 순서로 경로를 결정하는가? — Longest Prefix Match

"라우팅 테이블" 조회 시 라우터는 무조건 Longest Prefix Match(최장 일치 규칙)를 따른다. 이게 핵심 원리인데, 생각보다 단순하다.

💡 비유: 주소 검색의 정밀도
우편을 보낼 때 주소를 "대한민국"이라고만 쓰면 너무 광범위하다. "대전광역시 유성구 대학로 99"라고 더 자세히 쓸수록 정확한 배달이 된다. 라우팅도 마찬가지다. /24(더 구체적)가 /16(더 광범위)보다 우선 적용된다. 즉, "가장 구체적인 경로가 이긴다."

예를 들어 패킷의 목적지 IP가 10.10.5.100일 때:

라우팅 테이블 항목 매칭 여부 Prefix 길이
0.0.0.0/0 (default) ✅ 매칭 /0 (가장 짧음)
10.0.0.0/8 ✅ 매칭 /8
10.10.0.0/16 ✅ 매칭 /16
10.10.5.0/24 ✅ 매칭 /24 ← 이게 선택됨
192.168.1.0/24 ❌ 미매칭

매칭되는 항목이 여러 개여도 Prefix가 가장 긴 것(가장 구체적인 것)이 최종 선택된다. 같은 Prefix 길이면 메트릭(Metric)이 낮은 쪽을 선택한다.

 

5 라우팅 테이블이 채워지는 3가지 방법

"라우팅 테이블"에 경로 정보가 올라가는 방법은 크게 세 가지다. 실무에서 문제가 생기면 이 세 가지 중 어디에서 꼬였는지를 확인하면 된다.

  • 직접 연결(Connected Routes)
    인터페이스에 IP를 할당하면 OS가 자동으로 해당 네트워크 대역을 테이블에 추가한다. proto kernel 또는 C로 표시된다. 네트워크 카드를 꽂고 IP를 설정하는 순간 자동 생성되는 항목이다.
  • 정적 경로(Static Routes)
    관리자가 수동으로 입력하는 경로다. ip route add 10.0.0.0/8 via 192.168.0.254 같이 명시적으로 추가한다. 변경이 없고 안정적인 네트워크 구간에 주로 쓰이며, 실수하면 아무도 자동으로 고쳐주지 않는다.
  • 동적 라우팅 프로토콜(Dynamic Routing)
    OSPF, BGP, RIP 같은 프로토콜을 사용해 라우터끼리 자동으로 경로 정보를 교환하고 테이블을 갱신한다. 대형 네트워크에서 필수적이며, 링크가 끊기면 자동으로 우회 경로를 찾는다. 인터넷의 BGP가 대표적인 예시다.
⚠️ 주의
정적 경로는 재부팅 후 사라지는 경우가 있다. 영구 적용하려면 /etc/network/interfaces 또는 NetworkManager 설정 파일에 저장해야 한다.

 

6 자주 헷갈리는 개념 — "게이트웨이" vs "인터페이스"

네트워크를 처음 공부할 때 가장 많이 혼동하는 부분이 바로 게이트웨이와 인터페이스의 차이다.

개념 의미 예시
게이트웨이 (Gateway) 패킷을 넘겨줄 외부 라우터의 IP 192.168.0.1
인터페이스 (Interface) 패킷이 나가는 로컬 네트워크 출구 (NIC) eth0, wlan0, lo
💡 비유로 정리
집에서 공항(게이트웨이)으로 가는 과정을 생각해 보자. 인터페이스는 내가 나가는 "집의 문"이고, 게이트웨이는 "공항의 실제 위치(IP 주소)"다. 문을 나서는 것(인터페이스)과 어디로 가는지(게이트웨이)는 다른 개념이다. 직접 연결된 로컬 네트워크라면 문(인터페이스)만 나서면 바로 도착하기 때문에 게이트웨이가 필요 없다.

 

7 실무에서 "라우팅 테이블" 확인하는 명령어 모음

OS별로 라우팅 테이블 확인 명령어가 다르다. 실무에서 자주 쓰는 것들만 정리했다.

# ── Linux (현대 방식, 권장) ── ip route show ip route show table all # 전체 라우팅 테이블 확인 # ── Linux (구형 방식) ── route -n # -n 옵션: DNS 역조회 없이 빠르게 출력 netstat -rn # ── Windows ── route print netstat -r # ── macOS ── netstat -rn route -n get 8.8.8.8 # 특정 IP 라우팅 경로 확인 # ── 정적 경로 추가/삭제 (Linux) ── ip route add 10.10.0.0/24 via 192.168.0.1 dev eth0 ip route del 10.10.0.0/24
📌 실무 팁
특정 목적지까지의 경로가 확실하지 않을 때는 ip route get 8.8.8.8 처럼 목적지 IP를 지정하면 실제로 선택될 경로 단 하나만 깔끔하게 출력된다. 트러블슈팅에 매우 유용하다.

 

8 정리 — 핵심만 뽑아서 5줄 요약

여기까지 읽었다면 "라우팅 테이블"이 왜 존재하고, 어떤 구조로 되어 있으며, 데이터가 어떻게 경로를 결정하는지 충분히 이해했을 것이다.

  • 라우팅 테이블은 "목적지 IP → 어디로 전달" 의 지도 역할을 한다.
  • 핵심 컬럼은 목적지, 서브넷 마스크, 게이트웨이, 인터페이스, 메트릭 5가지다.
  • 경로 선택 원칙은 Longest Prefix Match — 가장 구체적인(긴) 경로가 우선이다.
  • 경로가 채워지는 방법은 직접 연결 / 정적 경로 / 동적 라우팅 프로토콜 세 가지다.
  • 리눅스 기준 ip route show, 특정 경로 추적은 ip route get [IP]로 확인한다.

네트워크 공부를 하다 보면 "패킷이 왜 이 경로로 가지?" 싶은 순간이 반드시 온다. 그때 라우팅 테이블을 펼쳐보면 대부분 답이 거기 있다. OSPF나 BGP 같은 동적 라우팅 프로토콜은 각각 별도 포스팅으로 다룰 예정이다.


 
📚 참고 출처 / 학습 경로