ゾーンの作成、変更、削除

このページでは、Cloud DNS のマネージド ゾーンの作成、更新、一覧表示、削除について説明します。このページを使用する前に、Cloud DNS の概要主な用語を理解しておいてください。

始める前に

Cloud DNS API を使用するには、Cloud DNS プロジェクトを作成して、Cloud DNS API を有効にする必要があります。

REST API を使用するアプリケーションを作成する場合は、OAuth 2.0 クライアント ID も作成する必要があります。

  1. Google アカウントをまだお持ちでない場合は、Google アカウントを登録します。
  2. Google Cloud コンソールで Cloud DNS API を有効にします。既存の Compute Engine または App Engine プロジェクトを選択するか、新しいプロジェクトを作成できます。
  3. REST API にリクエストを行う必要がある場合は、OAuth 2.0 の ID を作成する必要があります。OAuth 2.0 を設定をご覧ください。
  4. プロジェクトの次の情報をメモします。この情報は、後の手順で入力する必要があります。
    • クライアント ID(xxxxxx.apps.googleusercontent.com)。
    • 使用するプロジェクト ID。この ID は、Google Cloud コンソールの [概要] ページの上部で確認できます。また、ユーザーがアプリで使用するプロジェクト名を入力するように設定することも可能です。

Google Cloud CLI を実行したことがない場合は、次のコマンドを実行してプロジェクト名を指定し、Google Cloud コンソールで認証する必要があります。

gcloud auth login

別のプロジェクトの Google Cloud リソースに対して gcloud コマンドを実行する場合は、このページ全体を通して、このコマンドと他の gcloud コマンドに対して --project オプションを指定します。

マネージド ゾーンを作成する

作成する各マネージド ゾーンは、Google Cloud プロジェクトに関連付けられています。次に示す各セクションでは、Cloud DNS がサポートするマネージド ゾーンのタイプを作成する方法について説明します。

一般公開ゾーンを作成する

新しいマネージド ゾーンを作成するには、次の手順を行います。

コンソール

  1. Google Cloud Console で、[DNS ゾーンの作成] ページに移動します。

    [DNS ゾーンの作成] に移動

  2. [ゾーンのタイプ] で [公開] を選択します。

  3. ゾーン名(例: my-new-zone)を入力します。

  4. 所有しているドメイン名を使用して、ゾーンの DNS 名のサフィックスを入力します。ゾーン内のすべてのレコードがこのサフィックスを共有します(example.com など)。

  5. [DNSSEC] で、[オフ]、[オン]、または [転送] を選択します。詳細については、マネージド ゾーンの DNSSEC を有効にするをご覧ください。

  6. [作成] をクリックします。[ゾーンの詳細] ページが表示されます。

gcloud

dns managed-zones create コマンドを実行します。

