アウトバウンド エンドポイントを作成して更新する

このページでは、アウトバウンド エンドポイントを作成、更新し、転送ゾーンと DNS サーバー ポリシーに関連付けて、VPC ネットワークからプライベート IP アドレスを使用して DNS クエリを直接転送できるようにする方法について説明します。この方法を使用すると、アウトバウンド トラフィックをより細かく制御できます。アウトバウンド エンドポイントの詳細については、アウトバウンド エンドポイントの概要をご覧ください。

始める前に

  1. Google Cloud コンソールのプロジェクト セレクタページで、 Google Cloud プロジェクトを選択または作成します。

    プロジェクトの選択または作成に必要なロール

    • プロジェクトを選択する: プロジェクトを選択する際に、特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、resourcemanager.projects.create 権限を含むプロジェクト作成者のロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。

    プロジェクト セレクタに移動

  2. Google Cloud プロジェクトに対して課金が有効になっていることを確認します。

  3. Cloud DNS、Compute Engine、Network Services API がまだ有効になっていない場合は、有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法を確認する。

    API を有効にする

オンプレミスまたは外部の DNS ネームサーバーに接続できる VPC ネットワークがあることを確認します。アウトバウンド エンドポイントをデプロイする各リージョンで、VPC ネットワークには、ターゲット リージョンに通常のサブネットとアクティブなリージョン プロキシ専用サブネット(--purpose=REGIONAL_MANAGED_PROXY と --role=ACTIVE、最小サイズは /26 または 64 アドレス)が必要です。詳細については、VPC ネットワークの作成と管理をご覧ください。

また、オンプレミス ネットワークにリージョン プロキシ専用サブネットの IP アドレス範囲の戻りルートがあることを確認し、リージョン プロキシ専用サブネットの IP アドレス範囲からのインバウンド DNS クエリ(UDP および TCP ポート 53)を許可するようにオンプレミス ファイアウォール ルールを構成します。

アウトバウンド エンドポイントを作成する

アウトバウンド エンドポイントを作成する手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで、[Cloud DNS] ページに移動します。

    [Cloud DNS] に移動

  2. [アウトバウンド エンドポイント] タブに移動し、[アウトバウンド エンドポイントを作成] をクリックします。

  3. [名前] フィールドに、エンドポイントの一意の名前を入力します。

  4. (オプション)Descriptionフィールドに、エンドポイントの説明を入力します。

  5. [リージョン] で、ターゲット リージョンを選択します。

  6. [ネットワーク] リストで、VPC ネットワークを選択します。

  7. [サブネット] で、選択したリージョンの通常のサブネットを選択します。

  8. [エンドポイント IP アドレス] に、選択したサブネット範囲の有効な IPv4 アドレス文字列を入力します。

  9. [プロキシ専用サブネット] では、選択した VPC ネットワークとリージョン内のリージョン プロキシ専用サブネットが自動的に検出され、アウトバウンド クエリの下り(外向き)に使用されます。プロキシ専用サブネットが検出されない場合は、[サブネットを予約] をクリックして作成してから続行します。

  10. [作成] をクリックします。

gcloud

gcloud beta dns outbound-endpoints create コマンドを実行します。

gcloud beta dns outbound-endpoints create ENDPOINT_NAME \
    --project=PROJECT_ID \
    --network=VPC_NETWORK \
    --subnetwork=REGULAR_SUBNET \
    --location=REGION \
    --endpoint-ip=IP_ADDRESS \
    --description=DESCRIPTION

次のように置き換えます。

  • ENDPOINT_NAME: アウトバウンド エンドポイントの名前
  • PROJECT_ID: プロジェクト ID
  • VPC_NETWORK: アウトバウンド エンドポイントに関連付けられた VPC ネットワーク(例: projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME、VPC_NETWORK_NAME)
  • REGULAR_SUBNET: エンドポイントの内部リスニング IP アドレスが割り振られる通常のサブネット(例: projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME、SUBNET_NAME)
  • REGION: エンドポイントがデプロイされているリージョン
  • IP_ADDRESS: 通常のサブネットのプライマリ IP アドレス範囲で使用可能な内部 IPv4 アドレス
  • DESCRIPTION: エンドポイントの説明(省略可)

API

outboundEndpoints.create メソッドを実行します。

