Cloud DNS の操作

このページでは、Cloud DNS と Cloud Tools for PowerShell を使用してドメインの DNS 設定を構成する方法について説明します。簡単な例を使って、ドメインとそのサブドメインを管理するためのマネージド ゾーンを作成し、そのゾーンにリソース レコードを追加する手順を示します。これらのレコードの情報により、そのゾーンのドメインに送られてきたリクエストを処理するときに DNS サーバーがどのように動作するかが決まります。

このドキュメントでは、ドメイン名とドメイン名が参照できる IP アドレスがあることを前提としています。ドメインをお持ちでない場合は、Google Domains または他のお好きなドメイン登録事業者を通じてドメイン名を登録できます。

Cloud DNS コマンドレットの詳細については、Cloud Tools for PowerShell コマンドレット リファレンスをご覧ください。Cloud DNS の概要については、Cloud DNS の概要をご覧ください。

ドメインのマネージド ゾーンの作成

DNS 名前空間は数多くのドメインで構成されており、登録したドメイン名はすぐにその一員になります。Cloud DNS のマネージド ゾーンは DNS ゾーンをモデルとしており、同じ DNS 名サフィックスの DNS レコード(A、CNAME、TXT などのエントリ)を整理するためのコンテナとして機能します。たとえば、「example.com.」のレコードと、「first.example.com.」などのサブドメインのレコードは、「example.com.」というサフィックスを共有しているため、同じゾーンに含めることができます。末尾にドットが付いていることに注意してください。このドットは必要なもので、完全 DNS 名であることを示します。

まず、ドメイン名のために作成する DNS レコードを整理するためのマネージド ゾーンを作成します。新しいマネージド ゾーンを作成して GCP Console プロジェクトに追加するには、Add-GcdManagedZone コマンドレットを使用します。

Add-GcdManagedZone `
    -Name "my-new-zone" `
    -DnsName "example.com." `
    -Description "This is my first zone."

これにより、指定した詳細に基づいて新しいゾーンが作成されます。作成されたゾーンは、デフォルトではアクティブな Cloud SDK 構成の現在のプロジェクトに追加されますが、必要に応じて別のプロジェクト ID を指定することもできます。そのほかに、そのゾーンのデフォルトの NS レコードと SOA レコードも作成されます。

ただし、ゾーンの新しいレコードをインターネットに公開するには、Cloud DNS を使用するようにドメインのネームサーバーを更新することも必要です。ドメインが Google Domains に登録されている場合でも、そのネームサーバーの更新は必要です。

ドメインに割り当てられている Cloud DNS ネームサーバーを見つけるには、そのドメインを管理しているマネージド ゾーンで Get-GcdManagedZone コマンドレットを使用して、そのゾーンに関する情報を取得します。

Get-GcdManagedZone -Zone "my-new-zone"

リソース レコード セットの追加と削除

DNS リソース レコードの情報により、ドメインに送られてきたリクエストを処理するときに DNS サーバーがどのように動作するが決まります。たとえば、ドメインが解決される IP アドレスや、ドメインで使用できるメール交換サーバーなど、さまざまな情報を DNS レコードでサーバーに伝えることができます。

Cloud DNS では、ゾーンの DNS レコードを追加または削除して、そのような動作を構成できます。不変のリソース レコード セットを追加または削除するには、ゾーンのレコードに直接オペレーションを実行するのではなく、独立したリソース レコードを作成するか(New-GcdResourceRecordSet コマンドレットを使用)、既存のリソース レコードを取得して(Get-GcdResourceRecordSet コマンドレットを使用)、それらのレコードを含む変更リクエストを特定のゾーンに送信します(Add-GcdChange コマンドレットを使用)。

リソース レコード セットの作成

ヘルパー コマンドレットの New-GcdResourceRecordSet を使用すると、変更に含めてマネージド ゾーンに追加したりマネージド ゾーンから削除したりできるリソース レコード セットを作成できます。

たとえば、ドメインを #.#.#.# という形式の外部 IPv4 アドレスにマップする A レコードを作成するには(IPv6 アドレスを使用している場合は AAAA レコードを作成)、次のようなコマンドを使用します。

$ARecord = New-GcdResourceRecordSet `
    -Name "example.com." -Rrdata "107.1.23.134" -Type "A"

同様に、www サブドメインの CNAME レコードを作成して、「www.example.com.」が「example.com.」と同じ IP に解決され、同じように動作するようにするには、次のようなコマンドを使用します。

