IPTABLES에서 DNAT와 REDIRECT의 차이점

IPTABLES에서 DNAT와 REDIRECT의 차이점

좋아, 내가 밀도가 높거나 올바른 소스를 찾지 못했기 때문일 수도 있지만 이러한 IPTABLES 설정 중 하나가 다른 것보다 나은 이유를 이해할 수 없습니다.

내 설정은 다음과 같습니다.

투명 프록시와 라우터 또는 정렬 역할을 하는 상자가 있습니다. 여기에는 ETH0과 ETH1이라는 두 개의 인터페이스와 다음 주소 체계가 있습니다.

ETH0 = DHCP ETH1 = 192.168.5.1/24 192.168.5.0/24 네트워크에 대한 DHCP를 LAN의 뒤에 있는 클라이언트에 제공

privoxy를 설치하고 포트 8080을 투명 프록시로 수신하고 있습니다. 이 설정을 통해 내가 달성하려는 작업은 최소한의 구성과 클라이언트를 프록시에 연결하여 이 상자를 기존 네트워크에 놓을 수 있다는 것입니다.

여기 내 원본 IPTABLES 파일이 있습니다.

*nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 8080
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
COMMIT

이 구성은 제대로 작동하며 트래픽이 문제 없이 앞뒤로 흐릅니다. privoxy 로그 파일에서 원래 클라이언트 IP 주소를 얻었으며 생활이 좋습니다.

다른 사람들의 구성을 살펴보기 시작하고 그들이 REDIRECT 대신 DNAT를 사용하고 있다는 것을 알게 되면 혼란스러워집니다. 그리고 서로의 실제 이점을 이해하려고 노력하고 있습니다. 샘플 구성은 다음과 같습니다.

*nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to 192.168.5.1:8080
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
COMMIT

다시 말하지만, 이 구성도 작동하며 로깅 관점에서 필요한 모든 것을 제공합니다...

어느 것이 옳습니까, 아니면 다른 것보다 더 옳을까요?

시간을 내어 여기까지 읽어주셔서 감사합니다...

답변1

REDIRECT대상 IP 주소를 변경하여 기기 자체로 보냅니다. 즉, 로컬에서 생성된 패킷은 127.0.0.1 주소에 매핑됩니다. 로컬 패킷을 리디렉션하기 위한 것입니다. 로컬 시스템의 서비스 간 트래픽만 리디렉션하려는 경우에는 좋은 선택이 될 것입니다.

DNAT실제이다네트워크 주소 변환. 로컬 시스템 외부로 향하는 패킷의 목적지가 변경되도록 하려면 REDIRECT작동하지 않으므로 둘 중 더 나은 선택을 하는 것이 좋습니다.

답변2

REDIRECTWarner@의 답변에 따라 대상 IP 주소를 변경하여 컴퓨터 자체로 보냅니다. 그러나 나는 그 대답이 완전히 정확하지 않거나 약간 오해의 소지가 있다고 말하고 싶습니다.

REDIRECT로컬 패킷을 리디렉션하는 것만이 아닙니다. 실제로 DNAT사용할 대상 IP 주소는 암시적입니다. 로컬 패킷인 경우 127.0.0.1이고 그렇지 않은 경우 기계 인터페이스의 IP 주소는 OP의 경우 192.168.5.1입니다.

따라서 이 질문에서는 최종 목적지가 무엇이든 패킷이 먼저 프록시에 도달해야 하므로 REDIRECT완벽하게 적합합니다.

IP 주소를 지정할 필요가 없으므로 REDIRECT올바른 주소만 선택하면 다음과 같은 장점이 있습니다 DNAT.

  • 어떤 이유로든 시스템의 IP 주소가 변경되면 규칙을 수정할 필요가 없으며 특히 DNATDHCP 제어 인터페이스에서는 작동하지 않습니다.

  • 특정 IP 주소로 인해 약간 다른 버전을 유지하지 않고도 여러 시스템(예: 여러 프록시 인스턴스)에 대해 동일한 규칙을 작성하고 유지할 수 있습니다.

답변3

트래픽을 로컬 시스템으로 보내려는 경우 DNAT와 REDIRECT는 정확히 동일합니다.

문서에는 다음과 같이 명시되어 있습니다. "[리디렉션]은 리디렉션이라고 하는 대상 NAT의 특수한 사례입니다. 이는 들어오는 인터페이스의 주소에 대해 DNAT를 수행하는 것과 정확히 동일한 간단한 편의입니다."

https://www.netfilter.org/documentation/HOWTO/NAT-HOWTO-6.html#ss6.2

관련 정보