POST https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints?outboundEndpointId=ENDPOINT_NAME
{
    "network": "projects/PROJECT_ID/global/networks/VPC_NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/REGULAR_SUBNET",
    "endpointIp": "IP_ADDRESS",
    "description": "DESCRIPTION"
}

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • REGION: エンドポイントがデプロイされているリージョン
  • ENDPOINT_NAME: アウトバウンド エンドポイントの名前
  • VPC_NETWORK: アウトバウンド エンドポイントに関連付けられた VPC ネットワーク
  • REGULAR_SUBNET: エンドポイントの内部リスニング IP アドレスが割り振られる通常のサブネット
  • IP_ADDRESS: 通常のサブネットのプライマリ IP 範囲の使用可能な内部 IPv4 アドレス
  • DESCRIPTION: エンドポイントの説明(省略可)

アウトバウンド エンドポイントを更新する

アウトバウンド エンドポイントを更新する手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで、[Cloud DNS] ページに移動します。

    [Cloud DNS] に移動

  2. [アウトバウンド エンドポイント] タブに移動し、更新するアウトバウンド エンドポイントの名前をクリックします。

  3. [編集] をクリックし、[説明] フィールドを更新して、[保存] をクリックします。

gcloud

gcloud beta dns outbound-endpoints update コマンドを実行します。

gcloud beta dns outbound-endpoints update ENDPOINT_NAME \
    --project=PROJECT_ID \
    --location=REGION \
    --description=UPDATED_DESCRIPTION

次のように置き換えます。

  • ENDPOINT_NAME: 更新するアウトバウンド エンドポイントの名前
  • PROJECT_ID: プロジェクト ID
  • REGION: エンドポイントがデプロイされているリージョン
  • UPDATED_DESCRIPTION: エンドポイントの更新された説明(省略可)

API

outboundEndpoints.patch メソッドを実行します。

PATCH https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints/ENDPOINT_NAME?updateMask=description
{
    "description": "UPDATED_DESCRIPTION"
}

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • REGION: エンドポイントがデプロイされているリージョン
  • ENDPOINT_NAME: 更新するアウトバウンド エンドポイントの名前
  • UPDATED_DESCRIPTION: アウトバウンド エンドポイントの更新された説明

エンドポイントを転送ゾーンに関連付ける

コンソール

  1. Google Cloud コンソールで、[Cloud DNS] ページに移動します。

    [Cloud DNS] に移動

  2. [ゾーン] タブに移動して [ゾーンを作成] をクリックするか、既存の転送ゾーンを選択して [編集] をクリックします。

  3. ゾーンのパラメータを構成します。

    1. [ゾーンのタイプ] で [限定公開] を選択します。
    2. [ゾーン名] に、ゾーンの固有識別子を入力します。
    3. [DNS 名] に、転送するドメイン サフィックスを入力します。例: corp.example.com
    4. (省略可)[説明] に説明を入力します。
    5. [オプション] で、[クエリを別のサーバーに転送する] を選択します。
    6. [ネットワーク] で、このゾーンに対するクエリの解決を許可する VPC ネットワークを選択します。
  4. [転送先 DNS サーバー] で、外部/オンプレミス ネームサーバーのターゲット IPv4 アドレスまたは FQDN を入力します。

  5. [順方向パス] で [アウトバウンド エンドポイント] を選択します。

  6. [アウトバウンド エンドポイント] で、クエリ転送を処理するエンドポイントを 1 つ以上選択します。

    • 最小選択: アウトバウンド エンドポイントを 1 つ以上選択します(アウトバウンド エンドポイントが順方向パスとして選択されている場合に必要)。
    • 単一 VPC の制約: 選択したすべてのエンドポイントが同じ VPC ネットワークに属している必要があります。
    • 高可用性(HA)のベスト プラクティス: クロスリージョン障害復旧と自動フェイルオーバーを行うには、その VPC ネットワーク内の異なるリージョンに少なくとも 2 つのエンドポイントを構成して選択します。
  7. [作成] をクリックします(既存のゾーンの場合は [保存] をクリックします)。

gcloud

gcloud beta dns managed-zones update コマンドを使用して、エンドポイントを転送ゾーンに関連付けます。

gcloud beta dns managed-zones update ZONE_NAME \
    --project=PROJECT_ID \
    --outbound-endpoints=projects/PROJECT_ID/locations/REGION_1/outboundEndpoints/ENDPOINT_NAME_1,projects/PROJECT_ID/locations/REGION_2/outboundEndpoints/ENDPOINT_NAME_2

次のように置き換えます。

  • ZONE_NAME: 更新する転送ゾーンの名前
  • PROJECT_ID: プロジェクト ID
  • REGION_1、REGION_2: エンドポイントがデプロイされているリージョン
  • ENDPOINT_NAME_1: 転送ゾーンに関連付ける最初のエンドポイントの名前
  • ENDPOINT_NAME_2: 転送ゾーンに 関連付ける 2 番目のエンドポイントの名前

