NAT ゲートウェイ リソースを使用した仮想ネットワークの設計Designing virtual networks with NAT gateway resources

NAT ゲートウェイ リソースは、Virtual Network NAT の構成要素であり、仮想ネットワークの 1 つまたは複数のサブネットに対してアウトバウンド インターネット接続を提供します。NAT gateway resources are part of Virtual Network NAT and provide outbound Internet connectivity for one or more subnets of a virtual network. どの NAT ゲートウェイを使用するかは、仮想ネットワークのサブネットで指定します。The subnet of the virtual network states which NAT gateway will be used. NAT は、サブネットの送信元ネットワーク アドレス変換 (SNAT) を行う役割を果たします。NAT provides source network address translation (SNAT) for a subnet. 仮想マシンがアウトバウンド フローを作成するときに使用される静的 IP アドレスは、NAT ゲートウェイ リソースによって指定されます。NAT gateway resources specify which static IP addresses virtual machines use when creating outbound flows. 静的 IP アドレスは、パブリック IP アドレス リソースかパブリック IP プレフィックス リソース、またはその両方から得られます。Static IP addresses come from public IP address resources, public IP prefix resources, or both. パブリック IP プレフィックス リソースが使用されている場合は、パブリック IP プレフィックス リソース全体のすべての IP アドレスが NAT ゲートウェイ リソースによって使用されます。If a public IP prefix resource is used, all IP addresses of the entire public IP prefix resource are consumed by a NAT gateway resource. NAT ゲートウェイ リソースは、どちらの側からも合計で最大 16 個の静的 IP アドレスを使用できます。A NAT gateway resource can use a total of up to 16 static IP addresses from either.

Figure depicts a NAT gateway resource that consumes all IP addresses for a public IP prefix and directs that traffic to and from two subnets of virtual machines and a virtual machine scale set.

図:インターネットへのアウトバウンド接続のための Virtual Network NATFigure: Virtual Network NAT for outbound to Internet

NAT をデプロイする方法How to deploy NAT

NAT ゲートウェイは簡単に構成、使用できるように意図されています。Configuring and using NAT gateway is intentionally made simple:

NAT ゲートウェイ リソース:NAT gateway resource:

  • リージョン単位またはゾーン単位 (ゾーン分離) の NAT ゲートウェイ リソースを作成する。Create regional or zonal (zone-isolated) NAT gateway resource,
  • パブリック IP アドレスを割り当てる。Assign IP addresses,
  • 必要に応じて、TCP アイドル タイムアウトを変更する (省略可)。If necessary, modify TCP idle timeout (optional). 既定値を変更する前にタイマーを確認してください。Review timers before you change the default.

Virtual Network:Virtual network:

  • NAT ゲートウェイを使用するように仮想ネットワーク サブネットを構成する。Configure virtual network subnet to use a NAT gateway.

ユーザー定義ルートは必要ありません。User-defined routes aren't necessary.

リソースResource

以下に示した Azure Resource Manager のテンプレートに似た形式の例を見るとわかるように、リソースはシンプルになるよう設計されています。The resource is designed to be simple as you can see from the following Azure Resource Manager example in a template-like format. ここでこのテンプレートに似た形式を紹介するのは、概念と構造を図示するためです。This template-like format is shown here to illustrate the concepts and structure. この例には、必要に応じて変更を加えてください。Modify the example for your needs. このドキュメントは、チュートリアルとしての利用を意図したものではありません。This document isn't intended as a tutorial.

次の図は、異なる Azure Resource Manager リソース間で書き換え可能な参照を示しています。The following diagram shows the writeable references between the different Azure Resource Manager resources. 矢印は、書き換え可能なポイントを起点とする参照の方向を示しています。The arrow indicates the direction of the reference, originating from where it's writeable. 確認Review

Figure depicts a NAT receiving traffic from internal subnets and directing it to a public IP and an IP prefix.

図:Virtual Network NAT のオブジェクト モデルFigure: Virtual Network NAT object model

プールベースの Load Balancer のアウトバウンド接続にはっきりと依存している場合を除き、NAT は、ほとんどのワークロードで推奨されます。NAT is recommended for most workloads unless you have a specific dependency on pool-based Load Balancer outbound connectivity.

Standard Load Balancer のシナリオ (アウトバウンド規則を含む) から、NAT ゲートウェイに移行することができます。You can migrate from standard load balancer scenarios, including outbound rules, to NAT gateway. 移行するには、パブリック IP リソースとパブリック IP プレフィックス リソースをロード バランサーのフロントエンドから NAT ゲートウェイに移します。To migrate, move the public ip and public ip prefix resources from load balancer frontends to NAT gateway. NAT ゲートウェイのための新しい IP アドレスは必要ありません。New IP addresses for NAT gateway aren't required. Standard のパブリック IP アドレス リソースとパブリック IP プレフィックス リソースは、IP アドレスの総数が 16 を超えない限り、再利用することができます。Standard public IP address resources and public IP prefix resource can be reused as long as the total doesn't exceed 16 IP addresses. 移行を計画するにあたっては、切り替えの過程で生じるサービスの中断を考慮してください。Plan for migration with service interruption in mind during the transition. プロセスを自動化することによって、中断は最小化することができます。You can minimize the interruption by automating the process. まずステージング環境で移行をテストしてください。Test the migration in a staging environment first. インバウンド方向のフローに対しては、切り替え時の影響はありません。During the transition, inbound originated flows aren't affected.

