반응형

 


 

NAT에 대한 개념 설명은 아래의 Joinc 사이트를 참고

 

 

NAT

DNAT를 이용한 Load balancing

www.joinc.co.kr:443

 

 

일반적으로 DNAT는;

 웹 서버가 Private Network 내부에 존재하면, Public network과 Private network의 경계에 있는 DNAT 장치가 외부의 모든 요청 패킷을 수신하여 Dest Address를 Private network의 IP Address 및 TCP/UCP Port로 변경하여 전달하는 용도로 자주 이용된다. 

  

아래 명령 예제는  

  • Host machine이 eth1
  • Host machine과 Virtual machine의 Bridge interface를 virbr0    (참고: VM 내부의 IP는 192.168.122.203) 

라고 가정하고 설정한 것이다. 

$ echo 1 > /proc/sys/net/ipv4/ip_forward 

##
## 주의: 
##   아래 -F 옵션은 FORWARD 체인의 내용을 깨끗하게 지우는 명령(Flush)이기 때문에 조심해서 사용해야 한다.
##
$ iptables -F FORWARD 

##
## FORWARD 체인에 eth1 ethernet port로 나가는 트래픽을 허용하는 Rule을 추가.
##
$ iptables -A FORWARD -o eth1 -j ACCEPT 

##
## FORWARD 체인에 virbr0 ethernet port로 나가는 트래픽을 허용하는 Rule을 추가.
##
$ iptables -A FORWARD -o virbr0 -j ACCEPT 

##
## VM의 SSH 서비스로 DNAT 처리 (Port forward: 50022 --> 22)
##
$ iptables  -t nat  -A PREROUTING  -i eth1 -p TCP  --dport 50022  -j DNAT  --to 192.168.122.203:22

##
## VM의 Web 서비스로 DNAT 처리 (Port forward: 50080 --> 80)
##
$ iptables  -t nat  -A PREROUTING  -i eth1 -p TCP  --dport 50080  -j DNAT  --to 192.168.122.203:80

 

위 명령 예시에서 마지막 명령줄에 대한 설명:

Gateway의 eth1으로 들어오는 패킷중에 80번 포트번호로 접속하는 패킷은 192.198.122.203(HTTP)의 80번 포트로 보낸다.

파라미터 단위로 의미를 파악해보면, 아래와 같다.

  iptables -t nat(NAT기능을 사용하겠다) 
              -A PREROUTING(PREROUTING 체인에 Rule을 추가)
              -i eth0(eth0 인터페이스로 들어오는 패킷들에 적용한다) 
              -p TCP(TCP 프로토콜이면) 
              --dport 80(접속하려는 포트번호가 80번이면) 
              -j DNAT --to 192.168.122.203:80 
             (목적지 주소를 192.168.122.203으로 변경, 포트 번호는 80번으로 변경한다)

 

 


 

+ Recent posts