iptables를 사용하여 NAT 필터링 동작 구성

iptables를 사용하여 NAT 필터링 동작 구성

이 규칙을 사용하여 SNAT를 구성하고 있습니다.

iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 193.49.142.107:4000

세션을 시작한 내부 주소와 포트로 향하지 않는 패킷을 필터링하는 규칙을 지정하고 싶습니다. 또한, 특정 외부 엔드포인트로부터 패킷을 수신하기 위해서는 내부 엔드포인트가 먼저 해당 외부 엔드포인트의 IP 주소로 패킷을 보내야 합니다.(NAT 주소 종속 필터링)

예:

NAT 뒤에 있는 내부 IP와 포트(X:x)를 가진 머신은 IP Y를 가진 서버에 대한 연결을 엽니다. 따라서 규칙에 따라 IP 주소 Y에서 오고 (X: 엑스). 다른 모든 연결은 끊어집니다.

답변1

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -P FORWARD -j DROP
iptables -A FORWARD -o eth1 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -m state --state ESTABLISHED -j ACCEPT

이 규칙은 무엇을 합니까?

  1. -A POSTROUTING -o eth1 -j MASQUERADE패킷이 네트워크를 떠날 때 내부 IP를 숨깁니다.
  2. -P FORWARD -j DROPFORWARD 체인의 기본 정책을 DROP으로 설정합니다.
  3. -A FORWARD -o eth1 -m state --state NEW,ESTABLISHED -j ACCEPT새롭고 확립된 FORWARDed 연결을 허용합니다.
  4. -A FORWARD -i eth1 -m state --state ESTABLISHED -j ACCEPT설정된 FORWARD 연결만 허용합니다.

eth1위의 규칙은 이 상자를 WAN 및 eth0LAN에 연결된 게이트웨이/방화벽으로 사용한다고 가정합니다 .

추가 자료:포스트라우팅 및 IP 매스커레이딩

편집하다

"조건부" 포트 전달을 구성하려면:

소스 포트별

iptables -A PREROUTING -t nat -i eth1 -p tcp --sport [trusted_source_port] --dport [external_port] -j DNAT --to [internal_ip]:[internal_port]
iptables -A FORWARD -p tcp -d [internal_ip] --dport [internal_port] -j ACCEPT

소스 IP별

iptables -A PREROUTING -t nat -i eth1 -p tcp -s [trusted_source_ip] --dport [external_port] -j DNAT --to [internal_ip]:[internal_port]
iptables -A FORWARD -p tcp -d [internal_ip] --dport [internal_port] -j ACCEPT

관련 정보