리눅스/프로젝트 실습
정책 기반 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