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 Windows192.168.0.156외부 테스트 PC
VMware NAT gateway192.168.11.1VMnet NAT gateway
RouteCent7 ens32192.168.11.254/24라우터 외부쪽
RouteCent7 ens34192.168.12.254/24라우터 내부쪽
Linux client 1192.168.11.11/24외부쪽 lab client
Windows client192.168.11.12/24외부쪽 Windows test
Linux client 2192.168.12.11/24내부쪽 lab client

1. Router Linux NIC 확인

ip -br addr
nmcli dev status
nmcli con show
ip route

2. 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 route

3. 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_forward

4. 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-masquerade

5. 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.11

NetworkManager에 영구 등록하려면 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.254

7. 내부 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.8

8. 경로와 패킷 확인

traceroute 192.168.12.11
tracepath 8.8.8.8

sudo tcpdump -ni ens32 icmp
sudo tcpdump -ni ens34 icmp

9. 라우팅 테이블 확인

ip route
ip rule
ss -lntup

Windows에서는 다음 명령을 사용한다.

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 순서로 나누어 보면 된다.

문서 링크

BGM EVER