API

managedZones.patch メソッドを実行します。

PATCH https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/managedZones/ZONE_NAME
{
    "name": "ZONE_NAME",
    "dnsName": "DNS_NAME",
    "description": "DESCRIPTION",
    "visibility": "private",
    "forwardingConfig": {
        "targetNameServers": [
              {
                 "ipv4Address": "TARGET_IP_ADDRESS"
              }
        ],
        "outboundEndpoints": [
              {
                 "name": "projects/PROJECT_ID/locations/REGION_1/outboundEndpoints/ENDPOINT_NAME_1"
              },
              {
                 "name": "projects/PROJECT_ID/locations/REGION_2/outboundEndpoints/ENDPOINT_NAME_2"
              }
        ]
    }
}

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • ZONE_NAME: 更新する転送ゾーンの名前
  • DNS_NAME: 転送ゾーンの DNS 名
  • DESCRIPTION: (省略可)転送ゾーンの更新された説明
  • TARGET_IP_ADDRESS: 外部またはオンプレミスの DNS ネームサーバーのターゲット IPv4 アドレス(または domainName: TARGET_FQDN)
  • REGION_1 と REGION_2: エンドポイントがデプロイされているリージョン(forwardingConfig にリストされているすべてのアウトバウンド エンドポイントは、同じ VPC ネットワークに属している必要があります)。
  • ENDPOINT_NAME_1: 転送ゾーンに関連付ける最初のエンドポイントの名前
  • ENDPOINT_NAME_2: 転送ゾーンに 関連付ける 2 番目のエンドポイントの名前

エンドポイントを DNS サーバー ポリシーに関連付ける

コンソール

  1. Google Cloud コンソールで、[Cloud DNS] ページに移動します。

    [Cloud DNS] に移動

  2. [DNS サーバー ポリシー] タブに移動し、[ポリシーを作成] をクリックします(または、既存の DNS サーバー ポリシーを選択して [編集] をクリックします)。

  3. 以下の構成を行います。

    1. [ポリシー名] に、サーバー ポリシーの一意の名前を入力します。
    2. (省略可)[説明] に説明を入力します。
    3. [受信クエリ転送] で、外部クライアントが受信エンドポイントを使用して VPC ワークロードをクエリするかどうかを指定します。
    4. [DNS64] で、必要に応じて IPv6 合成を有効または無効にします。
    5. [ログ] で、必要に応じて DNS ロギングを有効または無効にします。
    6. [VPC ネットワーク] で、サーバー ポリシーを適用する VPC ネットワークを選択します。
  4. [代替 DNS サーバー] で、外部またはオンプレミスのネームサーバーのターゲット IPv4 アドレスを入力します。

  5. [順方向パス] で [アウトバウンド エンドポイント] を選択します。

  6. [アウトバウンド エンドポイント] で、プライベート以外のすべての VPC クエリをルーティングするエンドポイントを 1 つ以上選択します。

    • 最小選択数: アウトバウンド エンドポイントを 1 つ以上選択します。
    • 単一 VPC の制約: 選択したすべてのエンドポイントが同じ VPC ネットワークに属している必要があります。
    • 高可用性(HA)のベスト プラクティス: クロスリージョン障害復旧と自動フェイルオーバーを行うには、その VPC ネットワーク内の異なるリージョンに少なくとも 2 つのエンドポイントを構成して選択します。
  7. [作成] をクリックします(既存のポリシーの場合は [保存] をクリックします)。

gcloud

gcloud beta dns policies update コマンドを使用して、エンドポイントを DNS サーバー ポリシーに関連付けます。

gcloud beta dns policies update POLICY_NAME \
    --project=PROJECT_ID \
    --outbound-endpoints=projects/PROJECT_ID/locations/REGION_1/outboundEndpoints/ENDPOINT_NAME_1,projects/PROJECT_ID/locations/REGION_2/outboundEndpoints/ENDPOINT_NAME_2

次のように置き換えます。

  • POLICY_NAME: 更新する DNS サーバー ポリシーの名前
  • PROJECT_ID: プロジェクト ID
  • REGION_1、REGION_2: エンドポイントがデプロイされているリージョン
  • ENDPOINT_NAME_1: DNS サーバー ポリシーに関連付ける最初のエンドポイントの名前
  • ENDPOINT_NAME_2: DNS サーバー ポリシーに関連付ける 2 番目のエンドポイントの名前

API

policies.patch メソッドを実行します。

