このシステムの仕組みを理解しようとしていますが、NAT PREROUTINGの使用とFORWARDのフィルター処理の違いを理解するのに問題があります。私が理解していることから、PREROUTEはフィルターを回避して、パケットを別のサーバーに送信できます。 NATがPREROUTEを介してこれを処理できる場合、フィルターにFORWARDルールを設定する目的は何ですか?
NATテーブル :
このテーブルは、異なるパケットのNAT(ネットワークアドレス変換)にのみ使用する必要があります。つまり、パケットのソースフィールドまたは宛先フィールドを変換するためにのみ使用する必要があります。
フィルタテーブルは、主にパケットのフィルタリングに使用されます。パケットを照合し、希望する方法でフィルタリングできます。これは、実際にパケットに対してアクションを実行し、その内容に応じてパケットに含まれているものを調べ、それらをDROPまたは/ ACCEPTする場所です。もちろん、事前のフィルタリングを行うこともできます。ただし、この特定のテーブルは、フィルタリングが設計された場所です。
テーブルとチェーンの探索 フィルターのFORWARDチェーンは、転送されたパケット(ネットワークから来てネットワークに出て行くパケット)のみが通過することがわかります。 PREROUTINGチェーンは、転送されたパケットと、宛先がローカルホストであるパケットの両方によってトラバースされます。
パケットの宛先アドレスを変更するためだけにnatのPREROUTINGを使用し、フィルタリング(パケットのドロップ/受け入れ)のためだけにフィルターのFORWARDを使用する必要があります。
ローカルマシン自体を宛先としない最初のルーティング決定にパケットを取得すると、そのパケットはFORWARDチェーンを介してルーティングされます。一方、パケットがローカルマシンがリッスンしているIPアドレス宛てである場合、INPUTチェーンを介してローカルマシンにパケットを送信します。 パケットはローカルマシン宛ての場合がありますが、NATを実行することにより、PREROUTINGチェーン内で宛先アドレスを変更できます。これは最初のルーティングの決定の前に行われるため、パケットはこの変更後に調べられます。このため、ルーティングの決定が行われる前にルーティングが変更される場合があります。すべてのパケットがこのイメージのいずれかのパスを通過することに注意してください。パケットを送信元と同じネットワークにDNATしても、ネットワーク上に戻るまで、残りのチェーンを通過します。
PREROUTING:このチェーンは、パケットを送信する前にルーティング関連の決定を行うために使用されます(PRE)。 PREROUTING/POSTROUTING
で、つまりNAT
テーブルでは、デフォルトのFILTER
テーブルのACCEPT/DROP/REJECT
などのターゲットが機能しないことを常に覚えておいてください。 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
チェーンは、パケットがサーバー自体専用であることを意味します。以下はFORWARD
チェーンの例です。インターフェースeth0
のポート80で受信したTCP
トラフィックは、ホスト192.168.0.4
向けに受け入れられ、192.168.0.4
に転送されます。 :
iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 192.168.0.4 -j ACCEPT