신규 사내망 대역으로 가는 트래픽만 실패합니다. 인터넷은 되고 같은 서브넷도 되지만, 특정 대역으로 가는 경로가 라우팅 테이블에 없습니다.
게이트웨이와 정적 라우팅을 읽을 수 있어야 "어디로 보내야 하는지"를 서버에 알려줄 수 있습니다.
게이트웨이와 정적 라우팅
네트워크에서 패킷이 목적지까지 어떤 경로로 이동할지를 결정하는 것이 **라우팅(Routing)**입니다. 이 챕터에서는 라우터와 게이트웨이의 역할을 이해하고, 리눅스 ip route 명령어로 라우팅 테이블을 읽고 직접 정적 경로를 추가하는 방법을 실습합니다.
- 1라우터의 패킷 전달 원리와 라우팅 테이블 구조
- 2디폴트 게이트웨이(0.0.0.0/0)의 역할과 설정 방법
- 3ip route 명령어로 정적 경로 추가·삭제·검증
- 4RHEL/Ubuntu 환경별 영구 경로 설정 방법(nmcli, Netplan)
- 5NIC 2개 환경에서 발생하는 비대칭 라우팅 문제 진단
- 6정책 기반 라우팅(Policy-based Routing)으로 비대칭 라우팅 해결
ip route showip addr showtraceroute --version 2>&1 | head -1 || sudo apt-get install -y traceroutesudo ip route show table all | head -5라우터의 역할과 패킷 전달 원리
서버를 배포하고 서비스가 잘 올라왔는데 외부에서 전혀 접근이 안 될 때가 있습니다. 포트는 열려 있고, 방화벽 규칙도 문제없고, 프로세스도 정상인데 패킷이 서버까지 도달하지 못합니다. ip route를 보면 게이트웨이가 없거나 잘못된 네트워크 인터페이스로 경로가 잡혀 있는 경우가 많습니다. 라우터가 패킷을 어떻게 전달하는지 이해하지 못하면, 이런 네트워크 단절 상황에서 몇 시간을 낭비하게 됩니다.

라우터는 무엇을 하는가
**라우터(Router)**는 서로 다른 네트워크 사이에서 패킷을 전달하는 장비입니다. 호스트가 패킷을 보낼 때, 목적지 IP 주소가 자신과 같은 서브넷인지 아닌지를 먼저 판단합니다.
- 같은 서브넷: ARP로 목적지 MAC 주소를 찾아 직접 전송
- 다른 서브넷: 라우터(게이트웨이)에게 패킷을 위임
라우터는 여러 개의 네트워크 인터페이스를 가지고, 각 인터페이스가 서로 다른 네트워크에 연결됩니다. 패킷이 들어오면 **라우팅 테이블(Routing Table)**을 조회하여 어느 인터페이스로 내보낼지 결정합니다.
[서버 A: 192.168.1.10]
|
[스위치 - 192.168.1.0/24 네트워크]
|
[라우터 eth0: 192.168.1.1] ←── 게이트웨이 역할
[라우터 eth1: 10.0.0.1 ] ←── 외부 네트워크 연결
|
[인터넷 / 다른 서브넷]
서버 A(192.168.1.10)가 8.8.8.8로 패킷을 보낼 때의 흐름:
- 8.8.8.8은 192.168.1.0/24 서브넷이 아님을 판단
- 게이트웨이 192.168.1.1(라우터 eth0)로 패킷 전송
- 라우터가 자신의 라우팅 테이블을 보고 eth1로 패킷을 전달
- 패킷이 인터넷으로 나감
라우팅 테이블 구조
리눅스에서 ip route 명령으로 라우팅 테이블을 확인합니다:
# 실습 디렉토리 준비
mkdir -p /tmp/networking/part1/exam_3 && cd /tmp/networking/part1/exam_3
$ ip route
default via 192.168.1.1 dev eth0 proto dhcp metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10 metric 100
- 핵심 출력—명령 결과에서 성공/실패를 가르는 값을 먼저 확인합니다
- 대상 식별—IP, 포트, 인터페이스, 프로세스명처럼 다음 조치를 결정하는 필드를 봅니다
- 다음 분기—결과가 기대와 다르면 어느 계층을 이어서 점검할지 정합니다
각 필드의 의미:
| 필드 | 의미 |
|---|---|
default | 목적지 0.0.0.0/0 — 다른 경로가 없을 때 사용 |
via 192.168.1.1 | 다음 홉(Next Hop) 게이트웨이 주소 |
dev eth0 | 패킷을 보낼 네트워크 인터페이스 |
proto dhcp | 이 경로가 DHCP로 설정되었음 |
metric 100 | 경로 우선순위 (낮을수록 우선) |
scope link | 직접 연결된 네트워크 (게이트웨이 불필요) |
라우팅 결정 우선순위
라우터는 가장 구체적인(Longest Prefix Match) 경로를 선택합니다:
목적지: 10.0.1.50
라우팅 테이블:
10.0.0.0/8 via 192.168.1.2 ← 매칭
10.0.1.0/24 via 192.168.1.3 ← 더 구체적 → 이 경로 선택
default via 192.168.1.1
/24가 /8보다 더 구체적이므로 10.0.1.0/24 경로가 선택됩니다.
디폴트 게이트웨이와 정적 경로 설정
클라우드 인스턴스를 재시작했더니 어제까지 되던 특정 외부 IP로의 통신이 갑자기 안 됩니다. ping은 되는데 특정 서브넷만 막힙니다. 원인은 재시작 후 임시로 추가한 정적 경로가 사라진 것이었습니다. 디폴트 게이트웨이와 정적 경로의 차이, 영구 설정 방법을 모르면 재부팅마다 경로 설정을 다시 해야 하는 상황이 반복됩니다.

