리눅스/프로젝트 실습

정책 기반 NIC 분리 라우팅(Ubuntu Desktop)

CBROJIN 2025. 6. 20. 15:08

🧩 전체 토폴로지

Ubuntu Desktop(22.04)이 두 개의 NIC(ens33, ens34)를 통해 인터넷(NAT) PNetLab 내부망(Zabbix 등) 에 동시에 연결되는 구조

🧩 실습 환경

  • 시스템: Ubuntu 22.04 Desktop (VMware)
  • ens33 (인터넷): DHCP, NAT (192.168.154.0/24)
  • ens34 (내부망): 고정 IP (192.168.10.0/25)
  • 내부 DNS: 192.168.50.3
  • Zabbix 서버: 192.168.50.6
  • 목적: 인터넷과 내부망을 동시에 사용하는 정책 기반 라우팅 구성

🧩 Step 1. Netplan으로 NIC 구성

sudo nano /etc/netplan/01-network-manager-all.yaml

▶ ens33은 DHCP로 NAT 주소를 자동 수신, ens34는 고정 IP 지정

 

sudo netplan apply

▶ 변경사항 적용

 


🧩 Step 2. 라우팅 테이블 분리

echo "200 ens33" | sudo tee -a /etc/iproute2/rt_tables
echo "201 ens34" | sudo tee -a /etc/iproute2/rt_tables

▶ 출발지 IP에 따라 라우팅 테이블을 분리하기 위한 식별자 등록

🧩 Step 3. 라우팅 테이블 및 규칙 설정

sudo ip route add default via 192.168.154.2 dev ens33 table ens33
sudo ip rule add from 192.168.154.0/24 priority 100 table ens33

▶ ens33 테이블에 인터넷 기본 게이트웨이 등록

▶ ens33 출발지 트래픽은 ens33 테이블 사용하도록 규칙 추가

sudo ip route add 192.168.10.0/25 dev ens34 scope link table ens34
sudo ip route add 192.168.50.0/24 via 192.168.10.3 dev ens34 table ens34
sudo ip rule add from 192.168.10.0/25 priority 200 table ens34

▶ ens34 테이블에는 내부망 및 Zabbix VLAN 경로 추가

▶ ens34 출발지 트래픽은 ens34 테이블 사용하도록 규칙 추가

🧩 Step 4. Split DNS 설정

sudo resolvectl dns ens33 8.8.8.8
sudo resolvectl domain ens33 '~.'

▶ ens33은 기본 DNS로 Google Public DNS를 사용

sudo resolvectl dns ens34 192.168.50.3
sudo resolvectl domain ens34 network.local

▶ ens34는 내부망 도메인 전용 DNS 서버 사용

 

🧩 Step 5. hosts 파일에 내부망 수동 등록

echo "192.168.50.6 zabbix.network.local" | sudo tee -a /etc/hosts

▶ 내부망 서버 이름을 직접 해석 가능하게 지정

 

🧩 Step 6. main 테이블에 내부망 경로 추가

sudo ip route add 192.168.50.0/24 via 192.168.10.3 dev ens34

 

▶ GUI 브라우저나 curl 등 일반 애플리케이션은 main 테이블 사용 - -> 명시적 경로 필요

 

✅ 결과

ip route get 8.8.8.8
ip route get 192.168.50.6