Cloud DNS FQDN アウトバウンド DNS 転送

1. はじめに

ef2d068c413a15bd.png

この Codelab では、完全修飾ドメイン名(FQDN)を転送先として使用して、Cloud DNS アウトバウンド転送ゾーンを設定する方法について説明します。この機能を使用すると、転送ゾーンの構成で IP アドレスをハードコードするのではなく、DNS 名から解決された IP アドレスに DNS トラフィックを転送できます。これは、バックエンド DNS リゾルバの IP アドレスが変更された場合に特に便利です。FQDN の DNS レコードを更新すると、Cloud DNS が自動的に変更を反映します。

この Codelab を完了すると、次のものを使用する Cloud DNS 転送ゾーンを構成できるようになります。

  • A/AAAA レコードを含む限定公開ゾーンと一致する FQDN ターゲット。
  • リージョン アフィニティまたはトラフィック分散用の Cloud DNS ルーティング ポリシー(位置情報または重み付きラウンドロビン)でバックアップされた FQDN ターゲット。

FQDN 転送の概要

Cloud DNS 転送を使用すると、Google Cloud Platform リソースから Google Cloud Platform の外部(オンプレミスや他のクラウドなど)でホストされている限定公開 DNS 名を解決できます。従来、この機能はターゲット IP アドレスのリストへの転送をサポートしていました。FQDN 転送では、転送ゾーンで FQDN を転送ターゲットとして指定できます。

FQDN が指定されると、Cloud DNS は内部ルックアップを使用して IP アドレスに解決します。この内部ルックアップでは、送信元ネットワークの解決ロジックが使用されます。つまり、FQDN ターゲットは、限定公開ゾーン、DNS ルーティング ポリシー(位置情報または重み付きラウンドロビン)、さらにはインターネットのパブリック ドメイン名にも一致できます。Cloud DNS は、解決された宛先 IP にクエリを転送します。

作成するアプリの概要

新しい限定公開ゾーンを使用したリージョン FQDN 転送

DNS トラフィックのリージョン アフィニティを実現する設定を構築します。これには、限定公開 DNS ゾーンを作成して、そのゾーン内に地理位置情報ルーティング ポリシーを構成し、転送ゾーンをこの FQDN ターゲットにリンクすることが含まれます。これにより、特定のリージョン(us-east1 など)からのトラフィックが対応するリージョン DNS サーバーに転送されます。

既存の限定公開ゾーンを使用した FQDN 転送

このチュートリアルでは、既存のプライベート DNS ゾーン内の A レコードまたは AAAA レコードでバックアップされた FQDN をターゲットとする転送ゾーンを作成する方法について説明します。これは、FQDN 転送ターゲットを使用して解決された静的に定義された IP アドレスにクエリを転送する方法を示しています。

学習内容

FQDN 転送のコンセプト

FQDN 転送は、送信クエリの転送先として IP アドレスだけでなく FQDN 転送先を指定できるようにすることで、DNS 転送を拡張するものです。

FQDN 転送のメリット

この機能により、バックエンド DNS リゾルバの IP アドレスが変更されたときに手動で更新する必要がなくなります。Cloud DNS は、FQDN の DNS レコードから変更を自動的に取得します。また、DNS サーバーを共有名の背後に配置したり、動的にスケーリングしたりできるため、DNS インフラストラクチャのスケーリングをより柔軟に行うことができます。

Cloud DNS ルーティング ポリシーとの統合

FQDN 転送を Cloud DNS ルーティング ポリシー(位置情報または重み付きラウンドロビン)と組み合わせて、リージョン アフィニティを実現し、地理的に分散したデプロイのパフォーマンスを最適化し、構成された重みに基づいてトラフィックを分散する方法について説明します。

Google Cloud CLI コマンド構文

FQDN 転送ゾーンの設定に使用する gcloud dns managed-zones create コマンドと関連するフラグ(--forwarding-targets--private-forwarding-targets)について説明します。

前提条件

この Codelab を完了するには、次のものが必要です。

2. 設定方法

FQDN 転送のシナリオについて

Cloud DNS FQDN 転送は、次のようないくつかのユースケースをサポートしています。

  • A/AAAA レコードを含む限定公開ゾーン: FQDN が限定公開ゾーンの A/AAAA レコードと一致する場合、解決された IP アドレスが転送リストに追加され、ターゲット IP アドレスに直接転送する場合と同じ動作になります。
  • 位置情報ポリシーを含む限定公開ゾーン: 位置情報ポリシーを使用すると、送信元の位置情報を指定して対応する回答を提供し、地域に基づくトラフィック分布を検証できます。これは、リージョン DNS 転送とアフィニティの鍵となります。
  • 重み付きラウンドロビン(WRR)ポリシーを使用した限定公開ゾーン: WRR ポリシーを使用すると、DNS 名の IP アドレスごとに異なる重みを指定し、構成された重みに従ってトラフィックが分散されることを確認できます。
  • A/AAAA レコードを含むパブリック ゾーン: FQDN が同じネットワークに表示されるプライベート名と一致しない場合、Cloud DNS はパブリック インターネットを使用して解決を試みます。

FQDN 転送の Google Cloud CLI コマンドについて

gcloud CLI コマンドを使用して FQDN 転送ターゲットを含む転送ゾーンを作成するには、gcloud dns managed-zones create コマンドを使用します。FQDN ターゲットを指定するためのキーフラグは --forwarding-targets または --private-forwarding-targets です。標準ルーティングと限定公開ルーティングの方法の詳細については、ドキュメントをご覧ください。

  • --forwarding-targets: ゾーンがクエリを転送するターゲット ネームサーバーの IPv4/IPv6 アドレスのリストまたは 1 つのドメイン名。公開設定では無視されます。RFC1918 以外のアドレスは、インターネット経由で転送先に転送されます。RFC1918 アドレスは VPC 経由で転送されます。
  • --private-forwarding-targets: ゾーンがクエリを転送するターゲット ネームサーバーの IPv4/IPv6 アドレスのリストまたは 1 つのドメイン名。公開設定では無視されます。このパラメータに指定されたすべてのアドレスは、VPC を介して到達します。

