CentOS에서 Firewalld를 통한 DNAT 설정(Port forwarding)을 알아보겠습니다.
하지만 그냥 nat라고 불러야 할지 port forwarding이라고 해야할지 모르겠지만..
아래와 같은 구성도에서 cent-os를 통해 아래 서버(사설IP)로 포트 포워딩 되는 환경을 구축하려 합니다.
해당 구성에서 cent-os 는 기본 이미지 + net-tools/nano 만 설치
Ubuntu 는 Apache2 설치 후 기본 index.html 만 구분 가능하게 수정
## ip forwarding ENABLE
## sysctl.con 파일에 아래 한줄 추가 후 적용
/etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
## Check active zones (인터페이스 별 소속 Zone 확인)
#firewall-cmd --get-active-zones
## internal zone configuration (인터페이스 구분)을 위해 인터페이스 파일에 ZONE 설정
nano /etc/sysconfig/network-scripts/ifcfg-eno33554960
ZONE="internal"
##ifdown/up (인터페이스 종속을 위해 down/up : 바로 되는 커맨드도 있는 것으로 기억 잠와서 패스) 후 Zone 확인
#firewall-cmd --get-active-zones
ifdown eno33554960
ifup eno33554960
# 포트에 대해 forwarding.
firewall-cmd --permanent --zone=public --add-forward-port=port=6666:proto=tcp:toport=80:toaddr=192.168.254.3
firewall-cmd --permanent --zone=public --add-forward-port=port=7777:proto=tcp:toport=80:toaddr=192.168.254.10
firewall-cmd --permanent --zone=public --add-forward-port=port=8888:proto=tcp:toport=80:toaddr=192.168.254.20
firewall-cmd --reload
접속시 연결 초과
하지만 vmnet-6에 대해 패킷 확인 시 source address가 변환되지 못하는 것을 확인. 이로 인해 SYN 이후 연결 수립 안됨 (one-way)
masquerade 옵션 enable을 시켜주면 되지만
SNAT이 아닌 DNAT이기 때문에 하지만 내부 인터페이스에 적용해 주어야함.
firewall-cmd --permanent --zone=internal --add-masquerade
firewall-cmd --reload
그래서............
완료