IPTABLES에서 DNAT와 REDIRECT의 차이점


14

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

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

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

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

투명한 프록시로 포트 8080에서 privoxy를 설치하고 청취했습니다. 이 설정으로 달성 한 것은 최소한의 구성으로 클라이언트를 프록시에 연결하여이 상자를 기존 네트워크에 놓을 수 있다는 것입니다.

여기 내 원래 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를 사용하고 있음을 알았을 때 혼란이 생겨서 서로의 진정한 Beneift를 이해하려고합니다. 샘플 구성은 다음과 같습니다.

*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

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

어느 것이 다른 것보다 옳습니까?

이 글을 읽어 주셔서 감사합니다 ...

답변:


14

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

DNAT실제 네트워크 주소 변환 입니다. 로컬 시스템 외부로 향하는 패킷이 대상을 변경하도록하려면 REDIRECT작동하지 않는 두 가지 중 더 나은 선택입니다 .


192.168.5.234와 같이 프록시 뒤에 클라이언트가 있고 192.168.5.1의 프록시를 통해 HTTP 요청을 "처리"하려는 경우, 80 번 아웃 바운드 포트 80 트래픽을 192.168로 DNAT해야한다고 제안합니다. .5.1 : 8080 프록시에서. 나는 그것을 살 수 있지만 왜 ???? 프록시의 ETH0을 기본 게이트웨이를 통해 인터넷으로 나가면 트래픽이 처리되는 방식과 관련이 있습니까? 이 말을

2
DNAT는 패킷이 방화벽을 통과 할 때 주소가 변경되어 원하는 호스트에 도달하고 그 반대의 경우 방화벽에서 나온 것으로 보입니다. DNAT는 MASQUERADE 규칙에 의해 처리되는 아웃 바운드 트래픽에는 거의 적용되지 않습니다. privproxy가 다른 호스트에 있었으면 해당 호스트에 대한 예외를 제외하고 DNAT가 적합합니다.
BillThor

빌 고마워 그것은 나의 파충류 뇌가가는 곳이지만, 검증을받는 것이 항상 좋은 것입니다. 따라서 192.168.5.234에서 google.com 으로 향하는 패킷을 보내고 기본 gw가 192.168.5.1 (프록시의 eth1)로 설정되어 있으면 해당 패킷을 프록시의 포트 8080으로 "리디렉션"하고 privoxy가 수행하도록해야합니다 나머지. 그 이유는 privoxy가 다른 호스트가 아닌 192.168.5.1에 ​​있기 때문입니다. 담배를 피우지 말아야합니까?
QWade

9

REDIRECTWarner @의 답변에 따라 대상 IP 주소를 변경하여 시스템 자체로 전송합니다. 그러나 나는 대답이 완전히 정확하지 않거나 약간 오도한다고 말합니다.

REDIRECT로컬 패킷을 리디렉션하기위한 것이 아닙니다. 실제로 DNAT사용할 대상 IP 주소는 로컬 패킷이거나 시스템 인터페이스의 IP 주소 인 경우 127.0.0.1, 그렇지 않으면 OP의 경우 192.168.5.1입니다.

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

로부터 REDIRECTIP 주소를 지정할 필요가 없습니다, 그것은 그냥 몇 가지 장점을 통해이 오른쪽 하나를 수행합니다 DNAT:

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

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


어쨌든 snat / 가장 무도회 같은.
Jichao

@Hod, 나는 REDIRECT가 DNAT의 특별한 경우라고 들었지만 REDIRECT를 사용하고 TOR는 패킷의 실제 목적지를 알고 있으므로 iphdr과 tcphdr 구조의 daddr과 dport는 손상되지 않았으며 패킷은 REDIRECT 목적지로 되돌아왔다 핵심. DNAT는 실제로 구조를 수정합니다. 내가 잘못?
wick
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.