構文例:

gcloud dns managed-zones create NAME \
    --description=DESCRIPTION \
    --dns-name=DNS_SUFFIX \
    --networks=VPC_NETWORK_LIST \
    --forwarding-targets=DEFAULT_FQDN_TARGET \
    --visibility=private

--forwarding-targets の代わりに --private-forwarding-targets を指定できます。

Google Cloud Platform プロジェクトを設定する

gcloud CLI にログインします。

gcloud auth login

プロジェクトを作成する。

gcloud projects create my-codelab-project

Cloud DNS API を有効にします。この設定が有効になるまで数分かかることがあります。

gcloud services enable dns.googleapis.com

この Codelab では、新しいプロジェクトで作成されるデフォルトの VPC ネットワークを使用します。代わりに新しいネットワークを作成することもできます。

3. リージョン FQDN 転送を設定する(新しい限定公開ゾーンを使用)

このシナリオでは、特定のリージョンからのトラフィックが同じリージョン内の DNS サーバーに転送されるように、リージョン DNS 転送を実現する方法を示します。

限定公開 DNS ゾーンを作成する

まず、FQDN とそれに関連付けられた地理位置情報ルーティング ポリシーをホストする限定公開 DNS ゾーン(foo.com など)を作成します。このゾーンはデフォルト ネットワークから見える必要があります。

gcloud dns managed-zones create my-zone \
    --description="Private Zone for FQDN outbound DNS forwarding." \
    --dns-name=foo.com. \
    --networks=default \
    --visibility=private

限定公開ゾーン内に位置情報に基づくルーティング ポリシー レコード セットを作成する

次に、my-zone 内にレコードセット(geo.foo.com など)を作成し、位置情報ルーティング ポリシーを適用します。この例では、asia-east1 と asia-west1 の IP アドレスを構成します。

gcloud dns record-sets create geo.foo.com. \
    --ttl="30" \
    --type="A" \
    --zone="my-zone" \
    --routing-policy-type="GEO" \
    --routing-policy-data="asia-east1=192.168.0.1;us-central1=192.168.0.2"

注: ジオフェンシングが無効になっている場合(デフォルトで推奨)、元のリージョンのターゲットが異常な場合は、最も近い正常なリージョンにクエリが送信されます。

FQDN ターゲットを使用して転送ゾーンを作成する

同じデフォルト ネットワークで表示される転送ゾーン(geo.test.com.)を作成し、転送先として geo.foo.com.(地理位置情報ルーティング ポリシーを含む FQDN)を設定します。

gcloud dns managed-zones create my-geo-fwd-zone \
    --description="Forwarding zone for FQDN outbound DNS forwarding for routing policy." \
    --dns-name=geo.test.com. \
    --networks=default \
    --private-forwarding-targets=geo.foo.com. \
    --visibility=private

geo.test.com に一致する DNS クエリは、クエリの送信元リージョンに基づいて、geo.foo.com の解決済み IP(192.168.0.1 や 192.168.0.2 など)に転送されます。

4. FQDN 転送を設定する(既存のプライベート ゾーンを使用)

既存の限定公開 DNS ゾーンがある

default ネットワークに表示される my-zone(foo.com.)という名前の限定公開 DNS ゾーンがすでにあるとします。

この限定公開ゾーン内に DNS リソース レコードを作成する

既存の my-zone 内に a.foo.com. の A タイプレコードを作成します。

gcloud dns record-sets create a.foo.com. \
    --ttl="30" \
    --type="A" \
    --zone="my-zone" \
    --rrdatas=1.2.3.4

転送ゾーンを作成し、FQDN ターゲットを指定する

リージョン FQDN のシナリオと同様に、転送ゾーンを作成し、転送ターゲットとして a.foo.com. を指定します。

gcloud dns managed-zones create my-a-fwd-zone \
    --description="Forwarding zone for FQDN outbound DNS forwarding for A record." \
    --dns-name=a.test.com. \
    --networks=default \
    --private-forwarding-targets=a.foo.com. \
    --visibility=private

a.test.com. に一致する DNS クエリは、a.foo.com. の解決済み IP アドレス 1.2.3.4 に転送されます。

5. クリーンアップ

限定公開ゾーンを削除する前に、限定公開ゾーン内のすべての ResourceRecordSet を削除する必要があります(NS レコードと SOA レコードは自動的に生成され、常に限定公開ゾーンに存在する必要があるため、例外です)。

限定公開ゾーンの地理位置情報ルーティング ポリシーを削除します。

gcloud dns record-sets delete "geo.foo.com." --type="A" --zone="my-zone"

限定公開ゾーンの A レコードを削除します。

gcloud dns record-sets delete "a.foo.com." --type="A" --zone="my-zone"

プライベート ゾーンを削除します。

gcloud dns managed-zones delete "my-zone"

位置情報ルーティング ポリシーの転送ゾーンを削除します。

gcloud dns managed-zones delete "my-geo-fwd-zone"

A レコードの転送ゾーンを削除します。

gcloud dns managed-zones delete "my-a-fwd-zone"

6. 完了

お疲れさまでした。これで、FQDN アウトバウンド DNS 転送の使用方法を学習しました。

関連情報

リファレンス ドキュメント