SNATとMasqueradeの実際の違いは何ですか?
ローカルネットワークでインターネット接続を共有するには、SNATまたはMasqueradeを選択する必要がありますか?
答え1
宛先には、SNAT
発信するすべてのパケットに適用するIPアドレスを指定する必要があります。宛先をMASQUERADE
使用すると、インターフェイスを提供でき、そのインターフェイスのすべてのアドレスは、発信するすべてのパケットに適用されるアドレスです。また、SNAT
カーネルの接続トレースを使用すると、インターフェイスが閉じて復元されたときにすべての接続を追跡します。これはターゲットの場合には該当しませんMASQUERADE
。
良い文書には以下が含まれます。NetfilterウェブサイトのHOWTOそしてiptables
マニュアルページ。
答え2
SNAT
そして、チェーン内のテーブルMASQUERADE
に対して同じソースNAT操作を実行します。nat
POSTROUTING
違い
MASQUERADE
するいいえ--to-source
動的に割り当てられたIPで使用するように設計されているため必須です。SNAT
働くただ静的IPを使用してください。だから必要です。--to-source
MASQUERADE
追加のオーバーヘッドがあり、宛先がパケットに遭遇するたびに使用するIPアドレスを確認する必要があるSNAT
ため、遅くなります。MASQUERADE
ノートMASQUERADE
:VPC CIDR内にプライベートIPを持つVPCのAWS EC2インスタンスの一般的なユースケース(パブリックサブネットにあると仮定10.10.1.0/24
) -10.10.1.100
インターネットと通信するために接続されたパブリックIPもあります。 )、プライベートIPはこれを介して1:1 NAT(AWSネットワークインフラストラクチャマジック)を実行します。パブリックIPは、インスタンスの電源を入れ直した後に変更されることがあります。このユースケースでは、EIP以外の場合は停止してから開始する方がMASQUERADE
良い選択です。
重要:静的IPを持つターゲットを使用できますが、追加のMASQUERADE
オーバーヘッドに注意してください。
引用する
答え3
短い答え: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