NAT の概要

  • パブリックサブネットで起動されるネットワークアドレス変換 (NAT) デバイスは、プライベートサブネット内のインスタンスがインターネットに接続できるようにしますが、インターネットがインスタンスとの接続を開始できないようにします。
  • プライベートサブネットのインスタンスは、ソフトウェアの更新を実行したり、外部サービスにアクセスしようとするためのインターネット接続を必要とする
  • NAT デバイスは、アドレス変換とポートアドレス変換の両方の機能を実行します (PAT:Port Address Translation)
  • NAT インスタンスは、インスタンスがインターネットに直接公開され、パブリックサブネットで起動され、Elastic IP アドレスの割り当てが制限されることを防ぎます。
  • NAT デバイスは、プライベートサブネットからインターネットへのトラフィックをルーティングし、送信元 IP アドレスをアドレスおよび応答トラフィックに置き換えて、アドレスをインスタンスのプライベート IP アドレスに変換します。
  • AWS は2つの方法で NAT 構成が可能
    • NAT インスタンス
    • NAT ゲートウェイ, AWS によるマネージドサービス

NAT デバイス構成のキーポイント

  • パブリックサブネットで起動する必要がある
  • Elastic ip アドレス (またはパブリック IP アドレス) に関連付けられている必要がある
  • プライベートサブネット内のインスタンスからインターネットへのトラフィックをルーティングし、応答を返送するために、ソース/デスティネーション・フラグを無効にする必要があります。
  • セキュリティグループが関連付けられている必要があります。
    • プライベートサブネット内のインスタンスからの送信インターネットトラフィックを許可します。
    • どこからでも受信インターネットトラフィックを禁止する
  • プライベートサブネット内のインスタンスは、すべてのインターネットトラフィックを NAT デバイスに転送するようにルートテーブルを構成する必要があります。

NAT ゲートウェイ

NAT ゲートウェイは、可用性の向上、帯域幅の向上、管理作業の手間の削減を実現する AWS マネージド NAT サービスです。

  • NAT ゲートウェイは、最大 10 Gbps の帯域幅のバーストをサポートします。
  • 10 Gbps 以上のバースト要件では、リソースを複数のサブネットに分割し、各サブネットに NAT ゲートウェイを作成することで、ワークロードを分散することができます。
  • NAT ゲートウェイは、作成後に解除できない1つの Elastic IP アドレスに関連付けられています。
  • 各 NAT ゲートウェイは、特定のアベイラビリティーゾーンに作成され、そのゾーンに冗長性が実装されています。
  • NAT ゲートウェイは、次のプロトコル (TCP、UDP、および ICMP) をサポートします。
  • NAT ゲートウェイをセキュリティグループに関連付けることはできません。プライベートサブネット内のインスタンスに対してセキュリティを構成して、トラフィックを制御することができます。
  • ネットワーク ACL を使用して、サブネットとの間のトラフィックを制御できます。ネットワーク ACL は、ポート 1024 ~ 65535 を使用する NAT ゲートウェイのトラフィックに適用されます。
  • NAT ゲートウェイを作成すると、サブネットの IP アドレス範囲からプライベート IP アドレスが自動的に割り当てられるエラスティックネットワークインターフェイスが受信されます。このネットワークインターフェイスの属性は変更できません
  • NAT ゲートウェイは、VPC エンドポイント、VPN 接続、AWS ダイレクトコネクト、または VPC ピア接続経由でトラフィックを送信できません。プライベートサブネットのルートテーブルは、これらのデバイスに直接トラフィックをルーティングするように変更する必要があります。

NAT インスタンス

  • NAT インスタンスは、インターネットへのトラフィックをルーティングするように構成された Amazon Linux AMI を使用して作成できます。
  • それらは、同じ可用性と帯域幅を提供せず、アプリケーションのニーズに従って構成する必要があります。
  • NAT インスタンスには、プライベートサブネットから有効になる受信トラフィックに関連付けられたセキュリティグループと、インターネットに有効になっている送信トラフィックが必要です
  • NAT インスタンスは、ソースとトラフィックの宛先ではなく、単にゲートウェイとして機能するため、ソース送り先のチェック属性を無効にする必要があります。

高可用性 NAT インスタンス

高可用性NATインスタンス

  • アベイラビリティーゾーンごとに1つの NAT インスタンスを作成する
  • すべてのプライベートサブネットルートテーブルを同じゾーン NAT インスタンスに構成する
  • NAT の可用性に対するユーザーの自動スケーリング
  • 最小および最大サイズが1の NAT インスタンスごとのユーザー自動スケーリンググループ。そのため、NAT インスタンスが失敗した場合、自動スケーリングによって置換のインスタンスが自動的に起動されます
  • NAT インスタンスは、限られたダウンタイムで高可用性
  • 自動スケーリングを使用して NAT インスタンスの正常性と可用性を監視する
  • プログラムによってルートテーブルを更新するための、NAT インスタンスを使用したブートストラップスクリプト
  • ネットワークメトリックを注視し、NAT インスタンスタイプをネットワークパフォーマンスの高いものに垂直にスケーリングします。

