iptables DNAT는 로컬을 포함한 모든 트래픽을 DNAT 포트로 보냅니다.

iptables DNAT는 로컬을 포함한 모든 트래픽을 DNAT 포트로 보냅니다.

현재 다음과 같은 iptables 규칙이 있습니다.

iptables-save -c
# Generated by iptables-save v1.4.7 on Wed Oct 21 13:24:24 2020
*nat
:PREROUTING ACCEPT [5163:300376]
:POSTROUTING ACCEPT [35:11935]
:OUTPUT ACCEPT [30:11635]
[12:760] -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 10090 
[5:300] -A OUTPUT -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.16.5.67:10090 
COMMIT
# Completed on Wed Oct 21 13:24:24 2020
# Generated by iptables-save v1.4.7 on Wed Oct 21 13:24:24 2020
*filter
:INPUT ACCEPT [24586:5363323]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [41609:7761875]
[13520:2056828] -A INPUT -p tcp -m tcp --dport 10090 -j ACCEPT 
[0:0] -A INPUT -p tcp -m tcp --dport 18080 -j ACCEPT 
[0:0] -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 
COMMIT
# Completed on Wed Oct 21 13:24:24 2020

들어오는 모든 트래픽에 대해 예상대로 작동하지만 이 서버의 트래픽도 DNAT 주소:포트로 보냅니다. 위에서 언급한 것처럼 들어오는 모든 트래픽이 DNAT가 되도록 이를 어떻게 변경할 수 있습니까? 하지만 이렇게 하면 DNAT 주소로 전송되는 대신 http 사이트로 컬링할 수도 있습니다.

고마워요 콥스

답변1

괜찮아요. 문제를 해결했어요. PREROUTING 규칙이 필요하지만 출력 http가 작동하도록 하려면 OUTPUT 규칙을 제거하기만 하면 됩니다.

올바른 작업 방법은 모든 외부 연결이 DNAT를 통해 ip:port로 이동하는 것입니다. 들어오는 모든 연결뿐만 아니라 나가는 모든 연결에 대해서도 이 작업을 수행합니다. 들어오는 것은 좋고 나가는 것은 나쁘다.

관련 정보