디폴트 게이트웨이란
**디폴트 게이트웨이(Default Gateway)**는 라우팅 테이블에 일치하는 경로가 없을 때 패킷을 전달하는 마지막 수단입니다. ip route 출력에서 default via [IP]로 표시됩니다.
DHCP 환경에서는 자동으로 설정되지만, 정적 IP를 사용하는 서버라면 반드시 수동으로 설정해야 합니다. 디폴트 게이트웨이가 없으면 로컬 서브넷 외부와 통신이 불가능합니다.
이 명령은 서버의 라우팅 또는 인터페이스 설정을 바꿔 원격 접속이 끊길 수 있습니다. 콘솔 접근과 현재 라우팅 백업을 확보한 뒤 실행하세요.
# 디폴트 게이트웨이 확인
$ ip route show default
default via 10.0.0.1 dev eth0 proto static
# 디폴트 게이트웨이 임시 추가
$ ip route add default via 10.0.0.1 dev eth0
# 디폴트 게이트웨이 삭제
$ ip route del default via 10.0.0.1
정적 경로(Static Route) 추가
특정 서브넷으로 가는 패킷을 다른 게이트웨이로 보내야 할 때 정적 경로를 추가합니다. 대표적인 사례:
- 사내 전용 서브넷(172.16.0.0/12)은 사내망 라우터를 통해
- 인터넷 트래픽은 기본 게이트웨이를 통해
이 명령은 서버의 라우팅 또는 인터페이스 설정을 바꿔 원격 접속이 끊길 수 있습니다. 콘솔 접근과 현재 라우팅 백업을 확보한 뒤 실행하세요.
# 정적 경로 추가 (임시 — 재부팅 시 사라짐)
$ ip route add 172.16.0.0/16 via 10.0.0.254 dev eth0
# 경로 확인
$ ip route
default via 10.0.0.1 dev eth0
10.0.0.0/24 dev eth0 proto kernel scope link
172.16.0.0/16 via 10.0.0.254 dev eth0 ← 추가된 정적 경로
# 특정 목적지로의 경로 확인
$ ip route get 172.16.5.10
172.16.5.10 via 10.0.0.254 dev eth0 src 10.0.0.5
# 정적 경로 삭제
$ ip route del 172.16.0.0/16 via 10.0.0.254
영구 경로 설정 방법
Linux 배포판별 정적 라우팅 영구 적용 가이드 (Debian /etc/network/interfaces 등)
서버가 재부팅되면 터미널에 입력한 ip route add 정적 경로는 모두 초기화됩니다. 실무 SRE는 서버 재시작 후에도 설정이 유지되도록 다음과 같이 네트워크 설정 파일에 라우팅 경로를 명시해야 합니다.
- Debian/Ubuntu 계열 (Legacy
/etc/network/interfaces환경): 설정 파일 맨 아래에up route add지시어를 추가하여 네트워크 인터페이스가 Up 상태가 될 때 커맨드가 자동 기동되도록 구성합니다.로컬 터미널auto eth0 iface eth0 inet static address 192.168.1.10 netmask 255.255.255.0 # 인터페이스 활성화 시 정적 경로 자동 결합 up ip route add 10.0.0.0/8 via 192.168.1.1 dev eth0 - 현대적 Netplan 환경 (Ubuntu 18.04+):
/etc/netplan/*.yaml파일을 열어routes레이아웃에 직접 정적 게이트웨이를 선언합니다.
Linux 배포판별 정적 라우팅 영구 적용 가이드 (Debian /etc/network/interfaces 등)
서버가 재부팅되면 터미널에 입력한 ip route add 정적 경로는 모두 초기화됩니다. 실무 SRE는 서버 재시작 후에도 설정이 유지되도록 다음과 같이 네트워크 설정 파일에 라우팅 경로를 명시해야 합니다.
- Debian/Ubuntu 계열 (Legacy
/etc/network/interfaces환경): 설정 파일 맨 아래에up route add지시어를 추가하여 네트워크 인터페이스가 Up 상태가 될 때 커맨드가 자동 기동되도록 구성합니다.로컬 터미널auto eth0 iface eth0 inet static address 192.168.1.10 netmask 255.255.255.0 # 인터페이스 활성화 시 정적 경로 자동 결합 up ip route add 10.0.0.0/8 via 192.168.1.1 dev eth0 - 현대적 Netplan 환경 (Ubuntu 18.04+):
/etc/netplan/*.yaml파일을 열어routes레이아웃에 직접 정적 게이트웨이를 선언합니다.
Linux 배포판별 정적 라우팅 영구 적용 가이드 (Debian /etc/network/interfaces 등)
서버가 재부팅되면 터미널에 입력한 ip route add 정적 경로는 모두 초기화됩니다. 실무 SRE는 서버 재시작 후에도 설정이 유지되도록 다음과 같이 네트워크 설정 파일에 라우팅 경로를 명시해야 합니다.
- Debian/Ubuntu 계열 (Legacy
/etc/network/interfaces환경): 설정 파일 맨 아래에up route add지시어를 추가하여 네트워크 인터페이스가 Up 상태가 될 때 커맨드가 자동 기동되도록 구성합니다.로컬 터미널auto eth0 iface eth0 inet static address 192.168.1.10 netmask 255.255.255.0 # 인터페이스 활성화 시 정적 경로 자동 결합 up ip route add 10.0.0.0/8 via 192.168.1.1 dev eth0 - 현대적 Netplan 환경 (Ubuntu 18.04+):
/etc/netplan/*.yaml파일을 열어routes레이아웃에 직접 정적 게이트웨이를 선언합니다.
RHEL/CentOS (NetworkManager 방식)
이 명령은 서버의 라우팅 또는 인터페이스 설정을 바꿔 원격 접속이 끊길 수 있습니다. 콘솔 접근과 현재 라우팅 백업을 확보한 뒤 실행하세요.
# nmcli로 영구 경로 추가
$ nmcli connection modify eth0 +ipv4.routes "172.16.0.0/16 10.0.0.254"
$ nmcli connection up eth0
# 또는 파일 직접 편집
$ cat /etc/sysconfig/network-scripts/route-eth0
172.16.0.0/16 via 10.0.0.254 dev eth0
Ubuntu/Debian (Netplan 방식)
# /etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
eth0:
addresses: [10.0.0.5/24]
gateway4: 10.0.0.1
routes:
- to: 172.16.0.0/16
via: 10.0.0.254
# Netplan 적용
$ netplan apply
NIC 2개 서버의 비대칭 라우팅 문제
서버에 NIC가 2개 있을 때(예: 서비스용 eth0 + 관리용 eth1) 단일 디폴트 게이트웨이만 설정하면 **비대칭 라우팅(Asymmetric Routing)**이 발생합니다.
[클라이언트]
|
→ eth1(10.0.2.10)으로 패킷 수신
← 응답이 eth0(10.0.1.10)의 게이트웨이로 나감 ← 문제!
이 문제는 방화벽 상태 추적(stateful inspection)을 깨뜨려 연결 거부나 불안정한 통신을 유발합니다.
해결책: Policy-based Routing (정책 기반 라우팅) — 출처 IP별로 다른 라우팅 테이블을 적용합니다.
이 명령은 서버의 라우팅 또는 인터페이스 설정을 바꿔 원격 접속이 끊길 수 있습니다. 콘솔 접근과 현재 라우팅 백업을 확보한 뒤 실행하세요.
# eth1용 별도 라우팅 테이블 생성
$ echo "200 eth1-table" >> /etc/iproute2/rt_tables
# eth1 테이블에 게이트웨이 추가
$ ip route add default via 10.0.2.1 dev eth1 table eth1-table
# eth1로 들어온 패킷은 eth1-table 사용 규칙
$ ip rule add from 10.0.2.10 lookup eth1-table
목표
ip route 명령어로 현재 서버의 라우팅 테이블을 읽고, 각 항목의 의미를 파악합니다.
실습 환경
- 리눅스 서버 (Ubuntu 20.04 이상 또는 CentOS/RHEL 7 이상)
- root 또는 sudo 권한
단계별 실습
1단계: 라우팅 테이블 전체 출력
$ ip route
예상 출력:
default via 10.0.0.1 dev eth0 proto dhcp src 10.0.0.5 metric 100
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.5 metric 100
각 줄을 읽는 방법:
default via 10.0.0.1 dev eth0: 목적지를 모르면 10.0.0.1로 보내고, eth0을 사용한다10.0.0.0/24 dev eth0 ... scope link: 10.0.0.0/24는 eth0에 직접 연결된 네트워크다
2단계: 특정 목적지 경로 추적
# 8.8.8.8로 가는 경로 확인
$ ip route get 8.8.8.8
# 출력 예시:
# 8.8.8.8 via 10.0.0.1 dev eth0 src 10.0.0.5 uid 0
# 같은 서브넷 내 호스트 경로
$ ip route get 10.0.0.20
# 출력 예시:
# 10.0.0.20 dev eth0 src 10.0.0.5 uid 0
# ← via가 없음 = 직접 연결
3단계: 라우팅 테이블 상세 보기
# 모든 라우팅 테이블 보기
$ ip route show table all
# 캐시된 경로 보기 (커널 3.x 이하에서만)
$ ip route show cache
4단계: 인터페이스별 라우팅 확인
$ ip route show dev eth0
확인 포인트
default via항목이 존재하는가?- 로컬 서브넷은
scope link로 표시되는가? metric값이 낮은 경로가 우선 선택되는가?
목표
ip route add 명령어로 특정 서브넷에 대한 정적 경로를 추가하고, 통신이 올바른 경로로 이루어지는지 확인합니다.
시나리오
사내 개발 서브넷 192.168.100.0/24는 별도의 게이트웨이 10.0.0.254를 통해야만 접근할 수 있습니다. 현재 이 서브넷으로 통신이 안 됩니다.
단계별 실습
1단계: 현재 상태 확인
# 192.168.100.1로 ping 시도 (실패 예상)
$ ping -c 2 192.168.100.1
# connect: Network is unreachable 또는 응답 없음
# 현재 라우팅 테이블 확인
$ ip route
default via 10.0.0.1 dev eth0
10.0.0.0/24 dev eth0 proto kernel scope link
2단계: 정적 경로 추가
이 명령은 서버의 라우팅 또는 인터페이스 설정을 바꿔 원격 접속이 끊길 수 있습니다. 콘솔 접근과 현재 라우팅 백업을 확보한 뒤 실행하세요.
# 192.168.100.0/24 서브넷으로 가는 경로를 10.0.0.254 게이트웨이로 설정
$ sudo ip route add 192.168.100.0/24 via 10.0.0.254 dev eth0
# 추가 확인
$ ip route
default via 10.0.0.1 dev eth0
10.0.0.0/24 dev eth0 proto kernel scope link
192.168.100.0/24 via 10.0.0.254 dev eth0 ← 새로 추가됨
3단계: 경로 적용 검증
# ip route get으로 경로 확인
$ ip route get 192.168.100.50
# 192.168.100.50 via 10.0.0.254 dev eth0 src 10.0.0.5
# 실제 통신 테스트
$ ping -c 4 192.168.100.1
# traceroute로 경유 경로 확인
$ traceroute 192.168.100.1
4단계: 영구 설정 (Ubuntu Netplan)
$ sudo nano /etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses: [10.0.0.5/24]
gateway4: 10.0.0.1
routes:
- to: 192.168.100.0/24
via: 10.0.0.254
nameservers:
addresses: [8.8.8.8]
$ sudo netplan apply
5단계: 경로 롤백
이 명령은 서버의 라우팅 또는 인터페이스 설정을 바꿔 원격 접속이 끊길 수 있습니다. 콘솔 접근과 현재 라우팅 백업을 확보한 뒤 실행하세요.
# 테스트용 임시 경로 삭제
$ sudo ip route del 192.168.100.0/24 via 10.0.0.254
목표
NIC가 2개인 서버에서 비대칭 라우팅 문제를 인식하고, 정책 기반 라우팅으로 해결하는 방법을 이해합니다.
시나리오
서버에 두 NIC가 있습니다:
- eth0: 10.0.1.10/24, 게이트웨이 10.0.1.1 (서비스 트래픽)
- eth1: 10.0.2.10/24, 게이트웨이 10.0.2.1 (관리 트래픽)
현재 eth0의 게이트웨이만 디폴트로 설정되어 있어, eth1로 들어온 관리 SSH 트래픽 응답이 eth0으로 나가는 비대칭 라우팅이 발생합니다.
단계별 실습
1단계: 현재 상태 진단
# 인터페이스 상태 확인
$ ip addr
# eth0: 10.0.1.10/24
# eth1: 10.0.2.10/24
# 라우팅 테이블 확인
$ ip route
default via 10.0.1.1 dev eth0 ← eth1 트래픽도 eth0으로 나감!
10.0.1.0/24 dev eth0 proto kernel scope link
10.0.2.0/24 dev eth1 proto kernel scope link
2단계: 정책 기반 라우팅 테이블 생성
이 명령은 서버의 라우팅 또는 인터페이스 설정을 바꿔 원격 접속이 끊길 수 있습니다. 콘솔 접근과 현재 라우팅 백업을 확보한 뒤 실행하세요.
# rt_tables에 새 테이블 등록
$ echo "200 mgmt" | sudo tee -a /etc/iproute2/rt_tables
# mgmt 테이블에 eth1 기본 경로 추가
$ sudo ip route add default via 10.0.2.1 dev eth1 table mgmt
# eth1 서브넷도 mgmt 테이블에 추가
$ sudo ip route add 10.0.2.0/24 dev eth1 src 10.0.2.10 table mgmt
3단계: 라우팅 규칙 적용
# eth1 IP(10.0.2.10)에서 출발한 패킷은 mgmt 테이블 사용
$ sudo ip rule add from 10.0.2.10/32 table mgmt priority 100
# 규칙 확인
$ ip rule show
0: from all lookup local
100: from 10.0.2.10 lookup mgmt ← 추가됨
32766: from all lookup main
32767: from all lookup default
4단계: 검증
# eth1로 들어오는 트래픽 응답 경로 확인
$ ip route get 10.0.2.50 from 10.0.2.10
# 10.0.2.50 from 10.0.2.10 dev eth1 table mgmt src 10.0.2.10
# eth0 트래픽은 여전히 main 테이블 사용
$ ip route get 8.8.8.8
# 8.8.8.8 via 10.0.1.1 dev eth0 src 10.0.1.10
증상
이 명령은 서버의 라우팅 또는 인터페이스 설정을 바꿔 원격 접속이 끊길 수 있습니다. 콘솔 접근과 현재 라우팅 백업을 확보한 뒤 실행하세요.
$ sudo ip route add 172.16.0.0/16 via 10.0.0.254
# 정상 작동
# 서버 재부팅 후...
$ ip route
default via 10.0.0.1 dev eth0
10.0.0.0/24 dev eth0 proto kernel scope link
# ← 172.16.0.0/16 경로가 사라짐!
원인
ip route add는 런타임 명령으로 커널 메모리에만 적용됩니다. 재부팅하면 네트워크 설정이 설정 파일에서 다시 읽히므로 임시 경로는 모두 사라집니다.
해결 방법
운영체제별 영구 설정 방법:
RHEL/CentOS 7 (network-scripts)
이 명령은 실행 중인 서비스 상태를 바꿔 순간적인 중단이나 설정 반영 실패를 만들 수 있습니다. 운영 트래픽 영향과 재시작 후 확인 명령을 먼저 준비하세요.
$ sudo vi /etc/sysconfig/network-scripts/route-eth0
# 내용 추가:
172.16.0.0/16 via 10.0.0.254 dev eth0
$ sudo systemctl restart network
RHEL/CentOS 8+ / Fedora (NetworkManager)
이 명령은 서버의 라우팅 또는 인터페이스 설정을 바꿔 원격 접속이 끊길 수 있습니다. 콘솔 접근과 현재 라우팅 백업을 확보한 뒤 실행하세요.
$ sudo nmcli connection modify "Wired connection 1" \
+ipv4.routes "172.16.0.0/16 10.0.0.254"
$ sudo nmcli connection up "Wired connection 1"
# 확인
$ nmcli connection show "Wired connection 1" | grep ipv4.routes
Ubuntu (Netplan)
$ sudo vi /etc/netplan/01-netcfg.yaml
# routes 섹션 추가 후:
$ sudo netplan apply
임시 방편: rc.local
이 명령은 서버의 라우팅 또는 인터페이스 설정을 바꿔 원격 접속이 끊길 수 있습니다. 콘솔 접근과 현재 라우팅 백업을 확보한 뒤 실행하세요.
$ sudo vi /etc/rc.local
# 재부팅 시 자동 실행 스크립트 추가:
ip route add 172.16.0.0/16 via 10.0.0.254 dev eth0
예방 방법
인프라에서 네트워크 변경 시 항상 영구 설정과 임시 명령을 함께 적용하고, 적용 후 ip route 출력을 문서화해 두는 습관을 들이세요.
증상
$ ip route
default via 192.168.1.1 dev eth0
$ ping 8.8.8.8
# Request timeout — 응답 없음
$ ping 192.168.1.1
# PING 192.168.1.1: 56 bytes of data
# Request timeout
원인 체크리스트
1. 게이트웨이 자체가 살아있는지 확인
# ARP로 게이트웨이 MAC 확인
$ arping -I eth0 -c 3 192.168.1.1
# ARP 테이블 확인
$ arp -n
# 192.168.1.1 항목이 없거나 FAILED이면 물리적 연결 문제
2. 게이트웨이 주소가 올바른지 확인
이 명령은 서버의 라우팅 또는 인터페이스 설정을 바꿔 원격 접속이 끊길 수 있습니다. 콘솔 접근과 현재 라우팅 백업을 확보한 뒤 실행하세요.
# 잘못된 케이스: 게이트웨이가 다른 서브넷에 있음
$ ip addr show eth0
# inet 10.0.0.5/24
$ ip route show default
# default via 192.168.1.1 dev eth0 ← 192.168.1.1은 10.0.0.0/24 서브넷에 없음!
# 수정
$ sudo ip route del default
$ sudo ip route add default via 10.0.0.1 dev eth0
3. 인터페이스가 UP 상태인지 확인
$ ip link show eth0
# 2: eth0: <BROADCAST,MULTICAST> mtu 1500 ← UP이 없으면 문제!
# UP 상태로 변경
$ sudo ip link set eth0 up
4. NAT/방화벽 문제
# 게이트웨이(라우터)에서 NAT 설정 확인
$ sudo iptables -t nat -L POSTROUTING
# 나가는 트래픽 허용 여부
$ sudo iptables -L FORWARD
진단 순서
게이트웨이 ping 실패
↓
ARP 응답 확인 → 없으면 물리/스위치 문제
↓
ARP 성공인데 ping 실패 → 게이트웨이 ICMP 차단 (보안그룹 확인)
↓
게이트웨이 ping 성공인데 외부 ping 실패 → NAT/라우팅 설정 확인
온콜 엔지니어의 하루
새벽 2시, 모니터링 알림이 울립니다. 특정 서비스 노드들이 데이터베이스 서버에 접속 불가 상태입니다. SSH로 접속해 빠르게 진단합니다.
이 명령은 서버의 라우팅 또는 인터페이스 설정을 바꿔 원격 접속이 끊길 수 있습니다. 콘솔 접근과 현재 라우팅 백업을 확보한 뒤 실행하세요.
# 데이터베이스 서버(172.16.5.10)로 ping
$ ping -c 3 172.16.5.10
# connect: Network is unreachable
# 라우팅 테이블 확인
$ ip route
default via 10.0.0.1 dev eth0
10.0.0.0/24 dev eth0 proto kernel scope link
# ← 172.16.0.0/16 경로가 없음!
# 원인 파악: 오늘 오후 네트워크 팀이 라우터 교체 작업을 했고
# 새 라우터의 IP가 10.0.0.254로 변경됨
$ sudo ip route add 172.16.0.0/16 via 10.0.0.254
$ ping -c 3 172.16.5.10
# 64 bytes from 172.16.5.10: icmp_seq=1 ttl=63 time=0.8 ms ← 복구!
5분 만에 서비스가 복구됩니다. 이후 영구 설정과 다른 노드들에도 동일하게 적용합니다.
이 기술이 필요한 직군
| 직군 | 활용 상황 |
|---|---|
| 서버/인프라 엔지니어 | 멀티홈 서버 라우팅 설정, VPC 피어링 후 경로 추가 |
| DevOps/SRE | 컨테이너 네트워크(Pod CIDR) 라우팅 설정, 서비스 복구 |
| 클라우드 엔지니어 | AWS Route Table, GCP Cloud Router 설정 |
| 네트워크 엔지니어 | BGP/OSPF 동적 라우팅 설계, 정책 기반 라우팅 |
알아두면 차별화되는 지식
클라우드 환경의 라우팅
AWS VPC에서는 각 서브넷에 Route Table이 연결됩니다. 콘솔에서 설정하는 내용이 결국 ip route와 동일한 개념입니다:
Destination Target
10.0.0.0/16 local ← 동일 VPC
172.16.0.0/16 tgw-xxxxx ← Transit Gateway (온프레미스 연결)
0.0.0.0/0 igw-xxxxx ← Internet Gateway (인터넷 출구)
클라우드 콘솔 Route Table을 자신 있게 다루려면 기본 ip route 개념이 탄탄해야 합니다.
컨테이너/쿠버네티스 환경
쿠버네티스 클러스터에서 Pod 간 통신도 결국 라우팅입니다. CNI 플러그인(Flannel, Calico 등)이 자동으로 각 노드에 라우팅 테이블을 구성합니다:
# 쿠버네티스 노드에서의 ip route 예시
$ ip route
10.244.0.0/24 dev cni0 scope link ← 자신의 Pod 서브넷
10.244.1.0/24 via 10.0.0.11 dev flannel0 ← 다른 노드의 Pod 서브넷
이 라우팅을 이해하면 Pod 간 통신 문제를 빠르게 진단할 수 있습니다.
핵심 명령어 요약
이 명령은 서버의 라우팅 또는 인터페이스 설정을 바꿔 원격 접속이 끊길 수 있습니다. 콘솔 접근과 현재 라우팅 백업을 확보한 뒤 실행하세요.
# 라우팅 테이블 확인
ip route
ip route show
# 특정 목적지 경로 추적
ip route get [목적지 IP]
# 정적 경로 추가 (임시)
ip route add [서브넷/prefix] via [게이트웨이] dev [인터페이스]
# 디폴트 게이트웨이 추가 (임시)
ip route add default via [게이트웨이] dev [인터페이스]
# 경로 삭제
ip route del [서브넷/prefix] via [게이트웨이]
# 경로 변경
ip route change [서브넷/prefix] via [새 게이트웨이]
# 정책 라우팅 규칙 확인
ip rule show
체크리스트
라우팅 설정 전 반드시 확인할 사항:
- 게이트웨이 IP가 자신과 같은 서브넷에 있는가?
-
ip route get [목적지]로 경로가 올바르게 잡히는가? - 영구 설정 파일에도 반영했는가?
- NIC가 2개 이상이라면 비대칭 라우팅 가능성을 검토했는가?
- 변경 전 기존 라우팅 테이블을 백업/문서화했는가?