Bekerja dengan Cloud DNS

Halaman ini menunjukkan cara mengonfigurasi setelan DNS untuk domain menggunakan Cloud DNS dan Cloud Tools for PowerShell. Langkah ini akan memberikan contoh sederhana pembuatan zona terkelola untuk mengatur domain dan subdomainnya, lalu menambahkan data resource ke zona tersebut untuk memberikan informasi yang menentukan perilaku server DNS saat menangani permintaan ke domain zona.

Dokumen ini mengasumsikan bahwa Anda memiliki nama domain dan alamat IP yang dapat menjadi tujuan untuk mengarahkan nama domain. Jika belum, Anda dapat mendaftarkan nama domain melalui Google Domains atau registrar domain lain pilihan Anda.

Baca referensi cmdlet Cloud Tools for PowerShell untuk mempelajari cmdlet Cloud DNS lebih lanjut. Untuk mempelajari lebih lanjut Cloud DNS secara umum, baca Ringkasan Cloud DNS.

Membuat zona terkelola untuk domain Anda

Keseluruhan namespace DNS terdiri dari banyak domain, yang akan segera menyertakan nama domain Anda sendiri. Zona terkelola di zona DNS model Cloud DNS dan berfungsi sebagai container untuk mengatur data DNS (seperti entri A, CNAME, atau TXT) untuk akhiran nama DNS yang sama. Misalnya, data untuk "example.com." dan subdomain seperti "first.example.com." dapat berada di zona yang sama karena memiliki akhiran "example.com". Perhatikan titik di akhir, yang diperlukan dan menandakan nama DNS absolut.

Untuk memulai, siapkan zona terkelola untuk mengatur data DNS yang akan Anda buat untuk nama domain Anda. Anda dapat membuat zona terkelola baru dan menambahkannya ke project Konsol Google Cloud menggunakan cmdlet Add-GcdManagedZone:

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

Tindakan ini akan membuat zona baru dengan detail yang ditentukan dan menambahkannya ke project saat ini dari konfigurasi gcloud CLI yang aktif, meskipun Anda juga memiliki opsi untuk menentukan project ID yang berbeda jika diinginkan. Tindakan ini juga akan membuat data NS dan SOA default di zona untuk Anda.

Namun, untuk memublikasikan data baru di zona tersebut ke internet, Anda juga perlu memperbarui server nama domain agar menggunakan Cloud DNS. Meskipun domain Anda terdaftar di Google Domains, Anda tetap harus mengupdate server namanya.

Anda dapat menemukan server nama Cloud DNS yang ditetapkan untuk domain Anda menggunakan cmdlet Get-GcdManagedZone pada zona terkelola yang mengatur domain untuk menampilkan informasi tentang zona tersebut:

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

Menambahkan dan menghapus kumpulan data resource

Data resource DNS memberikan informasi yang menentukan perilaku server DNS saat menangani permintaan yang dikirim ke domain. Misalnya, data DNS dapat digunakan untuk memberi tahu server ke alamat IP mana domain di-resolve, menunjukkan server pertukaran email yang dapat digunakan untuk sebuah domain, dan banyak lagi.

Di Cloud DNS, Anda dapat menambahkan atau menghapus data DNS di suatu zona untuk mengonfigurasi perilaku tersebut. Untuk menambahkan atau menghapus kumpulan data resource yang tidak dapat diubah, Anda tidak boleh mengoperasikan data di zona secara langsung. Anda dapat membuat data resource independen atau mengambil data yang sudah ada menggunakan cmdlet New-GcdResourceRecordSet dan Get-GcdResourceRecordSet, lalu mengirimkan permintaan perubahan dengan data ini ke zona tertentu menggunakan cmdlet Add-GcdChange.

Membuat set data resource

Anda dapat menggunakan New-GcdResourceRecordSet cmdlet helper untuk membuat kumpulan data resource yang dapat dimasukkan ke dalam perubahan, lalu ditambahkan ke atau dihapus dari zona terkelola.

Misalnya, jika ingin membuat data A untuk mengarahkan domain ke alamat IPv4 eksternal dalam format #.#.#.# (jika memiliki alamat IPv6, gunakan data AAAA), Anda dapat menggunakan perintah berikut:

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