ソース/デスティネーション・チェックの無効化

  • 各 EC2 インスタンスは、デフォルトでソース/デスティネーション・チェックを実行し、インスタンスは送信または受信するすべてのトラフィックのソースまたはデスティネーションである必要があります。
  • ただし、NAT インスタンスはインターネットとプライベートサブネット内のインスタンスの間のルーターとして機能するため、ソースまたはデスティネーションがそれ自体ではない場合は、トラフィックを送受信できる必要があります。
  • したがって、NAT インスタンスのソース/デスティネーションチェックは無効にする必要があります。

NAT ゲートウェイとインスタンスの比較

NAT インスタンスと NAT ゲートウェイの比較


AWS認定試験の練習問題

  • 質問はインターネットから収集され、答えは自分の知識と理解に基づいてマークされます(これはあなたと異なる場合があります)。
  • AWSサービスは毎日更新され、回答と質問はすぐに時代遅れになる可能性がありますので、それに応じて調査してください。
  • AWSのアップデートのペースを追うためにAWS試験の質問は更新されないため、基礎となる機能が変更されても質問が更新されないことがあります。
  • さらなるフィードバック、ディスカッション、修正を可能にします。
  1. パブリックサブネット内の NAT(ネットワークアドレス変換)デバイスとして機能するインスタンスを起動すると、NAT デバイスをプライベートサブネットのインターネット接続トラフィックのターゲットにするためにルートテーブルが変更されます。 プライベートサブネット内のインスタンスからインターネットへのアウトバウンド接続を試みると、成功しません。 問題を解決する次の手順はどれですか?
    1. 2番目のエラスティックネットワークインターフェイス (ENI) を NAT インスタンスにアタッチし、プライベートサブネットに配置する
    2. プライベートサブネット内のインスタンスへの Elastic IP アドレスのアタッチ
    3. プライベートサブネット内のインスタンスに2つ目のエラスティックネットワークインターフェイス (ENI) をアタッチし、パブリックサブネットに配置する
    4. NAT インスタンスのソース/デスティネーションチェック属性を無効にする
  2. パブリックサブネットで NAT AMI を手動で起動します。ネットワークが適切に設定されています。セキュリティグループとネットワークアクセス制御リストは、構成されたプロパティです。プライベートサブネット内のインスタンスは NAT にアクセスできます。 NAT はインターネットにアクセスできます。 ただし、プライベートインスタンスはインターネットにアクセスできません。プライベートインスタンスからのアクセスを許可するには、追加の手順は必要ですか?
    1. プライベートインスタンスでソース/デスティネーションチェックを有効にします。
    2. NAT インスタンスでソース/デスティネーションチェックを有効にします。
    3. プライベートインスタンスのソース/デスティネーションチェックを無効にする
    4. NAT インスタンスのソース/デスティネーションチェックを無効にする
  3. ユーザがパブリックサブネットとプライベートサブネットを持つ VPC を作成しました。 VPC の CIDR は 20.0.0.0/16 です。 プライベートサブネットは CIDR 20.0.1.0/24 を使用し、パブリックサブネットは CIDR 20.0.0.0/24 を使用します。 ユーザはパブリックサブネット(ポート80とプライベートサブネット(ポート3306)の DB サーバ)に Web サーバをホストする予定です。ユーザは
    NAT インスタンスのセキュリティグループを設定しています。 NAT セキュリティグループに必要ですか?

    1. インバウンド許可 ソース: 20.0.1.0/24(ポート80)
    2. アウトバウンド許可 宛先: 0.0.0.0/0(ポート80)
    3. インバウンド許可 ソース: 20.0.0.0/24(ポート80) (参照 NATSG)
    4. アウトバウンド許可 宛先: 0.0.0.0/0(ポート443)
  4. ウェブ企業は、VPC に配備された可用性の高いアプリケーションに外部支払いサービスを実装しようとしています。 彼らのアプリケーション EC2 のインスタンスは、一般向けの ELB の背後にあります。 自動スケーリングは、トラフィックが増加するにつれてインスタンスを追加するために使用されます。 通常の負荷では、アプリケーションは自動スケーリンググループで2つのインスタンスを実行しますが、ピーク時には3倍に拡大できます。 アプリケーションインスタンスは、インターネット上の支払いサービスと通信する必要があります。これは、通信に使用されるすべてのパブリック IP アドレスのホワイトリストを必要とします。 一度に許可されるホワイトリスト IP アドレスは最大4つあり、API 経由で追加できます。 彼らはどのようにしてソリューションを設計すべきですか?
    1. 2つの NAT インスタンスを使用して支払い要求をルーティングし、高可用性を実現し、NAT インスタンスに接続された Elastic IP アドレスをホワイトリストします。
    2. インターネットゲートウェイを介して VPC インターネットゲートウェイパブリック IP とルート支払要求をホワイトリストにします。(インターネットゲートウェイはトラフィックをルーティングするだけです)
    3. ELB IP アドレスをホワイトリストにし、ELB を通じてアプリケーションサーバーからの支払い要求をルーティングします。(ELB は固定 IP アドレスを持っていません)
    4. 自動スケーリンググループ内のアプリケーションインスタンスにパブリック IP アドレスを自動的に割り当て、各インスタンスのパブリック IP アドレスを支払検証ホワイトリスト API に追加するスクリプトを起動時に実行します。(許可されている4つの IP アドレスを超えます)

Jayendra’s Blog

この記事は自己学習用に「AWS VPC NAT – NAT Gateway – Certification(Jayendra’s Blogより)」を日本語に訳した記事です。