dig sampai ketemu titik yang perlu diperbaiki.
Gejala yang biasanya muncul
dig domainanda.com lewat resolver publik memberi status SERVFAIL atau berakhir dengan timeout. Situs tidak terbuka, dan email ikut terganggu karena MX domain juga tidak bisa di-resolve. Domain lain di server yang sama tetap normal kalau domain itu memakai nameserver pihak ketiga.
Gejalanya sering campuran. Dari satu jaringan domain masih terbuka, dari jaringan lain tidak. Ini mudah dikira propagasi, padahal biasanya itu cache resolver yang pelan-pelan kedaluwarsa. Resolver yang masih menyimpan jawaban lama masih bisa melayani. Resolver yang harus bertanya ulang dari awal yang gagal.
Ada variasi lain kalau server lama masih menyala dan masih menjawab DNS. Domain tidak gagal total, tapi mengarah ke data lama, misalnya IP website lama. Ini membingungkan karena tampak berhasil. Padahal akar masalahnya sama: resolver masih diarahkan ke server DNS lama.
Pastikan dulu server DNS baru memang menjawab
BASH
# Ganti 203.0.113.10 dengan IP server DNS baru
dig @203.0.113.10 domainanda.com A +norec
dig @203.0.113.10 ns1.domainanda.com A +norecaa (authoritative answer, artinya server ini mengaku pemilik zona), dan berisi IP yang benar. Kalau perintah timeout, cek service dan firewall. Kalau hasilnya REFUSED atau SERVFAIL, biasanya zona belum termuat atau server belum dikonfigurasi sebagai authoritative untuk domain itu.
Jalankan perintah ini dari jaringan lain juga, jangan cuma dari VPS itu sendiri. Query dari dalam server bisa lolos walaupun firewall di depan server memblokir akses dari luar. Kalau dari luar pun jawabannya benar, server baru sudah beres, dan masalahnya ada di cara resolver menemukan server ini.
Kenapa ganti record A ns1 di zona sendiri tidak cukup
Membaca jalur resolusi dengan dig +trace
dig +trace meniru kerja resolver dari nol. Dig bertanya ke root, lalu ke server TLD, lalu ke nameserver domain, tanpa memakai cache resolver lokal. Setiap blok output diakhiri baris Received ... from yang menyebut server mana yang menjawab tahap itu.
Perhatikan tahap terakhir. Kalau dig gagal menghubungi nameserver domain, biasanya muncul pesan timeout atau error yang menyebut IP tujuan. Kalau IP itu adalah IP server lama, kamu sudah punya petunjuk kuat bahwa referral dari TLD masih membawa glue lama. Tampilan output berbeda antar versi dig. Ada versi yang menampilkan NS di tiap tahap tapi tidak menampilkan glue-nya, jadi jangan berhenti di sini.
+trace juga berguna untuk tahu server mana yang memberi referral, yaitu blok tepat sebelum nameserver kamu muncul. Ini membantu untuk domain second-level seperti .co.id, karena kamu tidak perlu menebak zona induknya.
Bertanya langsung ke server TLD
+norec. Contoh di bawah memakai .com. Untuk TLD lain, ganti nama TLD dan servernya sesuai hasil perintah pertama atau hasil +trace.
BASH
# Daftar nameserver TLD (ganti 'com' sesuai TLD domain)
dig NS com +short
# Minta referral untuk domain, tanpa rekursi
dig @a.gtld-servers.net domainanda.com NS +norec
# Cek glue IPv4 dan IPv6 untuk host nameserver
dig @a.gtld-servers.net ns1.domainanda.com A +norec
dig @a.gtld-servers.net ns1.domainanda.com AAAA +norecaa dan bagian ANSWER-nya kosong. Itu normal karena ini referral. Yang dibaca adalah AUTHORITY SECTION (daftar NS) dan ADDITIONAL SECTION (glue). Berikut contoh format output. IP dan TTL di sini hanya ilustrasi:
TEXT
;; AUTHORITY SECTION:
domainanda.com. 172800 IN NS ns1.domainanda.com.
domainanda.com. 172800 IN NS ns2.domainanda.com.
;; ADDITIONAL SECTION:
ns1.domainanda.com. 172800 IN A 192.0.2.10
ns2.domainanda.com. 172800 IN A 192.0.2.11Memperbarui glue dan memastikan hasilnya
+norec ke server TLD, bukan lewat resolver publik. Resolver publik bisa masih menyimpan cache lama dan memberi kesan perubahan belum masuk. Lama perubahan sampai di server TLD tergantung registry dan registrar.
Kalau server TLD sudah menunjukkan IP baru, sisanya adalah cache. Resolver yang sempat menyimpan referral lama memegangnya sampai TTL habis. Nilai TTL bisa kamu baca di kolom kedua output tadi, dan di beberapa TLD nilainya cukup panjang. Selama masa ini, akan sangat membantu kalau server lama masih menyala dan menjawab dengan data yang benar, atau setidaknya tidak dimatikan dulu.
Kalau pindah server sekaligus pindah penyedia DNS dan domainnya memakai DNSSEC, ada lapisan lain yang perlu dicek, yaitu DS record di registrar. Pembahasannya ada di artikel tentang SERVFAIL setelah pindah DNS provider dengan DNSSEC.
Untuk migrasi berikutnya, urutannya bisa dibalik supaya masalah ini tidak muncul. Siapkan DNS di server baru, pastikan server itu menjawab dengan benar dari luar, perbarui glue di registrar, konfirmasi lewat server TLD, tunggu TTL delegasi lewat, baru matikan server lama. Kalau keluhan seperti ini datang ke support, urutan cek yang paling cepat adalah query langsung ke IP server baru, lalu dig +trace, lalu query +norec ke server TLD. Biasanya tiga langkah itu sudah cukup untuk membedakan masalah di server, masalah cache, atau glue yang masih tertinggal.