web-dev-qa-db-ja.com

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

CentOS 6.0

私はiptablesを研究していて、FORWARDチェーンとOUTPUTチェーンの違いについて混乱しています。私のトレーニングドキュメントでは、それは述べています:

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

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

私の考えでは、ホストに向けて出て行くパケットは発信であるからです。それでは、パケットが別のコンピュータに送信されても​​「送信」されないシナリオはありますか? iptablesはどのように2つを区別しますか?

25
Mike B

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

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

パケットマングリングとNATについて掘り下げ始めると、全体は かなり複雑 です。

私の理解に:

入力:複数のサブネットを持つ複数のポートがあっても、dst IPはホスト上にあります

出力:src IPはホストのいずれかのポートからのものです

フォワード:ホスト上のdst IPもホストからのsrc IPも

enter image description here

たとえば、ルーターAに

入力は:

192.168.10.1-> 192.168.10.199

192.168.10.1-> 192.168.2.1

出力は:

192.168.10.199-> x.x.x.x

192.168.2.1-> x.x.x.x

フォワードは:

192.168.10.1-> 192.168.2.199

192.168.10.1-> 192.168.8.1

192.168.10.1-> 192.168.8.199

1
flz