初心者がハマるNATゲートウェイの落とし穴
- 1. 概要
- 2. NATゲートウェイの構築
— 2.1. EIPの作成
— 2.2. NATゲートウェイの作成
— 2.3. NATゲートウェイの冗長構成
— 2.4. ルートテーブルの編集 - 3. NATゲートウェイの制約
— 3.1. 帯域幅の制限
— 3.2. NATゲートウェイとセキュリティグループ
— 3.3. NATゲートウェイとIPv6使用環境
概要
- NAT(Network Address Translation)はIPアドレスを変換する技術であり、インターネットにアクセスする際、プライベートからパブリックのIPアドレス変換に使われ、知らぬ間に恩恵を受けていますね。
- 今回は多くの方が利用するAWSのNATゲートウェイについて、意外と知られていないハマるポイントを(自分の失敗談含めて)ご紹介します。
NATゲートウェイの構築
EIPの作成
- Elastic IP を作成し、NATゲートウェイが使用するパブリックIPアドレスを準備します。
NATゲートウェイの作成
- NATゲートウェイを作成する際は、インターネットゲートウェイと異なり、NATゲートウェイを配置するサブネットを指定します。ここでは、必ずパブリックのSubnetを指定します。NATゲートウェイの役割を理解していれば当然ですが、選択肢にプライベートのSubnetも表示されるため、誤って選択しないように注意が必要です。
NATゲートウェイの冗長構成
- 次に、NATゲートウェイをMulti-AZ構成とするため、異なるAZのSubnet側にもNATゲートウェイを配置します。ここも知らないとハマる注意事項となります。
- 以下は、Amazon Virtual Private Cloudユーザーガイドからの抜粋となります。
複数のアベイラビリティーゾーンにリソースがあって、リソース間で 1 つの NAT ゲートウェイを共有している場合、その NAT ゲートウェイが属するアベイラビリティーゾーンがダウンすると、その他のアベイラビリティーゾーンのリソースはインターネットにアクセスできなくなります。アベイラビリティーゾーンに依存しないアーキテクチャを作成するには、アベイラビリティーゾーン別に NAT ゲートウェイを作成し、同じアベイラビリティーゾーンに属する NAT ゲートウェイをリソースで使用するようにルーティングを設定します。
ルートテーブルの編集
- 最後に、プライベートSubnetのルートテーブルを編集し、デフォルトルート(0.0.0.0/0)のターゲットをNATゲートウェイとして登録します。異なるAZのSubnet側も忘れずにルートテーブルを編集します。
NATゲートウェイの制約
帯域幅の制限
- NAT ゲートウェイの帯域幅は、5 Gbps までのサポートです。また、ドキュメントには45 Gbps まで自動的に拡張するとの記載あり。
- これ以上必要な場合は、リソースを分割して複数のサブネットに配置し、サブネットごとに NAT ゲートウェイを作成することで、ワークロードを分散できます。
NATゲートウェイとセキュリティグループ
- NATゲートウェイにセキュリティグループは割り当てられません。NATゲートウェイを利用するプライベートのインスタンス側に割り当てます。
- NATゲートウェイの出入り口でコントロールが必要な場合は、ネットワーク ACLを利用する必要があります。
NATゲートウェイとIPv6使用環境
- NATゲートウェイは、IPv6には対応していません。IPv6使用環境でVPC からインターネットへの送信が必要な場合は、Egress-Only インターネットゲートウェイを使用します。
- Egress-Only インターネットゲートウェイの作成は、下記ドキュメントを参照ください。