このページでは、アウトバウンド エンドポイントを作成、更新し、転送ゾーンと DNS サーバー ポリシーに関連付けて、VPC ネットワークからプライベート IP アドレスを使用して DNS クエリを直接転送できるようにする方法について説明します。この方法を使用すると、アウトバウンド トラフィックをより細かく制御できます。アウトバウンド エンドポイントの詳細については、アウトバウンド エンドポイントの概要をご覧ください。
始める前に
-
Google Cloud コンソールのプロジェクト セレクタページで、 Google Cloud プロジェクトを選択または作成します。
プロジェクトの選択または作成に必要なロール
- プロジェクトを選択する: プロジェクトを選択する際に、特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、
resourcemanager.projects.create権限を含むプロジェクト作成者のロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。
-
Cloud DNS、Compute Engine、Network Services API がまだ有効になっていない場合は、有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法を確認する。
オンプレミスまたは外部の DNS ネームサーバーに接続できる VPC ネットワークがあることを確認します。アウトバウンド エンドポイントをデプロイする各リージョンで、VPC ネットワークには、ターゲット リージョンに通常のサブネットとアクティブなリージョン プロキシ専用サブネット(--purpose=REGIONAL_MANAGED_PROXY と --role=ACTIVE、最小サイズは /26 または 64 アドレス)が必要です。詳細については、VPC ネットワークの作成と管理をご覧ください。
また、オンプレミス ネットワークにリージョン プロキシ専用サブネットの IP アドレス範囲の戻りルートがあることを確認し、リージョン プロキシ専用サブネットの IP アドレス範囲からのインバウンド DNS クエリ(UDP および TCP ポート 53)を許可するようにオンプレミス ファイアウォール ルールを構成します。
アウトバウンド エンドポイントを作成する
アウトバウンド エンドポイントを作成する手順は次のとおりです。
コンソール
Google Cloud コンソールで、[Cloud DNS] ページに移動します。
[アウトバウンド エンドポイント] タブに移動し、[アウトバウンド エンドポイントを作成] をクリックします。
[名前] フィールドに、エンドポイントの一意の名前を入力します。
(オプション)Descriptionフィールドに、エンドポイントの説明を入力します。
[リージョン] で、ターゲット リージョンを選択します。
[ネットワーク] リストで、VPC ネットワークを選択します。
[サブネット] で、選択したリージョンの通常のサブネットを選択します。
[エンドポイント IP アドレス] に、選択したサブネット範囲の有効な IPv4 アドレス文字列を入力します。
[プロキシ専用サブネット] では、選択した VPC ネットワークとリージョン内のリージョン プロキシ専用サブネットが自動的に検出され、アウトバウンド クエリの下り(外向き)に使用されます。プロキシ専用サブネットが検出されない場合は、[サブネットを予約] をクリックして作成してから続行します。
[作成] をクリックします。
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: プロジェクト IDVPC_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: プロジェクト IDREGION: エンドポイントがデプロイされているリージョンENDPOINT_NAME: アウトバウンド エンドポイントの名前VPC_NETWORK: アウトバウンド エンドポイントに関連付けられた VPC ネットワークREGULAR_SUBNET: エンドポイントの内部リスニング IP アドレスが割り振られる通常のサブネットIP_ADDRESS: 通常のサブネットのプライマリ IP 範囲の使用可能な内部 IPv4 アドレスDESCRIPTION: エンドポイントの説明(省略可)
アウトバウンド エンドポイントを更新する
アウトバウンド エンドポイントを更新する手順は次のとおりです。
コンソール
Google Cloud コンソールで、[Cloud DNS] ページに移動します。
[アウトバウンド エンドポイント] タブに移動し、更新するアウトバウンド エンドポイントの名前をクリックします。
[編集] をクリックし、[説明] フィールドを更新して、[保存] をクリックします。
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: プロジェクト IDREGION: エンドポイントがデプロイされているリージョン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: プロジェクト IDREGION: エンドポイントがデプロイされているリージョンENDPOINT_NAME: 更新するアウトバウンド エンドポイントの名前UPDATED_DESCRIPTION: アウトバウンド エンドポイントの更新された説明
エンドポイントを転送ゾーンに関連付ける
コンソール
Google Cloud コンソールで、[Cloud DNS] ページに移動します。
[ゾーン] タブに移動して [ゾーンを作成] をクリックするか、既存の転送ゾーンを選択して [編集] をクリックします。
ゾーンのパラメータを構成します。
- [ゾーンのタイプ] で [限定公開] を選択します。
- [ゾーン名] に、ゾーンの固有識別子を入力します。
- [DNS 名] に、転送するドメイン サフィックスを入力します。例:
corp.example.com - (省略可)[説明] に説明を入力します。
- [オプション] で、[クエリを別のサーバーに転送する] を選択します。
- [ネットワーク] で、このゾーンに対するクエリの解決を許可する VPC ネットワークを選択します。
[転送先 DNS サーバー] で、外部/オンプレミス ネームサーバーのターゲット IPv4 アドレスまたは FQDN を入力します。
[順方向パス] で [アウトバウンド エンドポイント] を選択します。
[アウトバウンド エンドポイント] で、クエリ転送を処理するエンドポイントを 1 つ以上選択します。
- 最小選択: アウトバウンド エンドポイントを 1 つ以上選択します(アウトバウンド エンドポイントが順方向パスとして選択されている場合に必要)。
- 単一 VPC の制約: 選択したすべてのエンドポイントが同じ VPC ネットワークに属している必要があります。
- 高可用性(HA)のベスト プラクティス: クロスリージョン障害復旧と自動フェイルオーバーを行うには、その VPC ネットワーク内の異なるリージョンに少なくとも 2 つのエンドポイントを構成して選択します。
[作成] をクリックします(既存のゾーンの場合は [保存] をクリックします)。
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: プロジェクト IDREGION_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: プロジェクト IDZONE_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 サーバー ポリシーに関連付ける
コンソール
Google Cloud コンソールで、[Cloud DNS] ページに移動します。
[DNS サーバー ポリシー] タブに移動し、[ポリシーを作成] をクリックします(または、既存の DNS サーバー ポリシーを選択して [編集] をクリックします)。
以下の構成を行います。
- [ポリシー名] に、サーバー ポリシーの一意の名前を入力します。
- (省略可)[説明] に説明を入力します。
- [受信クエリ転送] で、外部クライアントが受信エンドポイントを使用して VPC ワークロードをクエリするかどうかを指定します。
- [DNS64] で、必要に応じて IPv6 合成を有効または無効にします。
- [ログ] で、必要に応じて DNS ロギングを有効または無効にします。
- [VPC ネットワーク] で、サーバー ポリシーを適用する VPC ネットワークを選択します。
[代替 DNS サーバー] で、外部またはオンプレミスのネームサーバーのターゲット IPv4 アドレスを入力します。
[順方向パス] で [アウトバウンド エンドポイント] を選択します。
[アウトバウンド エンドポイント] で、プライベート以外のすべての VPC クエリをルーティングするエンドポイントを 1 つ以上選択します。
- 最小選択数: アウトバウンド エンドポイントを 1 つ以上選択します。
- 単一 VPC の制約: 選択したすべてのエンドポイントが同じ VPC ネットワークに属している必要があります。
- 高可用性(HA)のベスト プラクティス: クロスリージョン障害復旧と自動フェイルオーバーを行うには、その VPC ネットワーク内の異なるリージョンに少なくとも 2 つのエンドポイントを構成して選択します。
[作成] をクリックします(既存のポリシーの場合は [保存] をクリックします)。
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: プロジェクト IDREGION_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: プロジェクト IDPOLICY_NAME: 更新する DNS サーバー ポリシーの名前TARGET_IP_ADDRESS: 外部またはオンプレミスの代替ネームサーバーのターゲット IPv4 アドレスREGION_1、REGION_2: エンドポイントがデプロイされているリージョンENDPOINT_NAME_1: DNS サーバー ポリシーに関連付ける最初のエンドポイントの名前ENDPOINT_NAME_2: DNS サーバー ポリシーに関連付ける 2 番目のエンドポイントの名前
アウトバウンド エンドポイントを表示する
リージョン内のアウトバウンド エンドポイントを一覧表示または説明する手順は次のとおりです。
コンソール
Google Cloud コンソールで、[Cloud DNS] ページに移動します。
[アウトバウンド エンドポイント] タブに移動して、プロジェクト内のすべてのアウトバウンド エンドポイント、そのリージョン、ネットワーク、サブネット、IP アドレス、健全性ステータスを表示します。アウトバウンド エンドポイントの名前をクリックすると、そのエンドポイントの詳細(説明、通常のサブネット、エンドポイント IP アドレス、リージョン プロキシ専用サブネットなど)が表示されます。
gcloud
リージョン内のすべてのアウトバウンド エンドポイントを一覧表示するには、gcloud beta dns outbound-endpoints list コマンドを実行します。
gcloud beta dns outbound-endpoints list \
--project=PROJECT_ID \
--location=REGION
次のように置き換えます。
PROJECT_ID: プロジェクト IDREGION: エンドポイントがデプロイされているリージョン
特定のアウトバウンド エンドポイントの詳細を表示するには、gcloud beta dns outbound-endpoints describe コマンドを実行します。
gcloud beta dns outbound-endpoints describe ENDPOINT_NAME \
--project=PROJECT_ID \
--location=REGION
次のように置き換えます。
ENDPOINT_NAME: アウトバウンド エンドポイントの名前PROJECT_ID: プロジェクト IDREGION: エンドポイントがデプロイされているリージョン
API
リージョン内のすべてのアウトバウンド エンドポイントを一覧表示するには、GET リクエストを送信します。
GET https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints
次のように置き換えます。
PROJECT_ID: プロジェクト IDREGION: エンドポイントがデプロイされているリージョン
特定のアウトバウンド エンドポイントの詳細を表示するには、GET リクエストを送信します。
GET https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints/ENDPOINT_NAME
次のように置き換えます。
PROJECT_ID: プロジェクト IDREGION: エンドポイントがデプロイされているリージョンENDPOINT_NAME: アウトバウンド エンドポイントの名前
アウトバウンド エンドポイントを削除する
アウトバウンド エンドポイントを削除する前に、そのエンドポイントを参照している転送ゾーンまたは DNS サーバー ポリシーからエンドポイントの関連付けを解除する必要があります。詳細については、アウトバウンド エンドポイントに関連付けられたネットワーク リソースを管理するをご覧ください。
アウトバウンド エンドポイントをすべての転送ゾーンと DNS サーバー ポリシーから関連付けを解除したら、次の手順でエンドポイントを削除します。
コンソール
Google Cloud コンソールで、[Cloud DNS] ページに移動します。
[アウトバウンド エンドポイント] タブに移動します。
削除するアウトバウンド エンドポイントを選択し、[削除] をクリックします。
gcloud
gcloud beta dns outbound-endpoints delete コマンドを実行します。
gcloud beta dns outbound-endpoints delete ENDPOINT_NAME \
--project=PROJECT_ID \
--location=REGION
次のように置き換えます。
ENDPOINT_NAME: 削除するアウトバウンド エンドポイントの名前PROJECT_ID: プロジェクト IDREGION: エンドポイントがデプロイされているリージョン
API
outboundEndpoints.delete メソッドを使用します。
DELETE https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints/ENDPOINT_NAME
次のように置き換えます。
PROJECT_ID: プロジェクト IDREGION: エンドポイントがデプロイされているリージョンENDPOINT_NAME: 削除するアウトバウンド エンドポイントの名前
トラブルシューティング
アウトバウンド エンドポイントに関連するエラーを診断して解決する方法については、トラブルシューティングをご覧ください。
次のステップ
- アウトバウンド エンドポイントの詳細を確認する。