次の例は、Azure Resource Manager テンプレートのスニペットです。The following example is a snippet from an Azure Resource Manager template. このテンプレートでは、NAT ゲートウェイなど、いくつかのリソースをデプロイします。This template deploys several resources, including a NAT gateway. この例では、テンプレートに次のパラメーターがあります。The template has the following parameters in this example:

  • natgatewayname - NAT ゲートウェイの名前。natgatewayname - Name of the NAT gateway.
  • location - リソースが配置されている Azure リージョン。location - Azure region where resource is located.
  • publicipname - NAT ゲートウェイに関連付けられているアウトバウンド パブリック IP の名前。publicipname - Name of the outbound public IP associated with the NAT gateway.
  • vnetname - 仮想ネットワークの名前。vnetname - Name of the virtual network.
  • subnetname - NAT ゲートウェイに関連付けられているサブネットの名前。subnetname - Name of the subnet associated with the NAT gateway.

すべての IP アドレスとプレフィックス リソースによって提供される IP アドレスの総数が、16 個を超えることはできません。The total number of IP addresses provided by all IP address and prefix resources can't exceed 16 IP addresses total. IP アドレスの数は、1 から 16 の範囲内であれば、いくつでもかまいません。Any number of IP addresses between 1 and 16 is allowed.

{
  "type": "Microsoft.Network/natGateways",
  "apiVersion": "2019-11-01",
  "name": "[parameters('natgatewayname')]",
  "location": "[parameters('location')]",
  "dependsOn": [
    "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicipname'))]"
  ],
  "sku": {
    "name": "Standard"
  },
  "properties": {
    "idleTimeoutInMinutes": 4,
    "publicIpAddresses": "[if(not(empty(parameters('publicipdns'))), variables('publicIpAddresses'), json('null'))]"
  }
},

作成された NAT ゲートウェイ リソースは、仮想ネットワークの 1 つまたは複数のサブネット上で使用することができます。When the NAT gateway resource has been created, it can be used on one or more subnets of a virtual network. その NAT ゲートウェイ リソースをどのサブネットで使用するかを指定してください。Specify which subnets use this NAT gateway resource. 1 つの NAT ゲートウェイを複数の仮想ネットワークにまたがって適用することはできません。A NAT gateway isn't able to span more than one virtual network. 仮想ネットワークのすべてのサブネットに同じ NAT ゲートウェイを割り当てる必要はありません。It isn't required to assign the same NAT gateway to all subnets of a virtual network. サブネットは、それぞれ異なる NAT ゲートウェイ リソースを使用して構成できます。Individual subnets can be configured with different NAT gateway resources.

可用性ゾーンを使用しないシナリオは、リージョン単位の運用となります (ゾーン指定なし)。Scenarios that don't use availability zones will be regional (no zone specified). 可用性ゾーンを使用する場合は、ゾーンを指定することで、NAT を特定のゾーンに分離することができます。If you're using availability zones, you can specify a zone to isolate NAT to a specific zone. ゾーンの冗長性はサポートされません。Zone-redundancy isn't supported. NAT の可用性ゾーンについて、再確認してください。Review NAT availability zones.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vnetname": {
      "defaultValue": "myVnet",
      "type": "String",
      "metadata": {
        "description": "Name of the virtual network"
      }
    },
    "subnetname": {
      "defaultValue": "mySubnet",
      "type": "String",
      "metadata": {
        "description": "Name of the subnet for virtual network"
      }
    },
    "vnetaddressspace": {
      "defaultValue": "192.168.0.0/16",
      "type": "String",
      "metadata": {
        "description": "Address space for virtual network"
      }
    },
    "vnetsubnetprefix": {
      "defaultValue": "192.168.0.0/24",
      "type": "String",
      "metadata": {
        "description": "Subnet prefix for virtual network"
      }
    },
    "natgatewayname": {
      "defaultValue": "myNATgateway",
      "type": "String",
      "metadata": {
        "description": "Name of the NAT gateway resource"
      }
    },
    "publicipdns": {
      "defaultValue": "[concat('gw-', uniqueString(resourceGroup().id))]",
      "type": "String",
      "metadata": {
        "description": "dns of the public ip address, leave blank for no dns"
      }
    },
    "location": {
      "defaultValue": "[resourceGroup().location]",
      "type": "String",
      "metadata": {
        "description": "Location of resources"
      }
    }
  },
  "variables": {
    "publicIpName": "[concat(parameters('natgatewayname'), 'ip')]",
    "publicIpAddresses": [
      {
        "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicipname'))]"
      }
    ]
  },
  "resources": [
    {
      "type": "Microsoft.Network/publicIPAddresses",
      "apiVersion": "2019-11-01",
      "name": "[variables('publicIpName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard"
      },
      "properties": {
        "publicIPAddressVersion": "IPv4",
        "publicIPAllocationMethod": "Static",
        "idleTimeoutInMinutes": 4,
        "dnsSettings": {
          "domainNameLabel": "[parameters('publicipdns')]"
        }
      }
    },
    {
      "type": "Microsoft.Network/natGateways",
      "apiVersion": "2019-11-01",
      "name": "[parameters('natgatewayname')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicipname'))]"
      ],
      "sku": {
        "name": "Standard"
      },
      "properties": {
        "idleTimeoutInMinutes": 4,
        "publicIpAddresses": "[if(not(empty(parameters('publicipdns'))), variables('publicIpAddresses'), json('null'))]"
      }
    },
    {
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2019-11-01",
      "name": "[parameters('vnetname')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Network/natGateways', parameters('natgatewayname'))]"
      ],
      "properties": {
        "addressSpace": {
          "addressPrefixes": [
            "[parameters('vnetaddressspace')]"
          ]
        },
        "subnets": [
          {
            "name": "[parameters('subnetname')]",
            "properties": {
              "addressPrefix": "[parameters('vnetsubnetprefix')]",
              "natGateway": {
                "id": "[resourceId('Microsoft.Network/natGateways', parameters('natgatewayname'))]"
              },
              "privateEndpointNetworkPolicies": "Enabled",
              "privateLinkServiceNetworkPolicies": "Enabled"
            }
          }
        ],
        "enableDdosProtection": false,
        "enableVmProtection": false
      }
    },
    {
      "type": "Microsoft.Network/virtualNetworks/subnets",
      "apiVersion": "2019-11-01",
      "name": "[concat(parameters('vnetname'), '/mySubnet')]",
      "dependsOn": [
        "[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetname'))]",
        "[resourceId('Microsoft.Network/natGateways', parameters('natgatewayname'))]"
      ],
      "properties": {
        "addressPrefix": "[parameters('vnetsubnetprefix')]",
        "natGateway": {
          "id": "[resourceId('Microsoft.Network/natGateways', parameters('natgatewayname'))]"
        },
        "privateEndpointNetworkPolicies": "Enabled",
        "privateLinkServiceNetworkPolicies": "Enabled"
      }
    }
  ]
}

