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

このページでは、アウトバウンド エンドポイントを作成、更新し、転送ゾーンと 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 ネットワークにターゲット リージョンの通常のサブネットとプロキシ専用サブネットが必要です。詳細については、VPC ネットワークの作成と管理をご覧ください。

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

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

アウトバウンド エンドポイントを作成するには、次の操作を行います。

コンソール

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

    [Cloud DNS] に移動

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

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

  4. (省略可)[説明] フィールドに、エンドポイントの説明を入力します。

  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/NETWORK_NAME、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": {
        "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: (省略可)転送ゾーンの更新された説明
  • 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": {
        "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 サーバー ポリシーの名前
  • REGION_1 と REGION_2: エンドポイントがデプロイされているリージョン
  • ENDPOINT_NAME_1: DNS サーバー ポリシーに関連付ける最初のエンドポイントの名前
  • ENDPOINT_NAME_2: DNS サーバー ポリシーに関連付ける 2 番目のエンドポイントの名前

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

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

コンソール

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

    [Cloud DNS] に移動

  2. [アウトバウンド エンドポイント] タブに移動して、プロジェクト内のすべてのアウトバウンド エンドポイント、そのリージョン、ネットワーク、サブネット、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: 削除するアウトバウンド エンドポイントの名前

トラブルシューティング

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

次のステップ