답변1
확인 해봐차트. 녹색 상자는 을 나타내고 iptables
파란색 상자는 을 나타냅니다 ebtables
(무시).
OUTPUT
따라서 로컬 애플리케이션에서 생성된 패킷만 체인을 통과하는 반면 POSTROUTING
다른 곳에서 라우팅된 패킷을 포함하여 모든 패킷은 체인을 통과하는 것을 볼 수 있습니다 .
NAT(Network Address Translation)에는 두 가지 하위 사례가 있습니다.에스NAT 변환원천데이터 패킷의 주소,디NAT 변환목적지패킷의 주소입니다.
어떤 체인에서 다음 중 하나를 수행할 수 있습니다. DNAT를 수행할 수 nat/PREROUTING
있고 nat/OUTPUT
동시에 SNAT nat/POSTROUTING
도 nat/INPUT
수행할 수 있습니다(아직 유효한지 확실하지 않음).
답변2
@x-yuri 저도 출력 NAT에 대해 헷갈렸는데 드디어 답을 얻었네요. 경로 전 NAT와 경로 후 NAT는 모두 일부 패킷이 인터페이스에 들어오고 나갈 때 해당 주소를 NAT하려는 외부 NAT에 적합합니다. 그러나 OUTPUT NAT는 로컬 네트워크 NAT에서 작동합니다. 즉, 패킷이 애플리케이션에서 시작될 때를 의미합니다. 나는 이것이 이것을 더 잘 이해하는 좋은 예라고 생각합니다. Nginx에서 수행하는 것과 같이 투명하게 프록시되는 트래픽의 포트 및 IP 주소를 변경하려는 경우. 우리는 다음과 같은 것을 사용할 수 있습니다:
iptables -t nat -A 출력 -p tcp --dport 80 -j DNAT --대상 192.168.100.10:8080
포트 8080에서 수신 대기 중인 네트워크 192.168.100.10의 다른 호스트로 포트 80의 트래픽을 보냅니다.
내 생각에는 그것이 내가 바라는 것이 사실이고 당신이 요구하는 것이 아닐까 싶습니다.