Amazon Virtual Private Cloud (Amazon VPC) で管理されている VPC に AWS Site-to-Site VPN の接続をしています。相互接続された複数のサイトの IP アドレス範囲が重複していたり、同一であったりするため、Site-to-Site VPN 接続に NAT を設定したいと考えています。
簡単な説明
AWS VPN には、VPN トラフィックに NAT を適用するマネージドオプションはありません。
NAT を VPN トラフィックに適用するには、次のいずれかの操作を行います。
次の解決策における設定例では、2 つの VPC を使用しています。1 つ目は AWS マネージド VPN で、2 つ目はカスタマーゲートウェイとして使用できるソフトウェアベースの VPN ソリューションです。
重要: IP アドレスの重複の問題を解決するには、送信元 NAT と宛先 NAT の両方に対応するソリューションが必要です。プライベート NAT ゲートウェイは送信元 IP アドレス NAT を実行できますが、送信元 NAT と宛先 NAT の両方を実行することはできません。ただし、NAT インスタンス は送信元と送信先の NAT を同時に処理できます。
解決策
VPN トラフィックを許可
VPN トラフィックを許可するように VPC ルートテーブル、セキュリティグループ、ネットワークアクセスコントロールリスト (ネットワーク ACL) を設定します。
次の手順を実行します。
- ルートテーブルで、ネットワークトラフィックを宛先ネットワークに転送するルートを作成します。エラスティックネットワークインターフェイスをソフトウェアベースの EC2 Linux インスタンスの宛先として設定します。
- ルートテーブルに、宛先がインターネットゲートウェイのデフォルトルートがあることを確認します。
- インバウンドトラフィックを許可するようにインスタンスのセキュリティグループルールを変更します。ポート 500 (ISAKMP) および 4500 (IPsec NAT トラバーサル) で UDP パケットを使用してください。
- 送信元/宛先チェックをオフにして、インスタンスが VPN のサブネット間で IP アドレスパケットを転送できるようにします。
VPN 接続を設定する
- 関連するソリューションの Site-to-Site VPN 接続をまだ設定していない場合は、設定します。Site-to-Site VPN のサンプル設定ファイルをダウンロードできます。
- ディストリビューションのパッケージマネージャーを使用して、EC2 Linux インスタンスに VPN ソリューションをインストールします。
**注:**StrongSwan を VPN ソリューションとして使用するには、GitHub ウェブサイトの「vpn-gateway-strongswan」を参照してください。
iptables ルールを設定する
ソース NAT 用に iptables を設定するには、次の sudo iptables コマンドを実行します。
sudo iptables -t nat -A POSTROUTING -d your_destination_address_or_CIDR -j SNAT --to-source your_IP_address
注: your_destination_address_or_CIDR を宛先アドレスか CIDR に、your_IP_address を自分の IP address に置き換えます。
宛先 NAT に対して、次の sudo iptables コマンドを実行します。
sudo iptables -t nat -A PREROUTING -j DNAT --to-destination your_IP_address
注: your_IP_address を自分の IP アドレスに置き換えます。
実行中の iptables 設定をファイルに保存するには、次の sudo iptables-save コマンドを実行します。
sudo iptables-save > /etc/iptables.conf
起動時に iptables の設定を読み込むには、exit 0 ステートメントの前に /etc/rc.local に次の行を入力します。
sudo iptables-restore < /etc/iptables.conf
オプションで、Site-to-Site VPN 接続をテストできます。