본문 바로가기

리눅스

iptables를 사용하여 포트 포워딩을 설정하는 일반적인 방법

728x90
반응형

iptables를 사용하여 포트 포워딩을 설정하는 일반적인 방법

1. 포트 포워딩 활성화

포트 포워딩을위한 IP 패킷 라우팅을 활성화합니다.

sudo sysctl net.ipv4.ip_forward=1

또는

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

2. 포트 포워딩 규칙 추가

80번 포트를 8080 포트로 포워딩하는 방법을 보여줍니다.

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

3. 규칙 저장

규칙을 설정한 후에는 변경 사항을 저장하여 부팅 시에도 적용되도록 해야 합니다. iptables-persistent 패키지를 사용하거나 iptables-save와 iptables-restore 명령어를 사용하여 설정을 저장할 수 있습니다.

4. 포트 포워딩 검증

포트 포워딩이 올바르게 설정되었는지 확인하려면 특정 포트로의 연결을 테스트하십시오.

 

iptables를 사용한 포트 포워딩은 복잡한 네트워크 구성을 다루는 데 유용하며, 다중 포트 포워딩 및 서버 내부 서비스 라우팅과 같은 고급 기능을 구현할 수 있습니다.

80 및 443의 들어오는 트래픽을 프록시 서버로 전달하도록 설정

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 프록시서버IP:포트
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 프록시서버IP:포트

목적지 IP 주소와 포트에 따라 트래픽을 다르게 설정

# 로컬 대역(172.30.0.0/16)에서 기본 게이트웨이로 통신 (포트 80 및 443)
iptables -A FORWARD -d 172.30.0.0/16 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -d 172.30.0.0/16 -p tcp --dport 443 -j ACCEPT

# 외부 IP 주소(172.30.0.0/16을 제외한 아이피)에서 프록시 서버로 통신 (포트 80 및 443)
iptables -A FORWARD -d ! 172.30.0.0/16 -p tcp --dport 80 -j DNAT --to-destination 프록시서버IP:80
iptables -A FORWARD -d ! 172.30.0.0/16 -p tcp --dport 443 -j DNAT --to-destination 프록시서버IP:80

로컬 대역과 외부 IP 주소 간의 포트 포워딩을 설정

# 172.30.0.0/16 로컬 대역에서 로컬 게이트웨이(172.30.0.1)로의 포트 80 및 443 트래픽 허용
iptables -A FORWARD -i eth0 -o eth0 -s 172.30.0.0/16 -d 172.30.0.1 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth0 -s 172.30.0.0/16 -d 172.30.0.1 -p tcp --dport 443 -j ACCEPT

# 외부 IP 주소에서 프록시 서버로의 포트 80 및 443 트래픽 포워딩
iptables -t nat -A PREROUTING -i eth0 -d 0.0.0.0/0 -p tcp --dport 80 -j DNAT --to-destination 프록시서버IP:80
iptables -t nat -A PREROUTING -i eth0 -d 0.0.0.0/0 -p tcp --dport 443 -j DNAT --to-destination 프록시서버IP:80

 

iptables -A FORWARD -d 172.30.0.0/16 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -d 172.30.0.0/16 -p tcp --dport 443 -j ACCEPT

iptables -A FORWARD -d ! 172.30.0.0/16 -p tcp --dport 80 -j DNAT --to-destination 프록시서버IP(squid):3128
iptables -A FORWARD -d ! 172.30.0.0/16 -p tcp --dport 443 -j DNAT --to-destination 프록시서버IP(squid):3128

 

iptables -A FORWARD -d 172.30.0.0/16 -j ACCEPT
iptables -A FORWARD -d ! 172.30.0.0/16 -p tcp --dport 80 -j DNAT --to-destination 프록시서버IP(squid):3128
iptables -A FORWARD -d ! 172.30.0.0/16 -p tcp --dport 443 -j DNAT --to-destination 프록시서버IP(squid):3128

 

참고URL

- Ubuntu Official Documentation : IptablesHowTo

- Rocky Linux Documentation : iptables 가이드 - firewalld 소개

 

반응형