NAT ゲートウェイは、仮想ネットワーク内のサブネットのプロパティを使用して定義します。NAT gateways are defined with a property on a subnet within a virtual network. 仮想マシンによって仮想ネットワーク vnetname のサブネット subnetname 上で作成されたフローに、NAT ゲートウェイが使用されます。Flows created by virtual machines on subnet subnetname of virtual network vnetname will use the NAT gateway. すべてのアウトバウンド接続には、natgatewayname に関連付けられた IP アドレスが発信元 IP アドレスとして使用されます。All outbound connectivity will use the IP addresses associated with natgatewayname as the source IP address.

この例で使用される Azure Resource Manager テンプレートの詳細については、次を参照してください。For more information on the Azure Resource Manager template used in this example, see:

設計ガイダンスDesign Guidance

NAT を使用した仮想ネットワークの設計に関する考慮事項をよく理解するために、次のセクションを振り返ってみましょう。Review this section to familiarize yourself with considerations for designing virtual networks with NAT.

  1. コストの最適化Cost optimization
  2. インバウンドとアウトバウンドの共存Coexistence of inbound and outbound
  3. Basic リソースの管理Managing Basic resources
  4. 可用性ゾーンAvailability Zones

コストの最適化Cost optimization

サービス エンドポイントPrivate Link は、コストを最適化するために検討するオプションです。Service endpoints and private link are options to consider for optimizing cost. これらのサービスに NAT は必要ありません。NAT isn't needed for these services. サービス エンドポイントまたは Private Link に送信されたトラフィックは、仮想ネットワークの NAT では処理されません。Traffic directed to service endpoints or private link is not processed by the virtual network's NAT.

サービス エンドポイントは、ご利用の仮想ネットワークに Azure サービス リソースを関連付けると共に、Azure サービス リソースへのアクセスを制御します。Service endpoints tie Azure service resources to your virtual network and control access to your Azure service resources. たとえば Azure Storage にアクセスするときは、Storage のサービス エンドポイントを使用することで、データ処理量に対する NAT の課金を回避することができます。For example, when you access Azure storage, use a service endpoint for storage to avoid data processed NAT charges. サービス エンドポイントは無料です。Service endpoints are free.

Private Link は、Azure PaaS サービス (または Private Link を使用してホストされるその他のサービス) を仮想ネットワーク内のプライベート エンドポイントとして公開するものです。Private link exposes Azure PaaS service (or other services hosted with private link) as a private endpoint inside a virtual network. Private Link は時間とデータ処理量に基づいて課金されます。Private link is billed based on duration and data processed.

これらのアプローチのどちらか一方または両方がご自分のシナリオに適しているかどうかを評価したうえで、必要に応じてご利用ください。Evaluate if either or both of these approaches are a good fit for your scenario and use as needed.

インバウンドとアウトバウンドの共存Coexistence of inbound and outbound

NAT ゲートウェイは、次の機能と共に利用することができます。NAT gateway is compatible with:

  • Standard Load BalancerStandard load balancer
  • Standard パブリック IPStandard public IP
  • Standard パブリック IP プレフィックスStandard public IP prefix

新しいデプロイを開発する際は、Standard SKU から始めるようにしてください。When developing a new deployment, start with standard SKUs.

Figure depicts a NAT gateway that supports outbound traffic to the internet from a virtual network.

図:インターネットへのアウトバウンド接続のための Virtual Network NATFigure: Virtual Network NAT for outbound to Internet

