インターネット NAT Gateway は、Alibaba Cloud サービスのプライベート IP を変換して隠すことでセキュリティを向上させるネットワークアドレス変換 (NAT) サービスであり、IP がインターネットに公開されるのを防ぎます。
インターネット NAT Gateway を作成し、EIP (Elastic IP Address) を関連付けた後、次の操作を実行します。
ソースネットワークアドレス変換 (SNAT) を設定して、Elastic Compute Service (ECS) インスタンスがインターネットアクセスのために EIP を共有できるようにし、パブリック IP を節約します。
宛先ネットワークアドレス変換 (DNAT) を設定して、ECS インスタンスがポートまたは IP マッピングを通じてインターネット経由でサービスを提供できるようにします。
SNAT - インターネットへのアクセス | DNAT - インターネット経由でのサービスの提供 |
SNAT を使用したインターネットへのアクセス
インターネットアクセスのために各 ECS インスタンスに EIP を割り当てると、コストが高くなる可能性があります。SNAT を使用すると、インターネットアクセスが必要な ECS インスタンスが同じ EIP を共有できるようになります。インスタンスの IP アドレスをマスキングし、着信トラフィックを制限することで、費用を削減し、セキュリティを強化できます。
仕組み
次の例は、プライベート IP が 192.168.1.100 の ECS インスタンスがインターネットにアクセスする方法を示しています。
ルート転送: データパケットは、VPC ルートテーブルに基づいてインターネット NAT Gateway に送信されます。
SNAT: パケットを受信すると、NAT Gateway は SNAT ルールで定義されているように、送信元 IP アドレス 192.168.1.100 を関連付けられた EIP に変換します。追跡目的で、元の 5 タプル (プロトコル、送信元 IP、送信元ポート、宛先 IP、宛先ポート) と変換後の 5 タプル (プロトコル、EIP、外部送信元ポート、宛先 IP、宛先ポート) の両方をログに記録します。
インターネットへのアクセス: 変換された IP を持つデータパケットはインターネットに送信され、ECS インスタンスの内部 IP の代わりに EIP が送信元として表示されます。
インターネット上のターゲットサーバーが応答パケットを返すと、NAT Gateway はセッションマッピングテーブルを使用して元のプライベート IP を復元し、パケットを ECS インスタンスに転送します。
SNAT ルールの優先順位
SNAT が有効になるかどうかは、次のルールによって決まります。
VPC からインターネットへのアウトバウンドトラフィックが NAT Gateway に正しくルーティングされていることを確認します。宛先 CIDR へのルートエントリは、インターネット NAT Gateway を指している必要があります。
自動: VPC ルートテーブルに
0.0.0.0/0ルートが存在しない場合、最初のインターネット NAT Gateway を作成するときにシステムが自動的にこのルートを追加します。手動: カスタムルートテーブルを使用している場合、またはシステムルートテーブルにすでに
0.0.0.0/0ルートがある場合は、カスタムルートエントリを手動で追加または変更します。最小権限の原則に従い、アクセスする必要のある特定のパブリック CIDR に宛先 CIDR を設定します。詳細については、「ルートの優先順位」をご参照ください。重複するルートエントリがある場合、トラフィックは最長プレフィックス一致に基づいて転送されます。
Egress IP の優先順位: インスタンスに関連付けられた静的パブリック IP または EIP > DNAT IP マッピング (任意のポート) > SNAT エントリ内の EIP。ネットワークアーキテクチャを変更するには、「一元化された Egress IP」をご参照ください。
SNAT の優先順位: 送信元 CIDR ブロックが重複する場合、最長のマスクが優先されます。たとえば、ECS インスタンスの SNAT には、
/32マスクを持つ送信元 CIDR ブロックがあります。これは最長のマスクであり、最も高い優先順位を持ちます。
1. インターネット NAT Gateway の作成と EIP のアタッチ
インターネット NAT Gateway が機能するには、EIP が関連付けられている必要があります。インターネット NAT Gateway には最大 20 個の EIP を関連付けることができます。このクォータを増やすには、Quota Center ページに移動します。
2022 年 9 月 19 日以降、新しく作成されたインターネット NAT Gateway に EIP をバインドすると、ゲートウェイの vSwitch からプライベート IP が 1 つ使用されます。これは既存の NAT Gateway には影響しません。vSwitch に十分な利用可能なプライベート IP があることを確認してください。
コンソール
NAT Gateway - インターネット NAT Gateway 購入ページに移動します。
課金方法: 従量課金。
リージョン: インターネット NAT Gateway を作成するリージョンを選択します。
ネットワークとゾーン: インターネット NAT Gateway の VPC と vSwitch を選択します。これらの設定は、ゲートウェイの作成後に変更することはできません。
EIP: EIP をすでに作成しているかどうかに基づいてオプションを選択します。
EIP の選択: インスタンスに関連付けられていない EIP を選択します。
EIP の購入: 利用可能な EIP がない場合は、このオプションを選択します。デフォルトでは、トラフィック課金の BGP (マルチ ISP) EIP が作成されます。必要に応じて 最大帯域幅 を選択します。
BGP (マルチ ISP) Pro の EIP または異なる課金方法の EIP をアタッチするには、「EIP を申請」をご参照ください。作成時に [EIP の選択] を選択します。
後で設定: NAT Gateway はインターネットにアクセスできません。後で手動で EIP を関連付けます。
作成後、ターゲットのインターネット NAT Gateway の [EIP] 列を見つけ、[今すぐ関連付け] をクリックします。既存の EIP を選択するか、新しい EIP を購入してバインドすることができます。
API
CreateNatGateway を呼び出して、インターネット NAT Gateway を作成します。
ModifyNatGatewayAttribute を呼び出して、インターネット NAT Gateway の構成を変更します。
AssociateEipAddress を呼び出して、EIP を関連付けます。
2. SNAT エントリの設定
コンソール
NAT Gateway ページに移動します。ターゲットインスタンスの [アクション] 列にある SNAT の構成 をクリックし、SNAT エントリの作成 をクリックします。
SNAT エントリの粒度: SNAT ルールのスコープ。次のいずれかのスコープを選択します。
VPC の指定: SNAT ルールを介して、VPC 全体のすべての ECS インスタンスにインターネットアクセスを許可します。
最適な用途: 広範な制御で十分なシンプルな設定。
注意: 最も粒度の粗いオプションです。
VSwitch の指定: 選択した vSwitch 内の ECS インスタンスにのみインターネットアクセスを許可します。
最適な用途: vSwitch を使用してサービスを分離し、より厳格なアクセスの制御を行う環境。
注意: 複数の vSwitch を選択した場合、それぞれに個別の SNAT エントリが作成され、すべて同じ EIP を使用します。
ECS インスタンス/ENI の指定: 選択した ECS インスタンスまたは Elastic Network Interface (ENI) にのみインターネットアクセスを許可します。
最適な用途: 正確なアクセスの制御が必要なシナリオ。
注意: 複数のインスタンスの場合、構成に時間がかかることがあります。
カスタム CIDR ブロックの指定: 特定の CIDR ブロックにインターネットアクセスを許可します。
最適な用途: 複雑なネットワーク設計。
EIP の選択: ドロップダウンリストで EIP を選択します。
EIP を選択: 利用可能な EIP がない場合は、ドロップダウンリストの Elastic IP Address を新規購入して関連付ける をクリックし、プロンプトに従って新しい EIP を購入してバインドします。
複数の EIP を選択: SNAT ルールに複数の EIP を選択します。接続トラフィックは、ハッシュアルゴリズムを使用して選択された EIP に分散されます。トラフィックパターンはさまざまであるため、実際のトラフィックが EIP 間で均等に分散されない場合があります。1 つの EIP が帯域幅制限に達したときの中断を避けるために、選択したすべての EIP をインターネット共有帯域幅インスタンスに追加することをお勧めします。
EIP アフィニティ:
無効: 複数の EIP を選択した場合、宛先 IP アドレスにアクセスするプライベート IP アドレスが異なる EIP を使用する可能性があります。
有効: その接続には常に同じ EIP が使用されます。単一の宛先に対してあまりにも多くの同時接続が行われると、ポートが枯渇し、割り当てが失敗する可能性があります。詳細については、「失敗したポート割り当て」をご参照ください。
エントリが作成された後、[アクション] 列の [編集] をクリックして、EIP と EIP アフィニティの設定を変更します。
API
CreateSnatEntry を呼び出して、SNAT エントリを作成します。
ModifySnatEntry を呼び出して、指定された SNAT エントリを変更します。
3. ルートの設定
ECS インスタンスからインターネットへのトラフィックが NAT Gateway に正しくルーティングされるようにルートを設定します。
コンソール
VPC コンソール - ルートテーブル ページに移動します。上部のナビゲーションバーで、インターネット NAT Gateway がデプロイされているリージョンを選択します。ECS インスタンスが配置されている vSwitch に関連付けられているルートテーブルを見つけます。その ID をクリックして詳細ページを開きます。手動または自動の設定を選択します。
この VPC で最初のインターネット NAT Gateway を作成しており、ECS インスタンスの vSwitch がシステムルートテーブルにリンクされている場合、システムは宛先が
0.0.0.0/0で、ネクストホップが NAT Gateway のルートエントリを自動的に追加します。この場合、手動操作は不要です。VPC に
0.0.0.0/0ルートがすでに存在する場合、または vSwitch がカスタムルートテーブルに関連付けられている場合は、ルートテーブルに手動でルートを追加します。宛先 CIDR ブロックをアクセスする必要のある特定のパブリック CIDR ブロックに設定し、ネクストホップとして NAT Gateway を設定します。
API
CreateRouteEntry を呼び出して、単一のルートエントリを追加します
ModifyRouteEntry を呼び出して、ルートエントリのネクストホップを変更します。
ネットワーク接続の確認
ECS インスタンスにログオンし、次のコマンドを実行します。
# ECS インスタンスのセキュリティグループがインターネットへのアウトバウンドトラフィックを許可していることを確認します。
# インターネットへの接続をテストします。
ping www.aliyun.com
# 現在の Egress パブリック IP アドレスを表示します。これは NAT Gateway にアタッチされた EIP である必要があります。
curl ifconfig.meDNAT を使用したインターネット経由でのサービスの提供
ECS インスタンスがインターネットに Web サービスを提供する必要がある場合、EIP を割り当てるとすべてのポートが公開され、セキュリティリスクが増大します。代わりに、インターネット NAT Gateway の DNAT 機能を使用して、NAT Gateway の EIP からの特定のポートのみ、またはすべてのトラフィックを ECS インスタンスに転送します。プライベート IP アドレスは隠されたままです。開始する前に、ECS インスタンスに EIP がアタッチされていないことを確認してください。
仕組み
次の例は、プライベート IP アドレスが 192.168.1.100 の ECS インスタンスがインターネットにサービスを提供する方法を示しています。
ユーザーリクエスト: インターネット上のユーザーが、インターネット NAT Gateway に関連付けられた EIP にリクエストを送信します。
DNAT 変換: インターネット NAT Gateway はパケットを受信し、DNAT ルールを使用して、宛先 EIP を ECS インスタンスのプライベート IP に変換します。また、アドレスマッピングも記録します。
パケット転送: 変換されたパケットは ECS インスタンスに転送されます。
応答: ECS インスタンスが応答を送信すると、パケットはインターネット NAT Gateway にルーティングされます。ゲートウェイは、セッションマッピングテーブルを使用して、送信元 IP をプライベート IP から EIP に変換し直し、パケットをインターネット上のユーザーに送信します。
DNAT エントリの設定
このセクションでは、DNAT エントリの設定方法のみを説明します。NAT Gateway の作成、EIP の関連付け、およびルーティングの設定の詳細については、「サーバーがインターネットにアクセスできるようにする」をご参照ください。
コンソール
インターネット NAT Gateway ページに移動します。トップメニューバーで、インターネット NAT Gateway のリージョンを選択します。
インターネット NAT Gateway の [アクション] 列にある [DNAT の設定] をクリックし、[DNAT エントリの作成] をクリックします。
EIP の選択: インターネットユーザーがアクセスする EIP を選択します。DNAT と SNAT の両方のエントリに同じ EIP を使用できます。
プライベート IP アドレスの選択: サービスを提供するバックエンドサーバーのプライベート IP を選択します。ECS インスタンスまたは ENI を選択するか、手動で IP を入力できます。
ポート設定: DNAT マッピングを設定します。
任意のポート: IP マッピング。この EIP へのすべてのリクエストは宛先の ECS インスタンスに転送され、すべてのポートを占有します。
ECS インスタンスはこの EIP を使用してインターネットにアクセスできます。この EIP は、他の DNAT または SNAT エントリと同時に使用することはできません。
インターネット NAT Gateway に DNAT IP マッピングと SNAT エントリの両方が設定されている場合、ECS インスタンスからのトラフィックは、まず DNAT IP マッピングに割り当てられた EIP を使用します。
特定のポート: ポートマッピング。ポート (またはポート範囲) とプロトコルで EIP へのリクエストのみが、ECS インスタンスで設定されたポートに転送されます。[パブリックポート] (外部) と [プライベートポート] (内部)、および [プロトコルタイプ] を設定します。
ポートは 1 から 65535 の範囲でなければなりません。ポート範囲には、スラッシュ (/) を使用します (例:
10/20)。パブリックポートとプライベートポートの設定は一貫している必要があります。両方とも単一のポートであるか、同じ長さのポート範囲である必要があります。たとえば、[パブリックポート] を 10/20 に、[プライベートポート] を 80/90 に設定します。選択した EIP がすでに SNAT エントリで使用されており、
1024より大きいパブリックポートを設定する必要がある場合は、[ポート制限の削除] をクリックする必要があります。これは、デフォルトの SNAT ポート範囲が 1025 から 65535 であるためです。
重要ポートのオーバーライドは、アクティブな SNAT セッションに一時的な中断を引き起こす可能性があります。接続は再確立された後に回復します。注意して進めてください。
エントリが作成された後、エントリの [アクション] 列にある [編集] をクリックして、EIP、プライベート IP、およびポート設定を変更できます。
API
CreateForwardEntry を呼び出して、DNAT エントリを作成します。
ModifyForwardEntry を呼び出して、指定された DNAT エントリを変更します。
リソースの削除
インターネット NAT Gateway は、作成時からリリースされるまで、インスタンス料金と処理されたトラフィックに対する容量単位 (CU) 料金を含めて課金されます。不要なコストを避けるため、不要になったリソースは削除してください。次の手順に従います。
コンソール
エントリの削除: インスタンス詳細ページの SNAT の管理 タブと DNAT の管理 タブで、エントリを削除します。
EIP のデタッチとリリース: [関連付けられた EIP] タブで、EIP をデタッチします。デタッチされただけでリリースされていない EIP には引き続き課金されます。課金を停止するには、EIP コンソールで EIP をリリースする必要があります。
エントリが削除されていない場合は、[NAT の強制アンバインド] を選択できます。
インターネット NAT ゲートウェイを削除するには、インスタンスの [操作] 列で をクリックします。
EIP をデタッチしていないか、ルートエントリを削除していない場合は、削除 (NAT Gateway とリソースの削除) を選択します。すると、システムはインスタンスとそれに関連するリソースを削除します。
誤って削除するのを防ぐために、リリース保護を有効にすることができます。削除する前に、リリース保護を無効にする必要があります。
API
DeleteSnatEntry と DeleteForwardEntry を呼び出して、それぞれ SNAT エントリと DNAT エントリを削除します。
UnassociateEipAddress を呼び出して、EIP をデタッチします。
DeleteNatGateway を呼び出して、インターネット NAT Gateway を削除します。
本番稼働
ベストプラクティス
ネットワーク計画: Internet NAT ゲートウェイ専用の vSwitch を作成し、十分なプライベート IP アドレスを確保します。これにより、ゲートウェイに複数の EIP を関連付ける際の IP 枯渇を防ぐことができます。
きめ細かなコントロール: vSwitch または ECS インスタンスレベルで SNAT エントリを設定します。最小権限の原則に従い、インターネットアクセスを必要とするリソースにのみ付与します。
ディザスタリカバリ戦略
高可用性とディザスタリカバリ: Internet NAT ゲートウェイは、プライマリゾーンとバックアップゾーンにまたがるディザスタリカバリをサポートしており、バックアップは Alibaba Cloud によって選択されます。ゾーン間のフェールオーバーにより、サービスが最大 10 分間中断される場合があります。重大なアプリケーションの場合は、異なるゾーンに NAT ゲートウェイをデプロイし、アプリケーション層でトラフィックの再ルーティングとフェールオーバーを実装します。
EIP の冗長性: 複数の EIP を SNAT エントリに関連付けます。攻撃や障害によって 1 つの EIP が利用できなくなった場合、アウトバウンドトラフィックは自動的に他の利用可能な EIP に切り替わります。
リスク防止
セキュリティグループ: Internet NAT ゲートウェイはアドレス変換を実行しますが、バックエンドの ECS のセキュリティは、適切に設定されたセキュリティグループとネットワーク ACL に依存します。厳格なインバウンドルールを適用し、必要なポートのみを開いて露出を最小限に抑えます。
モニタリングとアラート: 同時接続数やインバウンド/アウトバウンド帯域幅など、NAT ゲートウェイの主要なメトリックに対してアラートを設定します。これらのメトリックをモニターして、容量制限に達する前にタイムリーなリソースのスケーリングを確保します。
接続制限: 決済ゲートウェイなどの単一のパブリックサービスへの多数の接続がサービスで必要な場合、SNAT エントリあたりのアウトバウンド接続は N × 55,000 に制限されます。N は設定された EIP の数です。十分な EIP を計画し、[ErrorPortAllocationCount] メトリックをモニターします。
ICMP echo reply: この機能はデフォルトで有効になっており、NAT ゲートウェイが ping コマンドに応答できるようにします。これは NAT ゲートウェイの正常性を確認するだけで、バックエンドサーバーのステータスは確認しません。バックエンドのモニタリングが必要な場合は、詳細ページで [ICMP Echo Reply] を無効にします。
ICMP ping リクエストは、DNAT が [Any Port] に設定されている場合にのみバックエンドサーバーに転送されます。
[Specific Port] マッピングの場合、ping プローブは失敗します。
telnet <EIP> <Public Port>を使用して、マッピングされたサービスポートをプローブします。
よくある質問
SNAT を設定した後、インターネットにアクセスできないのはなぜですか。
次の手順に従ってトラブルシューティングを行ってください。
ルート構成: インターネット NAT ゲートウェイの詳細ページで、[NAT ゲートウェイを指す VPC ルート] を表示し、インターネット NAT ゲートウェイを指すルートエントリが存在することを確認します。
SNAT エントリ構成: インターネット NAT ゲートウェイの SNAT の管理 タブで、SNAT エントリのステータスが [有効] であることを確認します。 インターネットへのアクセスに使用されるソースアドレスは、指定された [ソース CIDR ブロック] 内にある必要があります。
アクセスの制御: アクセスしようとしているパブリックエンドポイントにアクセスの制御ポリシーが設定されているか、または関連付けられている EIP がホワイトリストに追加されているかを確認します。
IPv4 ゲートウェイが設定されているかどうかの確認: IPv4 ゲートウェイと併用する場合、NAT ゲートウェイが NAT モードであり、ルーティングが正しく設定されていることを確認します。
インターネットアクセスがタイムアウトしたり、遅くなったりするのはなぜですか。
これは通常、次の理由によって発生します。
不十分な帯域幅: 関連付けられた EIP のモニタリングデータを表示し、帯域幅の使用状況を確認します。 使用率が 100% に近い場合は、帯域幅を増やすか、EIP を追加してインターネット共有帯域幅インスタンスに関連付けます。
接続制限を超えました: 1 つの宛先への同時接続数が制限を超えると、ポート割り当ての失敗により、システムは接続をドロップします。 ErrorPortAllocationCount メトリックを表示します。 この値が増加した場合は、SNAT に EIP を追加します。
1 つの宛先への同時接続数が制限を超えると、ポート割り当ての失敗により、システムは接続をドロップします。 ErrorPortAllocationCount メトリックを監視し、この値が増加した場合は、SNAT 構成に EIP を追加します。
詳細情報
課金
インターネット NAT Gateway はインスタンス料金と容量単位 (CU) 料金が発生します。 関連付けられた EIP は別途課金されます。
クォータ
クォータ名 | 説明 | デフォルトの制限 | クォータの引き上げ |
natgw_quota_nat_num_per_vpc | VPC で作成できる NAT Gateway の数 | 5 | [クォータ管理] または [Quota Center] に移動してクォータの引き上げをリクエストします。 |
natgw_quota_nat_ip_num_per_vpc_nat | 各 NAT Gateway にアタッチできる EIP の数 | 20 | |
natgw_quota_snat_entry_num | 各 NAT Gateway で作成できる SNAT エントリの数 | 40 | |
natgw_quota_dnat_entry_num | 各 NAT Gateway で作成できる DNAT エントリの数 | 100 |
> [削除]