web-dev-qa-db-ja.com

IPTABLESのDATAとREDIRECTの違い

わかりました。それは、私が密集しているためか、適切なソースが見つからないためかもしれませんが、これらのIPTABLESセットアップの1つが他のセットアップよりも優れている理由を理解できません。

これが私のセットアップです:

透過プロキシとルーターまたはソートとして機能するボックスがあります。 ETH0とETH1の2つのインターフェイスと、次のアドレススキームがあります。

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

繰り返しますが、この構成も機能し、ロギングの観点から必要なすべてを提供してくれます...

どちらが正しいですか、それとももう少し正しいですか?

ここまで読んでいただきありがとうございます...

14
QWade

REDIRECTは、マシン自体に送信する宛先IPアドレスを変更します。つまり、ローカルで生成されたパケットは127.0.0.1アドレスにマッピングされます。ローカルパケットをリダイレクトするためのものです。ローカルマシン上のサービス間のトラフィックのみをリダイレクトする場合は、これが適切な選択です。

DNATは実際 ネットワークアドレス変換 です。ローカルシステムの外部を宛先とするパケットで宛先を変更する場合は、REDIRECTが機能しないため、この2つを選択することをお勧めします。

14
Warner

REDIRECTは、宛先IPアドレスを変更して、Warner @が回答したマシン自体に送信します。しかし、私はその答えは完全に正しい、または少し誤解を招くとは言えないと思います。

REDIRECTは、ローカルパケットをリダイレクトするためだけのものではありません。実際にはDNATであり、使用する宛先IPアドレスは暗黙的です。ローカルパケットの場合は127.0.0.1、それ以外の場合はマシンインターフェースのIPアドレス、OPの場合は192.168.5.1です。

したがって、この質問では、最終的な宛先が何であっても、パケットは最初にプロキシに到達する必要があるため、REDIRECTが最適です。

REDIRECTを使用すると、IPアドレスを指定する必要がないため、適切なIPアドレスを取得するだけで、DNATに比べていくつかの利点があります。

  • 何らかの理由でマシンのIPアドレスが変更された場合、ルールを変更する必要はありません。特にDNATはDHCP制御のインターフェースでは機能しません。

  • 特定のIPアドレスが原因でわずかに異なるバージョンを維持することなく、複数のシステム(たとえば、いくつかのプロキシインスタンス)に同じルールを記述して維持できます。

9
Julio Diez