iptablesのPREROUTINGとFORWARDの違いは何ですか?


15

このシステムがどのように機能するかを理解しようとしていますが、NAT PREROUTINGの使用とFORWARDの使用の違いを理解するのに問題があります。私が理解したことから、PREROUTEはフィルターを回避して、パケットを別のサーバーに送信できます。NATがPREROUTEを介してこれを処理できる場合、フィルターにFORWARDルールを設定する目的は何ですか?

回答:


23

NATテーブル

このテーブルは、異なるパケットのNAT(ネットワークアドレス変換)にのみ使用してください。つまり、パケットのソースフィールドまたは宛先フィールドを変換するためにのみ使用する必要があります。

フィルターテーブル

フィルタテーブルは、主にパケットのフィルタリングに使用されます。パケットを照合し、希望する方法でフィルタリングできます。これは、実際にパケットに対してアクションを実行し、その内容に応じて、パケットに含まれる内容を調べ、それらをDROPまたは/ ACCEPTする場所です。もちろん、事前のフィルタリングを行うこともできます。ただし、この特定のテーブルは、フィルタリングが設計された場所です。

ではテーブルとチェーンの道のり NATのPREROUTINGチェーンは、両方の転送が横切っている間に、我々はそのフィルタのFORWARDチェーンを見ることができ、コンピュータがルータのように動作している、つまり、のみ転送されたパケット(ネットワークから来て、ネットワークへ出て行くパケット)によって横断されますパケットおよび宛先がローカルホストであるパケット。

パケットの宛先アドレスを変更するためだけにnatのPREROUTINGを使用し、フィルタリング(パケットのドロップ/受け入れ)のためだけにフィルターのFORWARDを使用する必要があります。

ローカルマシン自体を宛先としない最初のルーティング決定にパケットを取得すると、そのパケットはFORWARDチェーンを介してルーティングされます。一方、パケットがローカルマシンがリッスンしているIPアドレス宛ての場合、INPUTチェーンを介してローカルマシンにパケットを送信します。 ここに画像の説明を入力してください パケットはローカルマシン宛ての場合がありますが、NATを実行することにより、PREROUTINGチェーン内で宛先アドレスを変更できます。これは最初のルーティング決定の前に行われるため、パケットはこの変更後に調べられます。このため、ルーティングの決定が行われる前にルーティングが変更される場合があります。すべてのパケットがこのイメージのいずれかのパスを通過することに注意してください。パケットを送信元と同じネットワークにDNATしても、ネットワーク上に戻るまで、残りのチェーンを通過します。


5

PREROUTING:このチェーンは、パケットを送信する前に(PRE)ルーティング関連の決定を行うために使用されます。PREROUTING/POSTROUTINGie NATテーブルACCEPT/DROP/REJECTでは、デフォルトFILTERテーブルのetcターゲットが機能しないことを常に覚えておいてください。このNATテーブルは、ルーティングの決定にのみ使用されます。PREROUTINGルーティングの決定、つまり、パケットがネットワークを通過し始める前に行う必要がある決定を行うときに使用する必要があります。次に例を示します。ポート80でサーバーに到達したトラフィックをポート8080にリダイレクトしています。

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

FORWARD:名前が示すように、テーブルのFORWARDチェーンはFILTER、ソースから宛先にパケットを転送するために使用されます。ここでは、ソースと宛先は2つの異なるホストです。したがって、想像できるように、FORWARDルールは基本的に、あるホストがサーバーを介して別のホストからトラフィックを送受信しているサーバーで使用されます。パケットがサーバーから生成されるとき、チェーンは、OUTPUTつまりトラフィックがそれ自体から出て行くのに対し、INPUTチェーンはパケットがサーバー自体のみを対象とすることを意味します。次に、ホスト用のインターフェイスのポート80で受信したトラフィックを受け入れて転送するFORWARDチェーンの例を示しTCPます。eth0192.168.0.4192.168.0.4

iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 192.168.0.4 -j ACCEPT

「ホスト」の使用は奇妙に思えます。どのテーブルが使用されるかは、主にパッケージが入って終了する予定のローカルインターフェイスに依存します。
ガントバート

どの部分が変に見える?ホストの概念を使用して、送信側と受信側を示しています。
heemayl

FORWARDの段落について話している:1つのインターフェイスを介して
着信

ええ、わかりました....インターフェイスを使用する必要があります....ホストを使用して簡単に想像できます..コンピュータの前にいるときに変更します。
-heemayl

@guntbert:頭をまっすぐにした。最後のコメントを十分に注意深く読んでいませんでした。FORWARDチェーンの2つの異なるインターフェイスのコンテキストで間違っていると思います。LANのあるホストから別のLANのホストにパケットが転送されるとき、パケットは単一のインターフェースを通過し、使用されるチェーンFORWARDはここではサーバー(メディア)は厳密な意味でルーターとして機能しませんがむしろスイッチと考えることができます。
heemayl
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.