SNATとマスカレードの実際の違いは何ですか?
ローカルネットワークでインターネット接続を共有する場合、SNATとマスカレードのどちらを選択する必要がありますか?
SNAT
ターゲットでは、すべての発信パケットに適用するIPアドレスを指定する必要があります。 MASQUERADE
ターゲットを使用すると、インターフェースを指定できます。そのインターフェース上にあるアドレスはすべて、すべての発信パケットに適用されるアドレスです。さらに、SNAT
を使用すると、カーネルの接続追跡は、インターフェイスがダウンして再起動したときにすべての接続を追跡します。同じことはMASQUERADE
ターゲットには当てはまりません。
良いドキュメントには NetfilterサイトのHOWTO と iptables
manページ が含まれます。
基本的にSNAT
とMASQUERADE
は同じソースを実行しますNAT POSTROUTINGチェーン内のnatテーブル内のものです。
違い
MASQUERADE
は必要ありません--to-source
動的に割り当てられたIPで動作するように作成されたため
SNAT
は静的IPでのみ機能するため、--to-source
MASQUERADE
には余分なオーバーヘッドがあり、SNAT
よりも低速です。これは、MASQUERADE
ターゲットがパケットにヒットするたびに、使用するIPアドレスを確認する必要があるためです。
[〜#〜]注[〜#〜]:MASQUERADE
の一般的な使用例:VPC内のAWS EC2インスタンス、それVPC CIDR内にプライベートIP(10.10.1.0/24など)-10.10.1.100などがあります。また、インターネットと通信するためにパブリックIPも持っています(パブリックサブネットにあると想定)。 1:1 NAT。パブリックIPは、インスタンスの再起動後に変更される可能性があります(EIPでない場合)。この使用例ではMASQUERADE
がより良いオプションです。
重要:静的IPでMASQUERADE
ターゲットを使用することも可能ですが、余分なオーバーヘッドに注意してください。
参考文献
短い答え:SNATを使用する
説明:raspbianルーター(インターフェースIPアドレスが192.168.8.2で静的であるeth0を介して別のルーターと通信する)のマスカレードルールを削除しようとしたところ、インターネット共有は機能し続けました。私が試したコマンドは:-
iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.8.2