gcloud dns managed-zones create NAME \
    --description=DESCRIPTION \
    --dns-name=DNS_SUFFIX \
    --labels=LABELS \
    --visibility=public

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

  • NAME: ゾーンの名前
  • DESCRIPTION: ゾーンの説明
  • DNS_SUFFIX: ゾーンの DNS サフィックス(例: example.com
  • LABELS: dept=marketingproject=project1 などの Key-Value ペアのカンマ区切りリスト。詳しくは、SDK のドキュメントをご覧ください。

Terraform

resource "google_dns_managed_zone" "example_zone" {
  name        = "example-zone"
  dns_name    = "example-${random_id.rnd.hex}.com."
  description = "Example DNS zone"
  labels = {
    name = "value"
  }
}

resource "random_id" "rnd" {
  byte_length = 4
}

API

managedZones.create メソッドを使用して、POST リクエストを送信します。

POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones
{
  "name": "NAME",
  "description": "DESCRIPTION",
  "dnsName": "DNS_NAME",
  "visibility": "public"
}

以下を置き換えます。

  • PROJECT_ID: マネージド ゾーンが作成されるプロジェクトの ID
  • NAME: ゾーンの名前
  • DESCRIPTION: ゾーンの説明
  • DNS_NAME: ゾーンの DNS サフィックス(例: example.com

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

Cloud DNS が管理するプライベート DNS レコードを持つ新しい限定公開マネージド ゾーンを作成するには、次の手順を実行します。詳しくは、Cloud DNS 限定公開ゾーンのベスト プラクティスをご覧ください。

コンソール

  1. Google Cloud Console で、[DNS ゾーンの作成] ページに移動します。

    [DNS ゾーンの作成] に移動

  2. [ゾーンのタイプ] で [非公開] を選択します。

  3. ゾーン名(例: my-new-zone)を入力します。

  4. 限定公開ゾーンの DNS 名のサフィックスを入力します。ゾーン内のすべてのレコードがこのサフィックスを共有します(example.private など)。

  5. (省略可)説明を追加します。

  6. [オプション] で、[デフォルト(限定公開)] を選択します。

  7. 非公開ゾーンを表示する Virtual Private Cloud(VPC)ネットワークを選択します。選択した VPC ネットワークのみが、ゾーン内のレコードを照会できます。

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

gcloud

dns managed-zones create コマンドを実行します。

gcloud dns managed-zones create NAME \
    --description=DESCRIPTION \
    --dns-name=DNS_SUFFIX \
    --networks=VPC_NETWORK_LIST \
    --labels=LABELS \
    --visibility=private

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

  • NAME: ゾーンの名前
  • DESCRIPTION: ゾーンの説明
  • DNS_SUFFIX: ゾーンの DNS サフィックス(例: example.private
  • VPC_NETWORK_LIST: ゾーンに対するクエリ実行が許可されている VPC ネットワークのカンマ区切りのリスト。
  • LABELS: dept=marketingproject=project1 などの Key-Value ペアのカンマ区切りリスト。詳しくは、SDK のドキュメントをご覧ください。

Terraform

resource "google_dns_managed_zone" "private_zone" {
  name        = "private-zone"
  dns_name    = "private.example.com."
  description = "Example private DNS zone"
  labels = {
    foo = "bar"
  }

  visibility = "private"

  private_visibility_config {
    networks {
      network_url = google_compute_network.network_1.id
    }
    networks {
      network_url = google_compute_network.network_2.id
    }
  }
}

resource "google_compute_network" "network_1" {
  name                    = "network-1"
  auto_create_subnetworks = false
}

resource "google_compute_network" "network_2" {
  name                    = "network-2"
  auto_create_subnetworks = false
}

API

managedZones.create メソッドを使用して、POST リクエストを送信します。

POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones
{

"name": "NAME",
"description": "DESCRIPTION",
"dnsName": "DNS_NAME",
"visibility": "private"
"privateVisibilityConfig": {
    "kind": "dns#managedZonePrivateVisibilityConfig",
    "networks": [{
            "kind": "dns#managedZonePrivateVisibilityConfigNetwork",
            "networkUrl": VPC_NETWORK_1
        },
        {
            "kind": "dns#managedZonePrivateVisibilityConfigNetwork",
            "networkUrl": VPC_NETWORK_2
        },
        ....
    ]
}

以下を置き換えます。

  • PROJECT_ID: マネージド ゾーンが作成されるプロジェクトの ID
  • NAME: ゾーンの名前
  • DESCRIPTION: ゾーンの説明
  • DNS_NAME: ゾーンの DNS サフィックス(例: example.private
  • VPC_NETWORK_1VPC_NETWORK_2: 同じプロジェクト内の VPC ネットワークの URL。このゾーンのレコードに対してクエリを実行できます。上記に示すように、複数の VPC ネットワークを追加できます。VPC ネットワークの URL を確認するには、次の gcloud コマンドを使用します。VPC_NETWORK_NAME はネットワーク名に置き換えます。

    gcloud compute networks describe VPC_NETWORK_NAME \
     --format="get(selfLink)"
    

固有の IAM 権限を持つゾーンを作成する

個々のリソース マネージド ゾーンに対する Identity and Access Management(IAM)権限を使用すると、同じプロジェクトの異なるマネージド ゾーンで個別に読み取り権限、書き込み権限、管理者権限を設定できます。

個別に Identity and Access Management(IAM)権限を使用してゾーンを作成する方法については、固有の IAM 権限を持つゾーンを作成するをご覧ください。

Service Directory の DNS ゾーンを作成する

Google Cloud ベースのサービスが DNS を介して Service Directory の名前空間に対してクエリを実行できるようにする Service Directory ゾーンを作成できます。

Service Directory DNS ゾーンの作成方法の詳細については、Service Directory DNS ゾーンの構成をご覧ください。

DNS を使用して Service Directory のクエリを行う方法については、DNS を使用したクエリをご覧ください。

Terraform

resource "google_dns_managed_zone" "private_zone" {
  name        = "private-zone"
  dns_name    = "private.example.com."
  description = "Example private DNS zone"
  labels = {
    foo = "bar"
  }

  visibility = "private"

  private_visibility_config {
    networks {
      network_url = google_compute_network.network_1.id
    }
    networks {
      network_url = google_compute_network.network_2.id
    }
  }
}

resource "google_compute_network" "network_1" {
  name                    = "network-1"
  auto_create_subnetworks = false
}

resource "google_compute_network" "network_2" {
  name                    = "network-2"
  auto_create_subnetworks = false
}

マネージド逆引き参照の限定公開ゾーンを作成する

マネージド逆引き参照ゾーンは特別な属性を持つ限定公開ゾーンです。この属性により、Cloud DNS は、Compute Engine の DNS データに対して PTR 参照を実行します。仮想マシン(VM)インスタンスの RFC 1918 以外の PTR レコードを正しく解決するには、Cloud DNS にマネージド逆引き参照ゾーンを設定する必要があります。

新しいマネージド逆引き参照ゾーンの作成手順については、マネージド逆引き参照ゾーンの作成をご覧ください。

転送ゾーンを作成する

転送ゾーンを使用すると、ネームサーバーのターゲットを特定の限定公開ゾーンにできます。新しい限定公開マネージド ゾーンを作成する方法については、転送ゾーンの作成をご覧ください。

ピアリング ゾーンを作成する

DNS ピアリングを使用すると、あるゾーンの名前空間を送信元とするレコードに対するリクエストを別の VPC ネットワークに送信できます。ピアリング ゾーンの作成方法については、ピアリング ゾーンを作成するをご覧ください。

プロジェクト間のバインディング ゾーンを作成する

同じ組織内の別のプロジェクトが所有するネットワークにバインド可能なマネージド限定公開ゾーンを作成します。プロジェクト間のバインディング ゾーンの作成方法については、プロジェクト間のバインディング ゾーンをご覧ください。

マネージド ゾーンを更新する

Cloud DNS では、マネージド一般公開ゾーンまたは 限定公開ゾーンの特定の属性を変更できます。

一般公開ゾーンを更新する

一般公開ゾーンの説明または DNSSEC 構成を変更できます。

コンソール

  1. Google Cloud Console で、Cloud DNS の [ゾーン] ページに移動します。

    Cloud DNS の [ゾーン] に移動

  2. 更新する一般公開ゾーンをクリックします。

  3. [ 編集] をクリックします。

  4. DNSSEC の設定を変更するには、[DNSSEC] で、[オフ]、[オン]、または [転送] を選択します。詳細については、マネージド ゾーンの DNSSEC の有効化をご覧ください。

  5. (省略可)説明を更新します。

  6. [保存] をクリックします。

gcloud

dns managed-zones update コマンドを実行します。

gcloud dns managed-zones update NAME \
    --description=DESCRIPTION \
    --dnssec-state=STATE

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

  • NAME: ゾーンの名前
  • DESCRIPTION: ゾーンの説明
  • STATE: DNSSEC の設定(OffOn、または Transfer

限定公開ゾーンが表示される VPC ネットワークを変更するには:

コンソール

  1. Google Cloud Console で、Cloud DNS の [ゾーン] ページに移動します。

    Cloud DNS の [ゾーン] に移動

  2. 更新する限定公開ゾーンをクリックします。

  3. [ 編集] をクリックします。

  4. 限定公開ゾーンが表示される VPC ネットワークを選択します。選択した VPC ネットワークのみがゾーン内のレコードを照会できます。

  5. [保存] をクリックします。

gcloud

dns managed-zones update コマンドを実行します。

gcloud dns managed-zones update NAME \
    --description=DESCRIPTION \
    --networks=VPC_NETWORK_LIST

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

  • NAME: ゾーンの名前
  • DESCRIPTION: ゾーンの説明
  • VPC_NETWORK_LIST: ゾーンに対するクエリ実行が許可されている VPC ネットワークのカンマ区切りのリスト。

ラベルの更新

マネージド ゾーンで、新しいラベルの追加、既存のラベルの変更、選択したラベルの削除、またはすべてのラベルの消去を行うには、次の手順を行います。

gcloud

dns managed-zones update コマンドを実行します。

gcloud dns managed-zones update NAME \
    --update-labels=LABELS
gcloud dns managed-zones update NAME \
    --remove-labels=LABELS
gcloud dns managed-zones update NAME \
    --clear-labels

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

  • NAME: ゾーンの名前
  • LABELS: dept=marketingproject=project1 などの Key-Value ペアのカンマ区切りリスト。詳しくは、SDK のドキュメントをご覧ください。

マネージド ゾーンの一覧表示と説明

以下のセクションでは、マネージド ゾーンを一覧表示または詳細表示する方法を説明します。

マネージド ゾーンを一覧表示する

プロジェクト内のすべてのマネージド ゾーンを一覧表示するには、次の手順を行います。

コンソール

  1. Google Cloud Console で、Cloud DNS の [ゾーン] ページに移動します。

    Cloud DNS の [ゾーン] に移動

  2. 右側のペインにマネージド ゾーンを表示します。

gcloud

dns managed-zones list コマンドを実行します。

gcloud dns managed-zones list

すべてのマネージド ゾーンを一覧表示するには、次のようにコマンドを変更します。

gcloud dns managed-zones list 
--filter="visibility=public"
すべての限定公開マネージド ゾーンを一覧表示するには、次のようにコマンドを変更します。

gcloud dns managed-zones list \
   --filter="visibility=private"

マネージド ゾーンを記述する

マネージド ゾーンの属性を表示するには、次の手順を行います。

コンソール

  1. Google Cloud Console で、Cloud DNS の [ゾーン] ページに移動します。

    Cloud DNS の [ゾーン] に移動

  2. 検査するゾーンをクリックします。

gcloud

dns managed-zones describe コマンドを実行します。

gcloud dns managed-zones describe NAME

NAME は使用するゾーンの名前に置き換えます。

マネージド ゾーンを削除する

ゾーンを削除すると、その DNS レコードは完全に削除され、復元できなくなります。DNS レコードが失われるのを防ぐには、削除する前にゾーンデータをエクスポートします。ゾーンデータをエクスポートする方法については、リソース レコードセットのインポートとエクスポートをご覧ください。

マネージド ゾーンを削除する方法は次のとおりです。

コンソール

  1. Google Cloud Console で、Cloud DNS の [ゾーン] ページに移動します。

    Cloud DNS の [ゾーン] に移動

  2. 削除するマネージド ゾーンをクリックします。

  3. [ゾーンを削除] をクリックします。

gcloud

  1. SOA レコードと NS レコードを除く、ゾーン内のすべてのレコードを削除します。詳細については、レコードの削除をご覧ください。ゾーン全体をすばやく空にするには、空のファイルをレコードセットにインポートします。詳しくは、レコードセットのインポートとエクスポートをご覧ください。次に例を示します。

    touch empty-file
    gcloud dns record-sets import -z NAME \
       --delete-all-existing \
       empty-file
    rm empty-file
    

    NAME は使用するゾーンの名前に置き換えます。

  2. 新しい限定公開マネージド ゾーンを削除するには、dns managed-zones delete コマンドを実行します。

    gcloud dns managed-zones delete NAME
    

    NAME は使用するゾーンの名前に置き換えます。

次のステップ