PATCH https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/policies/POLICY_NAME
{
    "alternativeNameServerConfig": {
        "targetNameServers": [
            {"ipv4Address": "TARGET_IP_ADDRESS"}
        ],
        "outboundEndpoints": [
            {"name": "projects/PROJECT_ID/locations/REGION_1/outboundEndpoints/ENDPOINT_NAME_1"},
            {"name": "projects/PROJECT_ID/locations/REGION_2/outboundEndpoints/ENDPOINT_NAME_2"}
        ]
    }
}

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • POLICY_NAME: 更新する DNS サーバー ポリシーの名前
  • TARGET_IP_ADDRESS: 外部またはオンプレミスの代替ネームサーバーのターゲット IPv4 アドレス
  • REGION_1、REGION_2: エンドポイントがデプロイされているリージョン
  • ENDPOINT_NAME_1: DNS サーバー ポリシーに関連付ける最初のエンドポイントの名前
  • ENDPOINT_NAME_2: DNS サーバー ポリシーに関連付ける 2 番目のエンドポイントの名前

アウトバウンド エンドポイントを表示する

リージョン内のアウトバウンド エンドポイントを一覧表示または説明する手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで、[Cloud DNS] ページに移動します。

    [Cloud DNS] に移動

  2. [アウトバウンド エンドポイント] タブに移動して、プロジェクト内のすべてのアウトバウンド エンドポイント、そのリージョン、ネットワーク、サブネット、IP アドレス、健全性ステータスを表示します。アウトバウンド エンドポイントの名前をクリックすると、そのエンドポイントの詳細(説明、通常のサブネット、エンドポイント IP アドレス、リージョン プロキシ専用サブネットなど)が表示されます。

gcloud

リージョン内のすべてのアウトバウンド エンドポイントを一覧表示するには、gcloud beta dns outbound-endpoints list コマンドを実行します。

gcloud beta dns outbound-endpoints list \
    --project=PROJECT_ID \
    --location=REGION

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • REGION: エンドポイントがデプロイされているリージョン

特定のアウトバウンド エンドポイントの詳細を表示するには、gcloud beta dns outbound-endpoints describe コマンドを実行します。

gcloud beta dns outbound-endpoints describe ENDPOINT_NAME \
    --project=PROJECT_ID \
    --location=REGION

次のように置き換えます。

  • ENDPOINT_NAME: アウトバウンド エンドポイントの名前
  • PROJECT_ID: プロジェクト ID
  • REGION: エンドポイントがデプロイされているリージョン

API

リージョン内のすべてのアウトバウンド エンドポイントを一覧表示するには、GET リクエストを送信します。

GET https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • REGION: エンドポイントがデプロイされているリージョン

特定のアウトバウンド エンドポイントの詳細を表示するには、GET リクエストを送信します。

GET https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints/ENDPOINT_NAME

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • REGION: エンドポイントがデプロイされているリージョン
  • ENDPOINT_NAME: アウトバウンド エンドポイントの名前

アウトバウンド エンドポイントを削除する

アウトバウンド エンドポイントを削除する前に、そのエンドポイントを参照している転送ゾーンまたは DNS サーバー ポリシーからエンドポイントの関連付けを解除する必要があります。詳細については、アウトバウンド エンドポイントに関連付けられたネットワーク リソースを管理するをご覧ください。

アウトバウンド エンドポイントをすべての転送ゾーンと DNS サーバー ポリシーから関連付けを解除したら、次の手順でエンドポイントを削除します。

コンソール

  1. Google Cloud コンソールで、[Cloud DNS] ページに移動します。

    [Cloud DNS] に移動

  2. [アウトバウンド エンドポイント] タブに移動します。

  3. 削除するアウトバウンド エンドポイントを選択し、[削除] をクリックします。

gcloud

gcloud beta dns outbound-endpoints delete コマンドを実行します。

gcloud beta dns outbound-endpoints delete ENDPOINT_NAME \
    --project=PROJECT_ID \
    --location=REGION

次のように置き換えます。

  • ENDPOINT_NAME: 削除するアウトバウンド エンドポイントの名前
  • PROJECT_ID: プロジェクト ID
  • REGION: エンドポイントがデプロイされているリージョン

API

outboundEndpoints.delete メソッドを使用します。

DELETE https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints/ENDPOINT_NAME

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • REGION: エンドポイントがデプロイされているリージョン
  • ENDPOINT_NAME: 削除するアウトバウンド エンドポイントの名前

トラブルシューティング

アウトバウンド エンドポイントに関連するエラーを診断して解決する方法については、トラブルシューティングをご覧ください。

次のステップ