NATゲートウェイはプライベートIPアドレスをパブリックIPアドレスに変換しインターネットとの通信を中継する機能です。プライベートサブネット上のEC2はパブリックIPアドレスを持たないため、インターネットに通信するために必要となります。
この記事では、前回構築したプライベートサブネット上のEC2がインターネットと通信できるようにするためにNATゲートウェイを構築していきます。
- プライベートサブネットからインターネットへリクエストする場合にNATゲートウェイが必要になる
- NATゲートウェイの構築方法
- NATゲートウェイの終了方法
NATゲートウェイは稼働時間と通信料の両方に課金されます。使用後すぐに終了させることで料金を抑えることが可能です。終了後はElastic IPの開放も忘れずに行う必要があります。
終了手順は本記事後半で解説します。
NATゲートウェイが必要になる場合
NATゲートウェイはプライべートサブネット内からインターネットにリクエストを出す場合に必要
結論から言うと、NATゲートウェイは『プライベートサブネット上からインターネットにリクエストを出す構成』に必要になります。
逆に、インターネットからリクエストを受ける場合はロードバランサを使います。
NATゲートウェイはインターネットからのリクエストは通しません。このため、プライベートサブネット内のEC2のセキュリティを確保しつつ、インターネットへのアクセスができるようになります。
インターネットからの要求を受けて外部サービスに要求を行うような場合はNATゲートウェイとロードバランサがどちらも必要になります。
NATゲートウェイはパブリックサブネットに配置する
NATゲートウェイは、インターネットと通信する関係上パブリックサブネットに配置します。各AZのプライベートサブネットのルートテーブルに対してNATゲートウェイへのルートを設定することにより、AZをまたいでリクエストを中継することが可能です。
また、上図ではNATゲートウェイが1台しかないためAZ1に障害が発生した場合にシステムが止まります。NATゲートウェイを複数AZに作成することで冗長性を確保することが望まれます。(予算次第)
NATゲートウェイを構築する手順
NATゲートウェイを構築する手順は以下の流れになります。
- NATゲートウェイをパブリックサブネットに作成する。
- プライベートサブネットのルートテーブルにNATゲートウェイへのルートを追加する。
前提
環境は前回の記事の通り、パブリックサブネット上とプライベートサブネット上にそれぞれEC2が1つずつある状態としてください。
今回の記事ではプライベートサブネット上のEC2からインターネットにアクセスできるようにします。(パブリックなEC2は踏み台サーバとして、プライベートEC2を操作する際に使用します。)
手順詳細
1.NATゲートウェイをパブリックサブネットに作成する。
- VPCダッシュボードより NATゲートウェイ を選択し、 NATゲートウェイを作成 ボタンをクリックする。
- NATゲートウェイの設定を入力し、 NATゲートウェイを作成 ボタンをクリックする。
サブネット
NATゲートウェイを配置するパブリックサブネットを選択します。接続タイプ
インターネットとの通信用なのでパブリックを選択します。
※プライベートはElasticIPが割り当てられないためインターネットとの通信ができません。
Elastic IP 割り当て ID
NATゲートウェイに割り当てるElastic IPを選択します。
※Elastic IPがない場合は Elastic IP を割り当て ボタンで自動でElastic IPの割り当てされます。
2.プライベートサブネットからNATゲートウェイへの通信経路(ルート)を作成する
- VPCダッシュボードより ルートテーブル を選択し ルートを編集 ボタンをクリックする。
- 全ての送信先アドレスをNATゲートウェイに流すようルートを追加する。
最後に 変更を保存 したらOKです。
3.確認
踏み台サーバー経由でプライベートEC2にSSH接続し、yum update などの外部へリクエストする系のコマンドが通ればOKです。
まとめと補足
NATゲートウェイを使用するために作成、修正が必要なものは以下の3つです。
- NATゲートウェイ
- Elastic IP
- ルートテーブル
手順では自動で割り当てさせましたが、NATゲートウェイにはElastic IPが必要となります。
Elastic IPは一つの固有のIPアドレスを保持し続ける機能です。通常割り当てられるパブリックIPアドレスはインスタンスを起動するたびに変わってしまいますが、Elastic IPを割り当てることで常に同じパブリックIPでアクセスできるようになります。
Elastic IPは稼働中のインスタンスに割り当てられている際は費用が掛かりませんが、割り当てられていない状態だと費用が掛かります。
NATゲートウェイを削除する手順
ここでは作成したNATゲートウェイを削除させる手順を解説します。
NATゲートウェイはElastic IPも使用しているため、NATゲートウェイ削除後にElastic IPの開放も必要となります。(開放しないと費用が掛かり続けます)
NATゲートウェイを削除する手順は以下の流れになります。
- NATゲートウェイを削除する。
- Elastic IPを開放する。
- プライベートサブネットのルートテーブルからNATゲートウェイへのルートを削除する。
手順詳細
1.NATゲートウェイを削除する。
- VPCダッシュボードより NATゲートウェイ を選択し、対象のNATゲートウェイを選択、 アクション より NATゲートウェイを削除 をクリックします。
2.Elastic IPを開放する。
- VPCダッシュボードより Elastic IP を選択し、対象のElastic IPを選択 アクションより Elastic IP アドレスを開放 をクリックします。
※NATゲートウェイは”Deleted”になる前はエラーになります。その場合はNATゲートウェイの削除まで待ってから作業してください。
3.プライベートサブネットのルートテーブルからNATゲートウェイへのルートを削除する。
作成時の手順より、プライベートサブネットのルートテーブルに追加したNATゲートウェイへのルートを削除してください。
まとめ
今回はNATゲートウェイの作成について解説しました。
NATゲートウェイは、プライベートサブネットから通信させたいAZ分、各パブリックサブネット上に設置する必要があります。このため費用が高額となる話をよく聞きます。インターネット上でも議論されていますが、NATゲートウェイが本当に必要か、状況に応じて構成の見直しを検討してください。
勉強中の身ですので、誤りや不備等ありましたらご指摘いただけますと幸いです。