回答:
SNATターゲットはそれをすべての発信パケットに適用するIPアドレスを与える必要があります。MASQUERADEターゲットは、あなたがそれにインタフェースを与えることができますし、どんなアドレスそのインターフェイス上にあるすべての発信パケットに適用されているアドレスです。さらに、を使用するSNATと、カーネルの接続追跡は、インターフェイスが停止して再起動したときにすべての接続を追跡します。同じことはMASQUERADEターゲットにも当てはまりません。
良いドキュメントには、Netfilterサイトとiptablesmanページの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でターゲットを使用することは可能ですが、余分なオーバーヘッドに注意してください。
参照資料