NAT에 대한 개념 설명은 아래의 Joinc 사이트를 참고
일반적으로 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번으로 변경한다)
'Ubuntu' 카테고리의 다른 글
tcpdump로 HTTP Packet Decode 하기 및 tshark 사용법 (0) | 2021.07.10 |
---|---|
sudoers 설정 (암호 입력 없이 root 사용자 권한 얻기) (0) | 2021.07.10 |
resolv.conf on Ubuntu (0) | 2021.07.10 |
Sharing Desktop (원격 데스크탑) on Ubuntu (0) | 2021.07.10 |
Ubuntu OS VM 최초 기동 후 설치 할 App과 초기 설정 작업 (0) | 2021.07.10 |