
なぜSNAT
(ソースIPおよび/またはポート変更)nat
テーブルチェーンでPOSTROUTING
、つまりルーティング後に発生するのですか?チェーンDNAT
で(ターゲットIPまたはポートの修正)がなぜ発生するのですか?PREROUTING
私は、後者が異なるプライベートネットワークを持つPCに複数のNICを持つ可能性があり、ターゲットIPアドレスがまだパブリックにルーティング可能なアドレスである場合、PCがパケットをルーティングする方法がわからないためだと思います。しかし、SNAT
これが起こり得ない理由がないからですPREROUTING
。
答え1
PREROUTING
私は図に示すように、ローカルコンピュータから出てくるすべてがテーブルを通過しないと確信しています。この素晴らしいASCII番号から。
答え2
一般に、SNATの主な基準は、「与えられたインターフェイス外のトラフィック」(例:)-o eth0
です。パケットが送信されるインターフェイスはルーティングによって決定されるため、標準を適用するにはPOSTROUTING
コンテキストで実行する必要があります。
DNAT はパケットの宛先アドレスを書き換えます。これはパケットの宛先に影響を与えることを意味します。たとえば、ゲートウェイに向かうように見えるパケットが最終的に書き換えられ、ネットワーク上のコンピュータに向けられます。パケットが実際に必要な場所に移動することを決定するときに、パスが書き換えられた宛先を考慮できるようにしたいので、DNATはコンテキストで実行する必要がありますPREROUTING
。
答え3
チェーン名が示すように、PREROUTING
パケットが受信されると最初に完了するため、パケットが行く場所(目的地)に基づいてルーティングされます。他のすべてのルーティングルールが適用された後、POSTROUTING
チェーンはソース(ソース)に基づいてどこに行くかを決定します。
たとえば、私のサーバーで転送される(NATed)受信ポートはすべてチェーンで定義PREROUTING
されてDNAT
おり、NATedインターフェイスのすべてのパケットはチェーンを通過するため(この場合)、フィルタチェーンを通過します。POSTROUTING
SNAT
FORWARD
答え4
Linuxでパケット操作を実行する場合、チェーンの観点から一般的なパスは、パケットパスの最初のチェーンPREROUTINGと最後のチェーンPOSTROUTINGです。ルータには、特定のフローに対するIPsec VPNトンネルの選択など、いくつかの変換を含む多くの設定があることがよくあります。一般に、SNATの目的は、パブリックネットワークに接続されているホストが接続できるアドレスにパケットを送信することです。これらの変更は、IP アドレスの混在を防ぐために、OUTPUT より前の POSTROUTING レベルでルータを離れようとすると、パケットに適用されます。同様に、反対方向でルーターが最初に期待するのは、パケットがスタックを通過するときに構成に基づいて決定を適用するために実際のフローを確認することです。これは、最も早い段階、つまりPREROUTINGでDNATを実行する場合にのみ達成できます。