본문으로 바로가기

방화벽( Firewall )_ iptables ( NAT )

category Security/Linux Server 2017. 12. 21. 19:50

- NAT 의 종류 

SNAT(Source NAT) : Source IP 주소 변경 

DNAT(Destination NAT): Destination IP 주소 변경



- SNAT & DNAT

 

        -i eth0                                   -o eth0

    PREROUTING -->  라우팅  ----------------->POSTROUTING----->

      (D-NAT)         |                         (S-NAT)

                      |                            ^

                      |                            |

                      +-------> 로컬 프로세스 -----+

 


- SNAT


소스의 주소를 1.2.3.4로 변경하는 예

# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4

 

 S-IP

S-Port 

D-IP 

D-port 

 

S-IP 

S-Port 

D-IP 

D-Port 

 

 

192.168.0.10 

30000

www.daum.net 

80 

 

1.2.3.4 

30000 

www.daum.net 

80 

 

 

192.168.0.11 

30000

www.daum.net 

80 

 

1.2.3.4

30001 

www.daum.net 

80 

 

 

192.168,0.12 

30000

www.daum.net 

80 

 

1.2.3.4 

30002 

www.daum.net 

80 

 


소스의 주소를 1.2.3.4 ~ 1.2.3.6 로 변경하는 예

#iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4-1.2.3.6

 

 S-IP

S-Port 

D-IP 

D-port 

 

S-IP 

S-Port 

D-IP 

D-Port 

 

 

192.168.0.10 

30000

www.daum.net 

80 

 

1.2.3.4 

30000 

www.daum.net 

80 

 

 

192.168.0.11 

30000

www.daum.net 

80 

 

1.2.3.5

30000

www.daum.net 

80 

 

 

192.168,0.12 

30000

www.daum.net 

80 

 

1.2.3.6

30002 

www.daum.net

80 

 


소스의 주소를 1.2.3.4에 포트 1-1023으로 변경하는 예

#iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4:1-1023

 

 S-IP

S-Port 

D-IP 

D-port 

 

S-IP 

S-Port 

D-IP 

D-Port 

 

 

192.168.0.10 

30000

www.daum.net 

80 

 

1.2.3.4 

887

www.daum.net 

80 

 

 

192.168.0.11 

30000

www.daum.net 

80 

 

1.2.3.4

888

www.daum.net 

80 

 

 

192.168,0.12 

30000

www.daum.net 

80 

 

1.2.3.4 

889 

www.daum.net 

80 

 


마스쿼레이딩 설정 ( SNAT 방식의 특이한 경우 )

SNAT 는 외부로 통신할때 내부의 사설IP에서 공인 IP로 바꿔주는 역할을 한다.

하지만 일반 가정집과 같이 공인IP가 지정된 것이 아니라 DHCP 서버에서 할당 받는다면 공인 IP가 변경될 수 있다. 

-> 지정된 공인 IP로 설정하는 iptables로는 설정이 불가능 하다. 

-> 마스쿼레이딩은 IP를 지정하지 않고 외부로 나가는 NIC 카드를 지정하여 그때마다 지정된 NIC 카드의 IP를 부여한다.

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

-> SNAT는 주로 고정 IP 방식에서 사용(eth0 : 회사가 보유한 고정/공인 IP)

-> DNAT는 주로 유동 IP 방식에서 사용(ppp0 : 통신 회사가 제공하는 유동/공인 IP)


- DNAT


 

 S-IP

S-Port 

D-IP 

D-port 

 

S-IP 

S-Port 

D-IP 

D-Port 

 

 

www.daum.net 

80

1.1.1.1

30000 

 

www.daum.net

80

192.168.0.10

30000

 

 

www.daum.net

80

1.1.1.1

30001

 

www.daum.net

80

192.168.0.11 

30001

 

 

www.daum.net

80

1.1.1.1

30002


www.daum.net

80

192.168.0.12 

30002

 


목적지 주소를 1.2.3.4로 변경하는 경우

# iptables -t nat -A PREROUTING -i eth1 -j DNAT --to 1.2.3.4


목적지 주소를 1.2.3.4-1.2.3.6 로 변경하는 경우

# iptables -t nat -A PREROUTING -i eth1 -j DNAT --to 1.2.3.4-1.2.3.6


웹 트래픽에 대한 목적지 주소를 1.2.3.4의 8080 포트로 변경하는 경우

# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j NAT --to 1.2.3.4:8080



방향 재 설정 (Redirect) - Local Port Forwarding

# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

외부에서 80번 포트로 tcp 패킷이 들어오면 먼저 3128 포트로 보낸다. 

> 3128 포트에는 보통 패킷을 분석하기 위해 대기중인 프로그램이 존재한다. > 그리고 다시 80 포트로 보낸다.

> 자신의 포트로 잠깐 바꾸는 것이기 때문에 IP를 설정할 필요가 없다. 



- 정리


■ MASQERADE 설정 -> (예) firewall 서버에서 설정

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


■ Network interface(eth0)을 통한 Port Forwarding

# iptables -t nat -A PREROUTING -p tcp -i eth0 --dport ${port} -j DNAT  --to ${IP:Port} 


■ 특정 IP를 통한 Port Forwarding

# iptables -t nat -A PREROUTING -p tcp -i eth0 -d ${IP} -j DNAT --to-destination ${IP:Port}


■ Local Port Forwarding -> (예) sslstrip 

# iptables -t nat -A PREROUTING -p tcp -d ${IP} --dport ${Port} -j REDIRECT --to-port ${Port}