NAT ゲートウェイによって実現される、インターネットへのアウトバウンドのみのシナリオは、インターネットからのインバウンド機能を使用して拡張することができます。The Internet outbound only scenario provided by NAT gateway can be expanded with inbound from Internet functionality. それぞれのリソースは、フローの発生方向を認識します。Each resource is aware of the direction in which a flow is originated. NAT ゲートウェイを使用したサブネットでは、インターネットへのアウトバウンド シナリオはすべて NAT ゲートウェイに取って代わられます。On a subnet with a NAT gateway, all outbound to Internet scenarios are superseded by the NAT gateway. インターネットからのインバウンド シナリオはそれぞれのリソースによって実現されます。Inbound from Internet scenarios are provided by the respective resource.

インスタンスレベル パブリック IP を使用した VM と NATNAT and VM with instance-level Public IP

Figure depicts a NAT gateway that supports outbound traffic to the internet from a virtual network and inbound traffic with an instance-level public IP.

図:インスタンスレベル パブリック IP を使用した VM と Virtual Network NATFigure: Virtual Network NAT and VM with instance-level Public IP

DirectionDirection リソースResource
受信Inbound インスタンスレベル パブリック IP を使用した VMVM with instance-level Public IP
送信Outbound NAT GatewayNAT gateway

VM からのアウトバウンドには NAT ゲートウェイが使用されます。VM will use NAT gateway for outbound. 外部からのインバウンドは影響を受けません。Inbound originated isn't affected.

パブリック Load Balancer を使用した VM と NATNAT and VM with public Load Balancer

Figure depicts a NAT gateway that supports outbound traffic to the internet from a virtual network and inbound traffic with a public load balancer.

図:パブリック Load Balancer を使用した VM と Virtual Network NATFigure: Virtual Network NAT and VM with public Load Balancer

DirectionDirection リソースResource
受信Inbound パブリック ロード バランサーpublic Load Balancer
送信Outbound NAT GatewayNAT gateway

負荷分散規則またはアウトバウンド規則に含まれるアウトバウンド構成は、NAT ゲートウェイに取って代わられます。Any outbound configuration from a load-balancing rule or outbound rules is superseded by NAT gateway. 外部からのインバウンドは影響を受けません。Inbound originated isn't affected.

インスタンスレベル パブリック IP とパブリック Load Balancer を使用した VM と NATNAT and VM with instance-level public IP and public Load Balancer

Figure depicts a NAT gateway that supports outbound traffic to the internet from a virtual network and inbound traffic with an instance-level public IP and a public load balancer.

図:インスタンスレベル パブリック IP とパブリック Load Balancer を使用した VM と Virtual Network NATFigure: Virtual Network NAT and VM with instance-level public IP and public Load Balancer

DirectionDirection リソースResource
受信Inbound インスタンスレベル パブリック IP とパブリック Load Balancer を使用した VMVM with instance-level public IP and public Load Balancer
送信Outbound NAT GatewayNAT gateway

負荷分散規則またはアウトバウンド規則に含まれるアウトバウンド構成は、NAT ゲートウェイに取って代わられます。Any outbound configuration from a load-balancing rule or outbound rules is superseded by NAT gateway. この場合も、VM からのアウトバウンドには NAT ゲートウェイが使用されます。The VM will also use NAT gateway for outbound. 外部からのインバウンドは影響を受けません。Inbound originated isn't affected.

Basic リソースの管理Managing Basic resources

Standard Load Balancer、Standard パブリック IP、Standard パブリック IP プレフィックスは NAT ゲートウェイと共に利用することができます。Standard load balancer, public IP, and public IP prefix are compatible with NAT gateway. NAT ゲートウェイは、サブネットのスコープ内で動作します。NAT gateways operate in the scope of a subnet. これらのサービスの Basic SKU は、NAT ゲートウェイが使用されていないサブネットにデプロイする必要があります。The basic SKU of these services must be deployed on a subnet without a NAT gateway. このように分離されていることで、両方の SKU バリアントを同じ仮想ネットワークに共存させることができます。This separation allows both SKU variants to coexist in the same virtual network.

NAT ゲートウェイは、サブネットのアウトバウンド シナリオよりも優先されます。NAT gateways take precedence over outbound scenarios of the subnet. 目的の変換を指定して、Basic Load Balancer や Basic パブリック IP (それらに組み込まれているあらゆるマネージド サービスを含む) を調整することはできません。Basic load balancer or public IP (and any managed service built with them) is unable to be adjusted with the correct translations. サブネットにおけるインターネットへのアウトバウンド トラフィックは、NAT ゲートウェイによって制御されます。NAT gateway takes control over outbound to Internet traffic on a subnet. Basic Load Balancer や Basic パブリック IP へのインバウンド トラフィックは利用できません。Inbound traffic to basic load balancer and public ip is unavailable. Basic Load Balancer へのインバウンド トラフィックや、VM に構成されているパブリック IP へのインバウンド トラフィックは利用できません。Inbound traffic to a basic load balancer and, or a public ip configured on a VM won't be available.

可用性ゾーンAvailability Zones

ゾーン スタックを使用したゾーンの分離Zone isolation with zonal stacks

Figure depicts three zonal stacks, each of which contains a NAT gateway and a subnet.

図:"ゾーン スタック" を複数形成するゾーンの分離を使用した Virtual Network NATFigure: Virtual Network NAT with zone isolation, creating multiple "zonal stacks"

