Linux 라우터 기반 NAT 환경 구축 실습
Linux 라우터 기반 NAT 환경 구축 실습입니다. VMware NAT, Router Linux 2-NIC, ip_forward, firewalld masquerade, Windows/Linux route와 tcpdump 검증을 정리했습니다.
Linux 라우터 기반 NAT 환경 구축 실습
이 실습은 VMware NAT 환경 안에 Linux 라우터를 하나 더 두고, 서로 다른 내부 대역이 Linux 라우터를 통해 통신하도록 구성하는 내용이다. 실습은 CentOS 7, Windows client, Linux client를 섞어서 ping, route, traceroute로 검증했다. 여기서는 같은 구조를 유지하면서 현재 Linux 명령 기준으로 재정리한다.
실습 토폴로지
| 장비 | IP | 역할 |
|---|---|---|
| Host Windows | 192.168.0.156 | 외부 테스트 PC |
| VMware NAT gateway | 192.168.11.1 | VMnet NAT gateway |
| RouteCent7 ens32 | 192.168.11.254/24 | 라우터 외부쪽 |
| RouteCent7 ens34 | 192.168.12.254/24 | 라우터 내부쪽 |
| Linux client 1 | 192.168.11.11/24 | 외부쪽 lab client |
| Windows client | 192.168.11.12/24 | 외부쪽 Windows test |
| Linux client 2 | 192.168.12.11/24 | 내부쪽 lab client |
1. Router Linux NIC 확인
ip -br addr
nmcli dev status
nmcli con show
ip route2. Router Linux IP 설정
WAN_CON="System ens32"
LAN_CON="System ens34"
sudo nmcli con mod "${WAN_CON}" ipv4.method manual
sudo nmcli con mod "${WAN_CON}" ipv4.addresses 192.168.11.254/24
sudo nmcli con mod "${WAN_CON}" ipv4.gateway 192.168.11.1
sudo nmcli con mod "${WAN_CON}" ipv4.dns "192.168.11.1 1.1.1.1"
sudo nmcli con mod "${LAN_CON}" ipv4.method manual
sudo nmcli con mod "${LAN_CON}" ipv4.addresses 192.168.12.254/24
sudo nmcli con mod "${LAN_CON}" ipv4.gateway ""
sudo nmcli con mod "${LAN_CON}" ipv4.dns ""
sudo nmcli con up "${WAN_CON}"
sudo nmcli con up "${LAN_CON}"
ip -br addr
ip route3. IP forwarding 활성화
cat <<'EOF' | sudo tee /etc/sysctl.d/90-router-lab.conf
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
sysctl net.ipv4.ip_forward4. firewalld NAT 설정
방화벽을 끄기보다 zone과 masquerade를 명확히 두는 방식으로 구성한다.
sudo systemctl enable --now firewalld
sudo firewall-cmd --zone=public --change-interface=ens32 --permanent
sudo firewall-cmd --zone=internal --change-interface=ens34 --permanent
sudo firewall-cmd --zone=public --add-masquerade --permanent
sudo firewall-cmd --reload
firewall-cmd --get-active-zones
firewall-cmd --zone=public --query-masquerade5. Linux client route 설정
192.168.11.11에서 192.168.12.0/24로 가는 route를 Router Linux로 보낸다.
sudo ip route add 192.168.12.0/24 via 192.168.11.254
ip route
ping -c 3 192.168.12.11NetworkManager에 영구 등록하려면 connection에 static route를 추가한다.
CON_NAME="System ens33"
sudo nmcli con mod "${CON_NAME}" +ipv4.routes "192.168.12.0/24 192.168.11.254"
sudo nmcli con up "${CON_NAME}"6. Windows route 설정
관리자 권한 PowerShell 또는 CMD에서 실행한다.
route print
route add 192.168.12.0 mask 255.255.255.0 192.168.11.254
Test-NetConnection 192.168.12.11
tracert 192.168.12.11재부팅 후에도 유지하려면 -p를 붙인다.
route -p add 192.168.12.0 mask 255.255.255.0 192.168.11.2547. 내부 Linux client 설정
192.168.12.11의 gateway는 Router Linux 내부 IP인 192.168.12.254다.
CON_NAME="System ens33"
sudo nmcli con mod "${CON_NAME}" ipv4.method manual
sudo nmcli con mod "${CON_NAME}" ipv4.addresses 192.168.12.11/24
sudo nmcli con mod "${CON_NAME}" ipv4.gateway 192.168.12.254
sudo nmcli con mod "${CON_NAME}" ipv4.dns "1.1.1.1 8.8.8.8"
sudo nmcli con up "${CON_NAME}"
ip route
ping -c 3 192.168.12.254
ping -c 3 192.168.11.11
ping -c 3 8.8.8.88. 경로와 패킷 확인
traceroute 192.168.12.11
tracepath 8.8.8.8
sudo tcpdump -ni ens32 icmp
sudo tcpdump -ni ens34 icmp9. 라우팅 테이블 확인
ip route
ip rule
ss -lntupWindows에서는 다음 명령을 사용한다.
route print
Get-NetRoute -AddressFamily IPv4마무리
NAT 환경에서 Linux 라우터를 추가하면 packet이 어느 gateway를 거치는지 명확히 알아야 한다. Router Linux에는 IP forwarding과 masquerade가 필요하고, 각 client에는 목적지 대역을 Router Linux로 보내는 route가 필요하다. 검증은 ip route, ping, traceroute/tracert, tcpdump 순서로 나누어 보면 된다.