web-dev-qa-db-ja.com

SNATとマスカレードの違い

SNATとマスカレードの実際の違いは何ですか?

ローカルネットワークでインターネット接続を共有する場合、SNATとマスカレードのどちらを選択する必要がありますか?

40
Chankey Pathak

SNATターゲットでは、すべての発信パケットに適用するIPアドレスを指定する必要があります。 MASQUERADEターゲットを使用すると、インターフェースを指定できます。そのインターフェース上にあるアドレスはすべて、すべての発信パケットに適用されるアドレスです。さらに、SNATを使用すると、カーネルの接続追跡は、インターフェイスがダウンして再起動したときにすべての接続を追跡します。同じことはMASQUERADEターゲットには当てはまりません。

良いドキュメントには NetfilterサイトのHOWTOiptables manページ が含まれます。

41
Shawn J. Goff

基本的にSNATMASQUERADEは同じソースを実行します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ターゲットを使用することも可能ですが、余分なオーバーヘッドに注意してください。

参考文献

21
Terry Wang

短い答え: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
0
Rebroad