チュートリアル: Cloud DNS を使用してドメインを設定する


このチュートリアルでは、ドメインを登録してサンプルのウェブサーバーを設定し、Cloud DNS を使用してそのウェブサーバーを指すドメイン URL を設定するプロセスを最初から順に説明します。

Google Cloud で Terraform を初めて使用する場合は、Terraform を使ってみるをご覧ください。

目標

このチュートリアルでは、次のタスクを実行する方法を説明します。

  • Cloud Domains または Google Domains を使用してドメイン名を登録する
  • 仮想マシン(VM)インスタンスを作成する
  • 基本的な Apache ウェブサーバーを実行する
  • Cloud DNS を使用してドメインを設定する
  • ネームサーバーを更新する
  • 設定を確認する

費用

ドメイン名の登録には費用がかかります。Google Domains の料金については、料金とサポート対象のドメイン末尾をご覧ください。Cloud Domains の料金については、Cloud Domains の料金をご覧ください。

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

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

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

  4. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

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

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

  6. Compute Engine API を有効にします。

    API を有効にする

ドメイン名を登録します。

すでにドメインを登録している場合は、このセクションをスキップできます。

Cloud Domains を使用してドメインを登録できます。Cloud Domains では、始める前にで作成したものと同じ請求先アカウントをドメインに使用できます。Cloud Domains を使用してドメインを登録する方法については、ドメインの登録をご覧ください。

Google Domains を使用する場合、請求は Google Cloud プロジェクトから独立しています。

Google Domains を使用してドメインを登録するには、次の手順を行います。

  1. ドメインを登録するには、Google Domains にアクセスします。
  2. 使用可能なドメイン名を確認し、使用可能なドメイン名を選択します。
  3. ドメインを購入するには、[ カートに追加] をクリックします。
  4. プライバシーと自動更新の設定を選択し、[保存して次へ] をクリックします。
  5. 登録を完了します。
  6. 所有しているドメインの一覧を表示するには、左側のナビゲーション メニューで [自分のドメイン] をクリックします。

詳しくは、Google Domains スタートガイドをご覧ください。

コンソール

仮想マシン インスタンスを作成する

Compute Engine で Linux 仮想マシン(VM)インスタンスを作成するには、次の手順に沿って操作します。

  1. Google Cloud コンソールで、[インスタンスの作成] ページに移動します。

    [インスタンスの作成] に移動

  2. [ブートディスク] の [変更] をクリックし、ブートディスクの構成を開始します。
  3. [Public images] タブで [Debian version 9] を選択します。
  4. [選択] をクリックします。
  5. [ファイアウォール] で [HTTP トラフィックを許可する] を選択します。
  6. VM を作成するには、[作成] をクリックします。

インスタンスが起動するまで、しばらくお待ちください。インスタンスの準備が整うと、[VM インスタンス] ページに緑色のステータス アイコン付きで表示されます。

インスタンスへの接続

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

    [VM インスタンス] に移動

  2. 仮想マシン インスタンスのリストで、接続するインスタンスの行にある [SSH] をクリックします。

    インスタンス名の横にある SSH ボタン。

Linux インスタンスとのやり取りに使用するターミナル ウィンドウが用意されています。

詳しくは、Linux VM の使用に関するクイックスタートをご覧ください。

基本的な Apache ウェブサーバーを実行する

このセクションでは、Apache ウェブサーバーを実行してテストします。

Apache をインストールする

  1. SSH ウィンドウから、Debian パッケージ マネージャを使用して apache2 パッケージをインストールします。

    sudo apt-get update && sudo apt-get install apache2 -y
    

    Apache をインストールすると、オペレーティング システムにより Apache サーバーが自動的に起動します。

  2. 次のコマンドを使用して、Apache ウェブサーバーのデフォルトのウェブページを上書きします。

    echo "<!doctype html><html><body><h1>Hello World!</h1></body></html>" \
    | sudo tee /var/www/html/index.html
    

サーバーのテスト

インスタンスの外部 IP でトラフィックが処理されているかどうかを確認します。

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. [外部 IP] 列で、インスタンスの外部 IP アドレスをコピーします。
  3. ブラウザで、http://[EXTERNAL_IP] に移動します。接続に https を使用しないでください。サーバーが Connection Refused エラーを返します。

「Hello World!」ページが表示されます。

詳しくは、基本的な Apache ウェブサーバーを実行するをご覧ください。

Cloud DNS を使用してドメインを設定する

既存のプロバイダから移行する場合は、既存のゾーンを Cloud DNS にインポートできます。手順については、既存のプロバイダから DNS 構成をエクスポートするをご覧ください。そうでない場合は、次の手順を使用して新しい一般公開ゾーンを作成してください。

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

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

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

  3. [ゾーン名] に「my-new-zone」と入力します。

  4. [DNS 名] に、登録したドメイン名を使用してゾーンの DNS 名のサフィックスを入力します(例: example.com)。

  5. [DNSSEC] で、Off の設定が選択されていることを確認します。

  6. [作成] をクリックして、NS レコードと SOA レコードが入力されたゾーンを作成します。

  7. 登録したドメイン名がホスティング サーバーの IP アドレスを指すようにするには、レコードをゾーンに追加する必要があります。

    1. [ゾーンの詳細] ページで、[標準を追加] をクリックします。
    2. [リソース レコードのタイプ] メニューで A を選択します。
    3. [IPv4 アドレス] に、インスタンスの外部 IP アドレスを入力します。
    4. [作成] をクリックして、ゾーンの A レコードを作成します。
  8. (省略可)ドメイン名に接頭辞(www. など)を付ける場合は、CNAME レコードを追加します。

    1. [標準を追加] をクリックします。
    2. [DNS 名] フィールドに、ドメインの接頭辞 www を追加します。
    3. [リソース レコードのタイプ] で [CNAME] を選択します。
    4. [正規名] で、ドメイン名に続いてピリオドを入力します(例: example.com.)。
    5. [作成] をクリックします。
  9. [ゾーンの詳細] ページで、右上の [レジストラの設定] をクリックして、NS レコードにアクセスします。NS レコードを記録しておきます。これは、ステップ 5 に進む際に必要となります。