NAT は回復性を備えており、可用性ゾーンがなくても、複数のインフラストラクチャ コンポーネントの障害に耐えることができます。Even without availability zones, NAT is resilient and can survive multiple infrastructure component failures. NAT を特定のゾーンに分離するシナリオでは、この回復性の上に可用性ゾーンが構築されます。Availability zones build on this resiliency with zone isolation scenarios for NAT.

仮想ネットワークとそのサブネットは、リージョンの構成概念です。Virtual networks and their subnets are regional constructs. サブネットは特定のゾーンに制限されません。Subnets aren't restricted to a zone.

ゾーンの分離では、NAT ゲートウェイ リソースを使用する仮想マシンのインスタンスが NAT ゲートウェイ リソースやそのパブリック IP アドレスと同じゾーンに存在するときにゾーン保証が得られます。A zonal promise for zone isolation exists when a virtual machine instance using a NAT gateway resource is in the same zone as the NAT gateway resource and its public IP addresses. ゾーンを分離するために使用すべきパターンは、可用性ゾーンごとに "ゾーン スタック" を作成することです。The pattern you want to use for zone isolation is creating a "zonal stack" per availability zone. この "ゾーン スタック" は、同じゾーンでの使用のみを想定したサブネット上の仮想マシン インスタンス、NAT ゲートウェイ リソース、パブリック IP アドレス、プレフィックス リソースから成ります。This "zonal stack" consists of virtual machine instances, NAT gateway resources, public IP address and/or prefix resources on a subnet that is assumed to be serving only the same zone. そうすることでコントロール プレーンの操作とデータ プレーンが特定のゾーンにアラインメントされ、そのゾーンに制限されます。The control plane operations and data plane are then aligned with and constrained to the specified zone.

ご利用のゾーン以外で起こった障害が NAT に影響を及ぼす心配はありません。Failure in a zone other than where your scenario exists is expected to be without impact to NAT. 同じゾーンに属している仮想マシンからのアウトバウンド トラフィックは、ゾーンの分離によりエラーになります。Outbound traffic from virtual machines in the same zone will fail because of zone isolation.

インバウンド エンドポイントを統合するIntegrating inbound endpoints

実際のシナリオでインバウンド エンドポイントが必要になった場合、次の 2 つの選択肢があります。If your scenario requires inbound endpoints, you have two options:

オプションOption PatternPattern Example 長所Pro 短所Con
(1)(1) インバウンド エンドポイントを、アウトバウンド用に作成するそれぞれのゾーン スタックに合わせてアラインメントする。Align the inbound endpoints with the respective zonal stacks you're creating for outbound. ゾーン フロントエンドを使用して Standard ロード バランサーを作成する。Create a standard load balancer with zonal frontend. インバウンドとアウトバウンドとで正常性モデルと障害モードが同じ。Same health model and failure mode for inbound and outbound. 運用がよりシンプルになる。Simpler to operate. ゾーンごとに各 IP アドレスを共通の DNS 名でマスクする必要がある。Individual IP addresses per zone may need to be masked by a common DNS name.
(2)(2) クロスゾーン インバウンド エンドポイントでゾーン スタックをオーバーレイする。Overlay the zonal stacks with a cross-zone inbound endpoint. ゾーン冗長フロントエンドを使用して Standard ロード バランサーを作成する。Create a standard load balancer with zone-redundant frontend. インバウンド エンドポイントに使用される IP アドレスが 1 つ。Single IP address for inbound endpoint. インバウンドとアウトバウンドとで正常性モデルと障害モードが異なる。Varying health model and failure modes for inbound and outbound. 運用がより複雑になる。More complex to operate.

注意

ゾーン分離 NAT ゲートウェイでは、IP アドレスが NAT ゲートウェイのゾーンと一致している必要があります。A zone-isolated NAT gateway requires IP addresses to match the zone of the NAT gateway. 異なるゾーンの IP アドレスが割り当てられている NAT ゲートウェイ リソースや、ゾーンを持たない NAT ゲートウェイ リソースは許容されません。NAT gateway resources with IP addresses from a different zone or without a zone aren't allowed.

クロスゾーンのアウトバウンド シナリオはサポートされないCross-zone outbound scenarios not supported

Figure depicts three zonal stacks, each of which contains a NAT gateway and a subnet, with the connections between to of the gateways and their subnets broken.

図:Virtual Network NAT はゾーンスパニング サブネットと共存できないFigure: Virtual Network NAT not compatible with zone-spanning subnet

同じサブネット内の複数のゾーンに仮想マシン インスタンスがデプロイされている場合、NAT ゲートウェイ リソースのゾーン保証は得られません。You can't achieve a zonal promise with NAT gateway resources when virtual machine instances are deployed in multiple zones within the same subnet. また、1 つのサブネットに複数のゾーン NAT ゲートウェイがアタッチされていても、どの NAT ゲートウェイ リソースを選べばよいかが、仮想マシン インスタンスにはわかりません。And even if there were multiple zonal NAT gateways attached to a subnet, the virtual machine instance wouldn't know which NAT gateway resource to select.

