본문 바로가기
리눅스

[Linux] 리눅스 NAT : SNAT & DNAT

by 공대냥이 2018. 8. 17.
반응형

 

■ NAT 종류(Network 구분하는 경우)

* Normal NAT (사설 IP -> 공인 IP)

* Reverse NAT (공인 IP -> 사설 IP)

* Exclude NAT (NAT 적용하지 않는 host/Network 지정)

* Redirect NAT (특정 시스템으로 지정한 서비스 Forwarding)

 

■ NAT 종류(Network 구분하는 경우공인 IP 몇개를 물릴것인가?, 사설 IP가 고정되어 있는가?

* Dynamic NAT(N:1 or N:M)

여러개의 사설 IP : (여러개공인 IP

* Static NAT (1:1)

사설 IP : 공인 IP

 

■ NAT 종류(Network/Server 구분하는 경우어떤 주소(소스 주소/목적 주소)가 변경되는가?

* SNAT(Source NAT) : Source IP 주소 변경 (EX: 마스커레이딩)

 

* DNAT(Destination NAT) : Destination IP 주소 변경 (EX: Port Forwarding)

 

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.naver.com 80   1.2.3.4 30000 www.naver.com 80
192.168.0.11 30000 www.naver.com 80   1.2.3.4 30001 www.naver.com 80
192.168.0.12 30000 www.naver.com 80   1.2.3.4 30002 www.naver.com 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.naver.com 80   1.2.3.4 30000 www.naver.com 80
192.168.0.11 30000 www.naver.com 80   1.2.3.5 30000 www.naver.com 80
192.168.0.12 30000 www.naver.com 80   1.2.3.6 30000 www.naver.com 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.naver.com 80   1.2.3.4 887 www.naver.com 80
192.168.0.11 30000 www.naver.com 80   1.2.3.4 888 www.naver.com 80
192.168.0.12 30000 www.naver.com 80   1.2.3.4 889 www.naver.com 80

 

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

  • 카드가 부여받은 ip를 지정하는 방식으로 이해하면 쉽다. (공유기에서 많이 사용)

# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE (N:1 방식유동IP/고정IP)

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

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

 

 

 

 

■ DNAT 설정의 예

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

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

 

 

S-IP S-Port D-IP D-Port   S-IP S-Port D-IP D-Port
공인 IP 30000 1.2.3.4 80   공인 IP 30000 192.168.0.10 80
공인 IP 30000 1.2.3.4 23   공인 IP 30000 192.168.0.11 23
공인 IP 30000 1.2.3.4 25   공인 IP 30000 192.168.0.12 25

 

목적지 주소를 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 포트로 변경하는 경우

# itpables -t nat -A PREROUTING -p tcp --dport 80 -i eth1 -j DNAT --to 1.2.3.4:8080

외부에서 공유기를 통해 들어올때 port를 정해놓으면 다이렉트로 들어올 수 있게 하는것.

1.2.3.4 목적지 주소로 가는 지역 패킷을 loopback으로 재설정 하기

# iptables -t nat -A OUTPUT -d 1.2.3.4 -j DNAT --to 127.0.0.1

 

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

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

DNAT 종류 중 예제 Remote Port Forwarding

 

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

반응형