ネームサーバーを更新する

Google Domains のネームサーバーを更新するには、次の手順を行います。

  1. ドメインのネームサーバーを更新するには、Google Domains にアクセスします。
  2. ドメイン名を登録するで設定したドメインをクリックします。または、そのドメインの [管理] リンクをクリックします。
  3. 左側のナビゲーション メニューで [DNS] をクリックします。
  4. [ネームサーバー] で [カスタム ネームサーバーを使用する] を選択します。
  5. [ネームサーバー] フィールドに、[ゾーンの詳細] ページからコピーした NS レコード(例: ns1.googledomains.com)を 1 つずつ入力します。
  6. ネームサーバーを追加するには、[ 追加] をクリックします。
  7. Google Domains DNS ページにある 4 つのネームサーバーをすべて更新します。
  8. [保存] をクリックします。

Terraform

Terraform リソースを使用すると、仮想マシン(VM)の作成、Apache ウェブサーバーの実行、Cloud DNS を使用したドメインの設定、ネームサーバーの更新を行うことができます。

Terraform モジュールを使用して、一般公開ゾーン、限定公開ゾーン、ピアリング ゾーン、転送ゾーンで Cloud DNS を設定することもできます。ゾーンの詳細については、DNS ゾーンの概要をご覧ください。

# to setup a web-server

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

resource "google_compute_instance" "default" {
  name         = "dns-compute-instance"
  machine_type = "g1-small"
  zone         = "us-central1-b"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    network = "default"
    access_config {
      // Ephemeral public IP
    }
  }
  metadata_startup_script = <<-EOF
  sudo apt-get update && \
  sudo apt-get install apache2 -y && \
  echo "<!doctype html><html><body><h1>Hello World!</h1></body></html>" > /var/www/html/index.html
  EOF
}

# to allow http traffic
resource "google_compute_firewall" "default" {
  name    = "allow-http-traffic"
  network = "default"
  allow {
    ports    = ["80"]
    protocol = "tcp"
  }
  source_ranges = ["0.0.0.0/0"]
}

# to create a DNS zone
resource "google_dns_managed_zone" "default" {
  name          = "example-zone-googlecloudexample"
  dns_name      = "example-${random_id.rnd.hex}.com."
  description   = "Example DNS zone"
  force_destroy = "true"
}

# to register web-server's ip address in DNS
resource "google_dns_record_set" "default" {
  name         = google_dns_managed_zone.default.dns_name
  managed_zone = google_dns_managed_zone.default.name
  type         = "A"
  ttl          = 300
  rrdatas = [
    google_compute_instance.default.network_interface[0].access_config[0].nat_ip
  ]
}

設定を確認する

構成が機能していることを確認するには、ネームサーバーが更新された後、ドメイン名(example.com など)に移動します。構成が機能していると、ドメインは自分の IP アドレスに解決され、基本的な Apache ウェブサーバーを実行するで作成した「Hello World!」ページを表示する Compute Engine VM を指します。

また、設定が正しいことを確認するには、ターミナル ウィンドウで dig +trace example.com コマンドを実行することによっても行えます。example.com は、登録したドメイン名に置き換えてください。

dig +trace example.com

出力の最後には次のものが含まれます。IP_ADDRESS は、ウェブサーバーの IP アドレスです。

example.com.    300 IN  A   IP_ADDRESS
;; Received 62 bytes from 216.239.34.109#53(ns-cloud-d2.googledomains.com) in 62 ms

変更が正しく行われていれば、コマンド出力の次の行に表示される最上位のドメイン ネームサーバーが、Google Domains から当初提供されたネームサーバーではなく、Google Domains に自分で入力したカスタム ネームサーバーを指しています。

example.com IN NS <your Cloud DNS name servers>

DNS 伝搬の完了を待機した後、nslookup コマンドを実行して設定を確認することもできます。

nslookup example.com

出力は次のようになります。IP_ADDRESS は、ウェブサーバーの IP アドレスです。

Server:     127.0.0.1
Address:    127.0.0.1#53

Non-authoritative answer:
Name:   example.com
Address: IP_ADDRESS

クリーンアップ

コンソール

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

    Cloud DNS の [ゾーン] に移動

  2. ゾーン名(例: my-new-zone)をクリックして、[ゾーンの詳細] ページに移動します。

  3. 作成した A レコードと CNAME レコードを選択します。

  4. [レコードセットを削除] をクリックします。

  5. ゾーンを削除するには、ゾーン名 my-new-zone の [ ゾーンを削除] をクリックします。

  6. [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  7. 削除するインスタンスを選択します。

  8. インスタンスの行にある [ その他] メニューで、[削除] をクリックします。

次のステップ