$CNAMERecord = New-GcdResourceRecordSet `
    -Name "www.example.com." -Rrdata "example.com." -Type "CNAME"

作成してゾーンに対する変更に含めることができるリソース レコードのタイプは、A、AAAA、CNAME、MX、NAPTR、NS、PTR、SOA、SPF、SRV、TXT です。必要なレコードの特定と作成については、Cloud DNS でサポートされているリソース レコード形式をご覧ください。

リソース レコード セットの取得

ゾーンの既存のリソース レコード セットを取得するには、Get-GcdResourceRecordSet コマンドレットを使用してゾーンのすべてのレコードを取得し、結果のインデックスを作成します。

$allRecords = Get-GcdResourceRecordSet -Zone "my-new-zone"
$record0 = $allRecords[0]

特定のタイプのレコードのみを取得するには、結果をフィルタリングします。

$ARecord = Get-GcdResourceRecordSet -Zone "my-new-zone" -Filter "A"

マネージド ゾーンに対する変更の適用

New-GcdResourceRecordSet コマンドレットと Get-GcdResourceRecordSet コマンドレットでは、リソース レコード セットを取得することはできますが、レコードを追加したり削除したりすることはできません。そのような場合は Add-GcdChange コマンドレットを使用します。

Add-GcdChange `
    -Zone "my-new-zone" -Add $record1,$record2 -Remove $record0

たとえば、上で作成した A レコードと CNAME レコードをゾーンに追加するには、次のようにします。

Add-GcdChange -Zone "my-new-zone" -Add $ARecord,$CNAMERecord

その後、ドメインが解決される IPv4 アドレスを変更する必要が生じた場合は、新しい A レコードを作成してマネージド ゾーンに追加するとともに、古い A レコードを削除します。

$oldARecord = Get-GcdResourceRecordSet -Zone "my-new-zone" -Filter "A"
$newARecord = New-GcdResourceRecordSet `
    -Name "example.com." -Rrdata "104.1.34.167" -Type "A"
Add-GcdChange -Zone "my-new-zone" -Remove $oldARecord -Add $newARecord

Add-GcdChange コマンドレットを呼び出すたびに、新たに実行された変更リクエスト オブジェクトが返されます。Add-GcdChange コマンドレットにリソース レコード セットのリストを渡す代わりに、実行する変更リクエスト オブジェクトを直接渡すこともできます。

Add-GcdChange -Zone "my-new-zone" -ChangeRequest $change0

変更リクエスト オブジェクトは、手動で作成することはおすすめしませんが、以前に適用した変更や別のゾーンで適用した変更を再適用する場合には便利です。Get-GcdChange コマンドレットを使用すると、これまでにゾーンに適用したすべての変更リクエスト オブジェクトを取得できます。

$allChanges = Get-GcdChange -Zone "my-new-zone"

特定の変更を選択するには、前の結果のインデックスを指定するか、取得する変更を ChangeId で指定します。変更リクエストには、通常、ゾーンに送信された順に、0 から始まる番号が付いています。

$firstChange = Get-GcdChange -Zone "my-new-zone" -ChangeId 0
Add-GcdChange -Zone "my-new-zone" -ChangeRequest $firstChange

マネージド ゾーンの削除

マネージド ゾーンを丸ごと削除する必要が生じる場合もあります。これにはさまざまな理由が考えられます。たとえば、「user1.example.com.」というサブドメインのために「user1-zone」というマネージド ゾーンを作成した場合、user1 のアカウントが削除されると、そのサブドメインと、それに関連するすべての DNS レコードが不要になります。

マネージド ゾーンをプロジェクトから削除するには、Remove-GcdManagedZone コマンドレットを使用します。

Remove-GcdManagedZone -Zone "user1-zone"

成功した場合は何も返されません。

ただし、このコマンドレットは、Cloud DNS で「空でない」と見なされるマネージド ゾーン(NS または SOA 以外のタイプのレコード(デフォルト以外のレコード)が含まれているゾーン)に対しては、すぐには機能しません。たとえば、「my-new-zone」には A レコードと CNAME レコードを追加したため、このゾーンを削除するには、処理中にこのコマンドレットに権限を付与するか、-Force スイッチを使用する必要があります。

Remove-GcdManagedZone -Zone "my-new-zone" -Force

Remove-GcdManagedZone コマンドレットでは、削除するゾーンをパイプライン入力で指定することもできます。たとえば次のコマンドは、現在のプロジェクトのすべてのマネージド ゾーンを強制的に削除します。プロジェクトで作成したすべてのドメインが不要になった場合に便利です。

Get-GcdManagedZone | Remove-GcdManagedZone -Force
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Tools for PowerShell