回答:
SNAT
ターゲットはそれをすべての発信パケットに適用するIPアドレスを与える必要があります。MASQUERADE
ターゲットは、あなたがそれにインタフェースを与えることができますし、どんなアドレスそのインターフェイス上にあるすべての発信パケットに適用されているアドレスです。さらに、を使用するSNAT
と、カーネルの接続追跡は、インターフェイスが停止して再起動したときにすべての接続を追跡します。同じことはMASQUERADE
ターゲットにも当てはまりません。
良いドキュメントには、Netfilterサイトとiptables
manページのHOWTOが含まれています。
-j SNAT
(グーグルでのリサイクル追跡とは対照的に)グリッチが発生すると思い-j MASQUERADE
ます。その場合、古い発信接続からの着信パケットがノードに送信され、そのTCPスタックが混乱することを想像できます。-j SNATの利点については、NATボックスが同じ外部IPアドレスで構成され、カーネルがRSTで応答する代わりに古い接続からパケットを転送し続けるとどうなりますか?
基本的に、POSTROUTINGチェーン内のnatテーブルで同じソースNAT SNAT
をMASQUERADE
実行します。
違い
MASQUERADE
--to-source
動的に割り当てられたIPで動作するように作成されているため、必要ありません
SNAT
静的IPでのみ動作するため、 --to-source
MASQUERADE
余分なオーバーヘッドがあり、ターゲットがパケットにヒットするSNAT
たびにMASQUERADE
、使用するIPアドレスをチェックする必要があるため、速度が遅くなります。
注:典型的な使用例MASQUERADE
:VPCのAWS EC2インスタンス、VPC CIDR(10.10.1.0/24など)内にプライベートIPがあります-たとえば10.10.1.100、通信するためにパブリックIPもありますインターネット(パブリックサブネットにあると想定)からプライベートIP 1:1 NAT。インスタンスの再起動後にパブリックIPが変更される場合があります(EIPでないMASQUERADE
場合)。この使用例では、より良いオプションです。
重要:MASQUERADE
静的IPでターゲットを使用することは可能ですが、余分なオーバーヘッドに注意してください。
参照資料