iptablesのOUTPUTチェーンとFORWARDチェーンの違いは何ですか?


22

CentOS 6.0

私はiptablesを研究していますが、FORWARDチェーンとOUTPUTチェーンの違いについて混乱しています。私のトレーニング文書では、次のように述べています:

チェーンに追加する(-A)か、チェーンから削除する(-D)場合は、次の3つの方向のいずれかに移動するネットワークデータに適用します。

  • INPUT-すべての着信パケットがこのチェーンのルールに対してチェックされます。
  • 出力-すべての発信パケットは、このチェーンのルールに対してチェックされます。
  • FORWARD-別のコンピューターに送信されるすべてのパケットは、このチェーンのルールに対してチェックされます。

私の頭の中では、ホスト宛てのパケットが送信されるので、これは私を混乱させます。だから、パケットが別のコンピューターに行くが「発信」しないシナリオはありますか?iptablesはこの2つをどのように区別しますか?

回答:


26

OUTPUTは、ホストが発行するパケット用です。通常、宛先は別のホストですが、ループバックインターフェイスを介して同じホストにすることができるため、OUTPUTを通過するすべてのパケットが実際に発信されるわけではありません。

FORWARDは、ホストから送信されず、ホストにも送信されないパケット用です。これらは、ホストが単にルーティングしているパケットです。

パケットのマングリングとNATを掘り始めると、完全なストーリーはかなり複雑になります。


おもしろい...だから私の理解の目的のために、OUTPUTはシステムから「発信」されているパケット用であると言ってもよろしいですか...そしてFORWARDはシステムから発信されていないか宛てのパケット用ですそれと代わりにシステムを「通過」している?
マイクB

1
そうではありません。「転送」されたパケットは、ネットワークインターフェースによって「出力」されます。パケットが「転送」される前に「入力」されるように。 、iptablesは転送するOKを決定し、パケットは「出力チェーン」に入り、iptablesはチェックし、出力する「ok」を確認し、パケットは去ります。
グリズリー

2
@Grizlyいいえ、メモリから(この回答を書いているときは特にテストしていませんが)、リンク先の図によると、パケットは常に3つのfilterチェーン(または)のINPUTいずれOUTPUTか1つを通過しFORWARDます。(他のチェーンが以前にそれをドロップしないと仮定します。)manglenatチェーンは異なります。おそらくmangleチェーンを考えていたのでしょうか?
ジル「SO-悪であるのをやめる」

0

私の理解に:

入力:dst IPはホスト上にあり、複数のサブネットを持つ複数のポートがある場合でも

出力:src IPはホスト、どちらのポートからのものです

前方:ホスト上のdst IPもホストからのsrc IPもありません

ここに画像の説明を入力してください

たとえば、ルーターA

INPUTは次のとおりです。

192.168.10.1-> 192.168.10.199

192.168.10.1-> 192.168.2.1

出力は:

192.168.10.199-> xxxx

192.168.2.1-> xxxx

FORWARDは次のとおりです。

192.168.10.1-> 192.168.2.199

192.168.10.1-> 192.168.8.1

192.168.10.1-> 192.168.8.199

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.