web-dev-qa-db-ja.com

iptables MASQUERADEは着信側でどのように機能しますか?

私はまだiptablesのマニュアルページやその他のドキュメントを読んでいて、質問とその回答を掘り下げています。

これが発生する問題です。 NATを設定するときは、次のようなPOSTROUTINGルールを使用します。

iptables -A POSTROUTING -t nat -j MASQUERADE -o eth0 

パケットがこのチェーンに到達すると、内部ホストがインターネットとの接続を初期化する必要があるようです。着信トラフィックは、チェーンにぶつかることなく同じパスを経由しますか?私はこれで正しいですか?

5
sandun dhammika

POSTROUTINGチェーンは、ローカルで生成されたパケットも含め、システムを離れるすべてのパケットについてチェックされます(PREROUTINGを省略し、代わりにOUTPUTを使用します)。

ルールは、eth0を介して送信されるトラフィックに制限されています。 「着信」とは、ルーティングされるすべてのトラフィックです(これをPOSTROUTINGに関連付けた場合)。あなたはおそらくインターネットからのトラフィックを意味します(eth0)。通常、eth0に着信するトラフィックは、eth0を介してシステムを離れることはありません。

POSTROUTINGは、発信トラフィックのみ(および接続の最初のパケットのみ)に影響します。応答がeth0に到着すると、SNAT接続の一部として認識され、宛先アドレス(およびポート)は自動的に元の値(MASQUERADEターゲットによって上書きされた値)に変換されます。

4
Hauke Laging

Iptablesでは、接続の最初のパケットのみがnatテーブルのチェーンにヒットします(これは他のテーブルのチェーンとは異なります)。既存の接続に関連するパケットは、最初のパケットが処理されたときに確立されたマッピングに基づいて自動的に変換されます。

既存の接続と一致せず、NATテーブルのルールと一致しない着信パケットが到着した場合、NAT(NAT $ ===)なしで処理されます。他のテーブルの宛先IPおよびiptablesルールに応じて、転送、ローカルでのプロトコルスタックの受け渡し、またはドロップが含まれる場合があります。

2
plugwash