a) 仮想マシン インスタンスのゾーンとゾーン NAT ゲートウェイのゾーンとがアラインメントされていない場合や、b) リージョンの NAT ゲートウェイ リソースがゾーンの仮想マシン インスタンスで使用されている場合、ゾーン保証は得られません。A zonal promise does't exist when a) the zone of a virtual machine instance and the zones of a zonal NAT gateway are not aligned, or b) a regional NAT gateway resource is used with zonal virtual machine instances.

このシナリオは一見うまく行くように見えますが、可用性ゾーンの観点から見ると、正常性モデルと障害モードが不定です。While the scenario will appear to work, its health model and failure mode is undefined from an availability zone point of view. ゾーン スタックを使用するか、すべてをリージョンに揃えることを検討してください。Consider going with zonal stacks or all regional instead.

注意

NAT ゲートウェイ リソースのゾーン プロパティは変更できません。The zones property of a NAT gateway resource isn't mutable. 意図したリージョンまたはゾーンを選んで NAT ゲートウェイ リソースを再デプロイしてください。Redeploy NAT gateway resource with the intended regional or zone preference.

注意

ゾーンが指定されていない場合、IP アドレスそのものはゾーン冗長ではありません。IP addresses by themselves aren't zone-redundant if no zone is specified. Standard Load Balancer のフロントエンドは、IP アドレスが特定のゾーンに作成されていなければゾーン冗長となります。The frontend of a Standard Load Balancer is zone-redundant if an IP address isn't created in a specific zone. NAT にはこれが当てはまりません。This doesn't apply to NAT. サポートされるのは、リージョン単位の分離とゾーン単位の分離だけです。Only regional or zone-isolation is supported.

パフォーマンスPerformance

各 NAT ゲートウェイ リソースは、最大 50 Gbps のスループットを提供できます。Each NAT gateway resource can provide up to 50 Gbps of throughput. デプロイを複数のサブネットに分割し、各サブネットまたはサブネットのグループを NAT ゲートウェイに割り当てて、スケールアウトすることができます。You can split your deployments into multiple subnets and assign each subnet or groups of subnets a NAT gateway to scale out.

各 NAT ゲートウェイは、割り当てられたアウトバウンド IP アドレスごとに 64,000 接続をサポートできます。Each NAT gateway can support 64,000 connections per assigned outbound IP address. 詳細については、送信元ネットワーク アドレス変換 (SNAT) に関する次のセクションを参照してください。また、特定の問題解決のガイダンスについては、トラブルシューティングに関する記事を参照してください。Review the following section on Source Network Address Translation (SNAT) for details as well as the troubleshooting article for specific problem resolution guidance.

送信元ネットワーク アドレス変換Source Network Address Translation

送信元ネットワーク アドレス変換 (SNAT) は、別の IP アドレスが送信元となるようにフローの送信元を書き換えるものです。Source network address translation (SNAT) rewrites the source of a flow to originate from a different IP address. NAT ゲートウェイ リソースでは、SNAT のバリアントが使用されます。これは一般にポート アドレス変換 (PAT) と呼ばれます。NAT gateway resources use a variant of SNAT commonly referred to port address translation (PAT). PAT では、送信元アドレスと送信元ポートが書き換えられます。PAT rewrites the source address and source port. SNAT では、プライベート アドレスの数とその変換後のパブリック アドレスの数との間に固定的な関係はありません。With SNAT, there's no fixed relationship between the number of private addresses and their translated public addresses.

基礎Fundamentals

基本的な概念を説明するために、4 つのフローの例を見ていきましょう。Let's look at an example of four flows to explain the basic concept. NAT ゲートウェイは、パブリック IP アドレス リソース 65.52.0.2 を使用しています。The NAT gateway is using public IP address resource 65.52.0.2.

FlowFlow 送信元のタプルSource tuple 送信先のタプルDestination tuple
11 192.168.0.16:4283192.168.0.16:4283 65.52.0.1:8065.52.0.1:80
22 192.168.0.16:4284192.168.0.16:4284 65.52.0.1:8065.52.0.1:80
33 192.168.0.17.5768192.168.0.17.5768 65.52.0.1:8065.52.0.1:80
44 192.168.0.16:4285192.168.0.16:4285 65.52.0.2:8065.52.0.2:80

PAT の実行後、これらのフローは次のようになります。These flows might look like this after PAT has taken place:

FlowFlow 送信元のタプルSource tuple 送信元のタプル (SNAT 変換後)SNAT'ed source tuple 送信先のタプルDestination tuple
11 192.168.0.16:4283192.168.0.16:4283 65.52.0.2:23465.52.0.2:234 65.52.0.1:8065.52.0.1:80
22 192.168.0.16:4284192.168.0.16:4284 65.52.0.2:23565.52.0.2:235 65.52.0.1:8065.52.0.1:80
33 192.168.0.17.5768192.168.0.17.5768 65.52.0.2:23665.52.0.2:236 65.52.0.1:8065.52.0.1:80
44 192.168.0.16:4285192.168.0.16:4285 65.52.0.2:23765.52.0.2:237 65.52.0.2:8065.52.0.2:80

送信先から見ると、フローの送信元は 65.52.0.2 (SNAT 変換後の送信元のタプル) で、それぞれ記載したポートが割り当てられています。The destination will see the source of the flow as 65.52.0.2 (SNAT source tuple) with the assigned port shown. 前出の表に示した PAT は、ポート マスカレード SNAT とも呼ばれます。PAT as shown in the preceding table is also called port masquerading SNAT. IP とポートの背後には、複数の送信元プライベート アドレスがマスカレードされています。Multiple private sources are masqueraded behind an IP and port.