Demikian pula, untuk membuat data CNAME untuk subdomain www sehingga "www.example.com." ditetapkan ke IP yang sama dan berperilaku sama seperti "example.com". Anda dapat menggunakan perintah berikut:

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

Jenis data resource yang didukung dan dapat Anda buat dan sertakan dalam perubahan zona adalah A, AAAA, CNAME, MX, NAPTR, NS, PTR, SOA, SPF, SRV, dan TXT. Untuk membantu memutuskan data yang Anda perlukan dan cara membuatnya, lihat format data resource yang didukung untuk Cloud DNS.

Mengambil kumpulan data resource

Jika ingin mengambil kumpulan data resource yang ada dalam suatu zona, Anda dapat menggunakan cmdlet Get-GcdResourceRecordSet untuk menampilkan semua record dalam zona, lalu mengindeks hasilnya:

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

Jika hanya menginginkan kumpulan data dengan jenis tertentu, Anda dapat memfilter hasilnya sesuai dengan:

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

Menerapkan perubahan pada zona terkelola

Cmdlet New-GcdResourceRecordSet dan Get-GcdResourceRecordSet menampilkan kumpulan data resource, tetapi tidak menambahkan data ke atau menghapusnya dari apa pun. Untuk itu, gunakan cmdlet Add-GcdChange:

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

Misalnya, untuk menambahkan data A dan CNAME yang Anda buat di atas ke zona kami, lakukan hal berikut:

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

Jika nantinya ingin mengubah alamat IPv4 yang ditetapkan oleh domain, Anda dapat membuat data jenis A baru, lalu menambahkannya ke zona terkelola sekaligus menghapus data A lama:

$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

Setiap panggilan ke cmdlet Add-GcdChange akan menampilkan objek permintaan perubahan yang baru dieksekusi. Anda juga dapat meneruskan objek permintaan perubahan ke cmdlet Add-GcdChange untuk dijalankan langsung, bukan daftar kumpulan data resource:

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

Membuat objek permintaan perubahan secara manual tidak direkomendasikan, tetapi berguna jika Anda ingin menerapkan kembali perubahan yang dibuat sebelumnya atau yang dibuat di zona berbeda. Anda dapat mengambil semua objek permintaan perubahan sebelumnya yang diterapkan ke suatu zona menggunakan cmdlet Get-GcdChange:

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

Anda dapat memilih perubahan tertentu dengan mengindeks hasil sebelumnya, atau menentukan perubahan yang akan diambil dengan ChangeId. Permintaan perubahan biasanya diberi nomor dari 0 dan seterusnya berdasarkan urutan pengirimannya ke zona:

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

Menghapus zona terkelola

Terkadang, Anda mungkin ingin menghapus semua zona terkelola. Ini bisa karena berbagai alasan. Mungkin Anda memiliki zona terkelola "user1-zone" untuk subdomain "user1.example.com.", tetapi user1 menghapus akunnya, sehingga Anda ingin menghapus subdomain ini dan semua data DNS terkait.

Untuk menghapus zona terkelola dari project Anda, gunakan cmdlet Remove-GcdManagedZone:

Remove-GcdManagedZone -Zone "user1-zone"

Jika berhasil, perintah tidak menampilkan apa pun.

Namun, cmdlet ini tidak segera berfungsi pada setelan yang dianggap Cloud DNS sebagai zona terkelola yang "tidak kosong", atau zona yang berisi data jenis non-NS atau non-SOA (data non-default). Misalnya, Anda tidak akan dapat menghapus "my-new-zone", tempat Anda menambahkan data jenis A dan CNAME, tanpa memberikan izin ke cmdlet selama pemrosesan atau menggunakan switch -Force:

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

Cmdlet Remove-GcdManagedZone juga menerima input pipeline untuk zona yang akan dihapus. Misalnya, perintah berikut secara paksa menghapus semua zona yang dikelola dalam project saat ini. Hal ini mungkin berguna jika Anda tidak lagi mengelola salah satu domain yang disiapkan dalam project:

Get-GcdManagedZone | Remove-GcdManagedZone -Force