본문 바로가기

Ryu's Tech

CentOS. Firewalld를 통한 DNAT 설정(Port forwarding)

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 

 




그래서............



완료