この送信元ポートの割り当てパターンをすべてのケースに当てはめるのは避けてください。Don't take a dependency on the specific way source ports are assigned. 前出の表は、あくまで基本的な概念を例示したものです。The preceding is an illustration of the fundamental concept only.

NAT による SNAT は、いくつかの点で Load Balancer とは異なります。SNAT provided by NAT is different from Load Balancer in several aspects.

オンデマンドOn-demand

NAT では、新しいアウトバウンド トラフィック フローにオンデマンドで SNAT ポートが割り当てられます。NAT provides on-demand SNAT ports for new outbound traffic flows. インベントリにあるすべての空き SNAT ポートは、NAT が構成されているサブネット上のすべての仮想マシンによって使用されます。All available SNAT ports in inventory are used by any virtual machine on subnets configured with NAT.

Figure depicts inventory of all available SNAT ports used by any virtual machine on subnets configured with N A T.

図:Virtual Network NAT のオンデマンド アウトバウンド SNATFigure: Virtual Network NAT on-demand outbound SNAT

アウトバウンド フローは、任意の IP 構成の仮想マシンがオンデマンドで作成できます。Any IP configuration of a virtual machine can create outbound flows on-demand as needed. 最悪のケースに備えたインスタンスごとのオーバープロビジョニングも含め、インスタンスごとの事前割り当て計画は必要ありません。Pre-allocation, per instance planning including per instance worst case overprovisioning, isn't required.

Figure depicts inventory of all available SNAT ports used by any virtual machine on subnets configured with N A T with exhaustion threshold.

図:枯渇状況での相違点Figure: Differences in exhaustion scenarios

SNAT ポートが解放されると、NAT が構成されているサブネット上の任意の仮想マシンがそのポートを使用できるようになります。Once a SNAT port releases, it's available for use by any virtual machine on subnets configured with NAT. 割り当てはオンデマンドで行われるので、サブネット上の動的かつ多様なワークロードが必要に応じて SNAT ポートを使用できます。On-demand allocation allows dynamic and divergent workloads on subnet(s) to use SNAT ports as they need. 空き SNAT ポートがインベントリにある限り、SNAT フローは正常に動作します。As long as there's SNAT port inventory available, SNAT flows will succeed. インベントリが大きいことの効果は、SNAT ポートのホット スポットで顕著になります。SNAT port hot spots benefit from the larger inventory instead. SNAT ポートをさほど必要としていない仮想マシンのために、それらのポートが未使用のまま放置されることはありません。SNAT ports aren't left unused for virtual machines not actively needing them.

ScalingScaling

NAT のスケーリングは主に、共有された空き SNAT ポート インベントリを管理する機能です。Scaling NAT is primarily a function of managing the shared, available SNAT port inventory. NAT ゲートウェイ リソースにアタッチされたすべてのサブネットのピーク アウトバウンド フローを見越して、NAT には十分な SNAT ポート インベントリを確保する必要があります。NAT needs sufficient SNAT port inventory for expected peak outbound flows for all subnets attached to a NAT gateway resource. SNAT ポート インベントリは、パブリック IP アドレス リソース、パブリック IP プレフィックス リソース、またはその両方を使用して作成できます。You can use public IP address resources, public IP prefix resources, or both to create SNAT port inventory.

注意

パブリック IP プレフィックス リソースを割り当てる場合は、パブリック IP プレフィックス全体が使用されます。If you are assigning a public IP prefix resource, the entire public IP prefix will be used. パブリック IP プレフィックス リソースを割り当ててから、個々の IP アドレスを分割して他のリソースに割り当てることはできません。You can't assign a public IP prefix resource and then break out individual IP addresses to assign to other resources. パブリック IP プレフィックスの個々の IP アドレスを複数のリソースに割り当てる場合は、パブリック IP プレフィックス リソースから個々のパブリック IP アドレスを作成し、パブリック IP プレフィックス リソース自体ではなくそれらを、必要に応じて割り当てる必要があります。If you want to assign individual IP addresses from a public IP prefix to multiple resources, you need to create individual public IP addresses from the public IP prefix resource and assign them as needed instead of the public IP prefix resource itself.

SNAT は、プライベート アドレスを 1 つまたは複数のパブリック IP アドレスにマップするものです。そのプロセスの中で送信元アドレスと送信元ポートは書き換えられます。SNAT maps private addresses to one or more public IP addresses, rewriting source address and source port in the processes. この変換を行うために、NAT ゲートウェイ リソースは、構成されているパブリック IP アドレス 1 つにつき、64,000 個のポート (SNAT ポート) を使用します。A NAT gateway resource will use 64,000 ports (SNAT ports) per configured public IP address for this translation. NAT ゲートウェイ リソースは、16 個の IP アドレスおよび ‭1,024,000‬ 個の SNAT ポートにまでスケールアップできます。NAT gateway resources can scale up to 16 IP addresses and 1M SNAT ports. パブリック IP プレフィックス リソースが用意されている場合、プレフィックス内の各 IP アドレスによって SNAT ポート インベントリが提供されます。If a public IP prefix resource is provided, each IP address within the prefix is providing SNAT port inventory. さらにパブリック IP アドレスを追加すると、インベントリの空き SNAT ポートが増えます。And adding more public IP addresses increases the available inventory SNAT ports. TCP と UDP は、別個の SNAT ポート インベントリであり、互いに独立しています。TCP and UDP are separate SNAT port inventories and unrelated.

