네트워크

iptables - NAT(DNAT,SNAT,MASQUERADE)

MIN--A 2021. 8. 15. 22:28
728x90

구성도

vmware - CentOS 7에 인터페이스를 2개 추가

 

인터페이스 파일 생성 하기 

[root@localhost ~]# cd /etc/sysconfig/network-scripts/

[root@localhost network-scripts]# cp ./ifcfg-ens32 ./ifcfg-ens34

[root@localhost network-scripts]# cp ./ifcfg-ens32 ./ifcfg-ens35

확인 

[root@localhost network-scripts]# ls ifcfg-ens* 
ifcfg-ens32  ifcfg-ens34  ifcfg-ens35

 

# nmcli connection 에서 uuid를 인터페이스 파일에 넣어준다. 
# systemctl restart network 
# ifconfig        //잘 붙었는지 확인 

 

 

ip forward 설정 (라우팅)

[root@localhost ~]# sysctl net.ipv4.ip_forward 
net.ipv4.ip_forward = 0 

[root@localhost ~]# sysctl -w net.ipv4.ip_forward=1 
net.ipv4.ip_forward = 1 
==> 이 방법은 자주 풀린다

 

영구적 방법 (파일 수정 후 저장)

# vi /etc/sysctl.conf  

            

라우팅테이블 확인

 


NAT - MASQUERADING

조건에 일치하는 패킷의 출발지 주소를 변환

내부에서 전달되는 요청의 출발지 주소를 조건에 지정된 인터페이스의 IP로 변환한다.

= cisco Router의 NAT-PAT (NAT overload)

 

# iptables -t nat -A POSTROUTING -o ens32 -j MASQUERADE 

==> 주소를 지정하지 않고 인터페이스를 지정해서 주소가 변경되서 iptables 설정엔 변경할 내용 X

별도의 -s를 지정하지 않아서 -o 에 지정된 인터페이스 방향을 제외한 네트워크는 출발지 주소변환 대상이 됨 

 

-- 입력한 설정을 제거 

# iptables -t nat -D POSTROUTING 1 

 

지정된 네트워크만 MASQUEADE 

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.121.0/24 -o ens32 -j MASQUERADE

[root@localhost ~]# iptables -t nat -L POSTROUTING
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  192.168.121.0/24     anywhere  

 

 

 

xp -> ping 8.8.8.8

출발지 주소가 ens32(200.200.200.121)로 변하는 것을 확인

 


NAT - DNAT (Destination NAT)

 

목적지 주소 변환

외부에서 전달되는 요청의 목적지 주소를 서버의 사설 IP로 변환한다.

+논리적인 인터페이스 추가를 통한 추가주소 부여 (외부에서 ARP같은 걸 찾아야함 !!)

 

논리적인 인터페이스 추가 

[root@localhost ~]# ifconfig ens32:1 200.200.200.122 netmask 255.255.255.0

[root@localhost ~]# ifconfig ens32:1
ens32:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 200.200.200.122  netmask 255.255.255.0  broadcast 200.200.200.255
        ether 00:50:56:3e:52:46  txqueuelen 1000  (Ethernet)

 

(200.200.200.122로 접속하면 10.10.10.100에 닿는다)

# iptables -t nat -A PREROUTING -d 200.200.200.122 -j DNAT --to-destination 10.10.10.100 

 

HOST PC에서 TEST 

 

 

host pc -> ping 200.200.200.122

200.200.200.122가 10.10.10.100으로 변환되는 것을 확인 

 

 


NAT - SNAT (Source NAT)

 

출발지 주소 변환

내부에서 전달되는 요청의 출발지 주소를 직접 지정한 공인 IP로 변환 

 

논리적인 인터페이스 추가 

[root@localhost ~]# ifconfig ens32:2 200.200.200.123 netmask 255.255.255.0

 

inside -> outside 

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 10.10.10.100 -j SNAT --to-source 200.200.200.123

 

웹서버(centOS)에서 ping 확인

 웹서버 -> ping 8.8.8.8

출발지가 10.10.10.100 -> 200.200.200.123으로 변환되는 것을 확인

728x90