NAT ゲートウェイ リソースは、しかるべきルールによらず送信元ポートを再利用します。NAT gateway resources opportunistically reuse source ports. スケーリングを目的とする場合、フローごとに新しい SNAT ポートが必要になることを前提に、アウトバウンド トラフィックに使用可能な IP アドレスの総数を増やすようにしてください。For scaling purposes, you should assume each flow requires a new SNAT port and scale the total number of available IP addresses for outbound traffic.

プロトコルProtocols

NAT ゲートウェイ リソースは、UDP フローと TCP フローの IP ヘッダーおよび IP トランスポート ヘッダーに作用します。アプリケーション レイヤーのペイロードには依存しません。NAT gateway resources interact with IP and IP transport headers of UDP and TCP flows and are agnostic to application layer payloads. 他の IP プロトコルはサポートされません。Other IP protocols aren't supported.

タイマーTimers

重要

アイドル タイマーを長くすると、SNAT が枯渇する可能性をむやみに高めることにつながります。Long idle timer can unnecessarily increase likelihood of SNAT exhaustion. 指定するタイマーが長いほど、SNAT ポートは長時間 NAT によって保持され続け、最終的にアイドル タイムアウトに達するまでは解放されません。The longer of a timer you specify, the longer NAT will hold on to SNAT ports until they eventually idle timeout. アイドル タイムアウトしたフローは、その後失敗に終わるので、SNAT ポート インベントリは無駄に消費されることになります。If your flows are idle timed out, they will fail eventually anyway and unnecessarily consume SNAT port inventory. 2 時間で失敗するフローなら、既定値の 4 分でも失敗します。Flows that fail at 2 hours would have failed at the default 4 minutes as well. アイドル タイムアウトの増加は最終手段であり、慎重に用いる必要があります。Increasing the idle timeout is a last resort option that should be used sparingly. フローが決してアイドル状態にならないのであれば、アイドル タイマーの影響は受けません。If a flow never does go idle, it will not be impacted by the idle timer.

TCP アイドル タイムアウトは、すべてのフローを対象に、4 分 (既定値) から 120 分 (2 時間) の範囲で調整できます。TCP idle timeout can be adjusted from 4 minutes (default) to 120 minutes (2 hours) for all flows. さらに、フロー上のトラフィックに関して、アイドル タイマーをリセットすることができます。Additionally, you can reset the idle timer with traffic on the flow. 長時間にわたるアイドル接続のリフレッシュやエンドポイントの生存確認に推奨されるパターンは、TCP キープアライブです。A recommended pattern for refreshing long idle connections and endpoint liveness detection is TCP keepalives. TCP キープアライブは、エンドポイントからは重複する ACK として認識され、オーバーヘッドが低く、アプリケーション レイヤーからは見えません。TCP keepalives appear as duplicate ACKs to the endpoints, are low overhead, and invisible to the application layer.

SNAT ポート解放には次のタイマーが使用されます。The following timers are used for SNAT port release:

TimerTimer Value
TCP FINTCP FIN 60 秒60 seconds
TCP RSTTCP RST 10 秒10 seconds
TCP half openTCP half open 30 秒30 seconds

SNAT ポートは、同じ送信先 IP アドレスおよび同じ送信先ポートに対して 5 秒後に再利用可能な状態となります。A SNAT port is available for reuse to the same destination IP address and destination port after 5 seconds.

注意

これらのタイマー設定は、変更されることがあります。These timer settings are subject to change. 記載した値は、トラブルシューティングでの利用を意図したものです。特定のタイマーを前提とした判断は、現時点では避けてください。The values are provided to help troubleshooting and you shouldn't take a dependency on specific timers at this time.

制限事項Limitations

  • NAT は、Standard SKU のパブリック IP、パブリック IP プレフィックス、ロード バランサーの各リソースと共に利用することができます。NAT is compatible with standard SKU public IP, public IP prefix, and load balancer resources. Basic リソース (Basic Load Balancer など) やそれらから派生した製品を NAT と共存させることはできません。Basic resources (for example basic load balancer) and any products derived from them aren't compatible with NAT. Basic リソースは、NAT が構成されていないサブネットに配置する必要があります。Basic resources must be placed on a subnet not configured with NAT.
  • サポートされるアドレス ファミリーは IPv4 です。IPv4 address family is supported. IPv6 アドレス ファミリーを NAT で扱うことはできません。NAT doesn't interact with IPv6 address family. IPv6 プレフィックスを持つサブネットに NAT をデプロイすることはできません。NAT can't be deployed on a subnet with an IPv6 prefix.
  • NAT を複数の仮想ネットワークにまたがって使用することはできません。NAT can't span multiple virtual networks.

検索候補Suggestions

サービスを改善するために、皆様のご意見をお待ちしております。We want to know how we can improve the service. 不足している機能があれば、Are missing a capability? ぜひお聞かせください。今後の課題として、NAT の UserVoice で受け付けております。Make your case for what we should build next at UserVoice for NAT.

次のステップNext steps