DNS
DNS (Domain Name System, Sistem Penamaan Domain) adalah sistem hierarkis dan terdistribusi yang menerjemahkan nama domain yang mudah diingat manusia (mis. example.com) menjadi IP address yang dipahami mesin (mis. 93.184.216.34), dan sebaliknya. DNS sering diibaratkan sebagai "buku telepon internet". Standar awalnya didefinisikan dalam RFC 1034 dan RFC 1035 (1987).
Tanpa DNS, pengguna harus menghafal deretan angka IP untuk setiap layanan. DNS beroperasi di Layer 7 (Application) dan umumnya memakai port 53.
| Atribut | Nilai |
|---|---|
| Fungsi | Nama domain ↔ IP |
| RFC | RFC 1034, RFC 1035 |
| Layer (OSI) | 7 (Application) |
| Port | 53 (UDP & TCP) |
| Varian aman | DoT (853), DoH (443) |
Dua peran yang sering tertukar
Banyak kebingungan tentang DNS berasal dari mencampuradukkan dua hal berbeda yang sama-sama disebut "DNS server":
- Recursive resolver — server yang Anda tanyai. Ia menerima permintaan ("berapa IP
example.com?"), melakukan seluruh pencarian atas nama Anda, lalu mengembalikan jawaban. Inilah yang Anda isi sebagai8.8.8.8atau1.1.1.1di konfigurasi jaringan. - Authoritative server — server yang menyimpan record sebenarnya untuk suatu domain. Ia adalah sumber kebenaran, tetapi Anda hampir tidak pernah menghubunginya langsung — resolver yang mewakili Anda.
Memahami pemisahan ini adalah kunci memahami cara kerja DNS.
Komponen DNS
| Komponen | Peran |
|---|---|
| Stub resolver | Bagian kecil di OS klien yang meneruskan kueri ke recursive resolver. |
| Recursive resolver | Melakukan pencarian penuh dan menyimpan hasil di cache (mis. 8.8.8.8).
|
| Root server | 13 grup server (a–m) di puncak hierarki; mengarahkan ke server TLD. |
| TLD server | Mengelola top-level domain seperti .com, .org, .id; mengarahkan ke server otoritatif domain.
|
| Authoritative server | Menyimpan record definitif untuk suatu domain. |
Proses resolusi nama
Misalkan klien meminta IP dari www.example.com dan belum ada di cache mana pun:
- Klien (stub resolver) bertanya ke recursive resolver (mis.
1.1.1.1). - Resolver bertanya ke root server: "Di mana
.com?" Root menjawab dengan alamat server TLD .com. - Resolver bertanya ke TLD .com: "Di mana
example.com?" TLD menjawab dengan alamat authoritative server example.com. - Resolver bertanya ke authoritative server: "Berapa IP
www.example.com?" Server menjawab dengan record A:93.184.216.34. - Resolver menyimpan hasil di cache, lalu mengembalikan IP ke klien.
Klien
│ "IP www.example.com?"
▼
Recursive resolver (1.1.1.1)
│── tanya ──► Root server ──► "coba TLD .com"
│── tanya ──► TLD .com server ──► "coba authoritative example.com"
│── tanya ──► Authoritative ──► "93.184.216.34"
▼
Jawaban: 93.184.216.34 (disimpan ke cache)
Kueri dari klien ke resolver bersifat rekursif (resolver wajib mengembalikan jawaban final), sedangkan kueri resolver ke server lain bersifat iteratif (tiap server menjawab "tanya ke sana").
Caching dan TTL
Untuk menghindari pengulangan pencarian penuh, hasil disimpan di cache pada resolver (dan sebagian di OS klien). Tiap record punya TTL (Time To Live) dalam detik yang menentukan berapa lama boleh disimpan sebelum harus diperbarui. TTL rendah = perubahan cepat menyebar tetapi beban kueri tinggi; TTL tinggi = sebaliknya.
Jenis record DNS
| Record | Fungsi |
|---|---|
| A | Memetakan nama → alamat IPv4. |
| AAAA | Memetakan nama → alamat IPv6. |
| CNAME | Alias dari satu nama ke nama lain (canonical name). |
| MX | Mail exchanger; server email untuk domain. |
| NS | Menunjuk authoritative name server untuk zona. |
| PTR | Reverse lookup: IP → nama. |
| SOA | Start of Authority; metadata zona (serial, TTL, dll). |
| TXT | Teks bebas; dipakai SPF, DKIM, verifikasi domain. |
| SRV | Lokasi layanan (host + port) untuk protokol tertentu. |
Hierarki namespace
Nama domain dibaca dari kanan ke kiri, makin ke kanan makin tinggi tingkatnya:
www . example . com .
│ │ │ └─ root (titik, sering tak ditulis)
│ │ └─────── TLD
│ └────────────────── domain (second-level)
└─────────────────────────── subdomain / host
Nama lengkap berakhiran titik root disebut FQDN (Fully Qualified Domain Name), mis. www.example.com.
Resolver publik dan konfigurasi jaringan
Saat mengonfigurasi jaringan, kolom "DNS server" diisi alamat recursive resolver. Secara default, ISP memberikan resolver-nya sendiri lewat DHCP, tetapi banyak pengguna menggantinya dengan resolver publik karena alasan kecepatan, privasi, atau keandalan.
| IP | Penyedia |
|---|---|
8.8.8.8 / 8.8.4.4 |
Google Public DNS |
1.1.1.1 / 1.0.0.1 |
Cloudflare |
9.9.9.9 |
Quad9 |
208.67.222.222 |
OpenDNS (Cisco) |
Beberapa hal penting:
- Mengapa IP mentah, bukan nama? Karena DNS-lah yang menerjemahkan nama menjadi IP. Jika alamat resolver berupa nama, dibutuhkan DNS untuk menerjemahkannya — padahal DNS belum tersedia (masalah chicken-and-egg). Maka resolver harus ditulis sebagai IP mentah; ia adalah titik bootstrap sebelum resolusi nama apa pun bisa berjalan.
- Mengapa diisi dua (primary + secondary)? Redundansi. Jika resolver pertama tidak merespons, OS otomatis mencoba yang kedua.
- Anycast. IP seperti
8.8.8.8sebenarnya dilayani oleh banyak server tersebar di dunia yang berbagi satu alamat; lalu lintas Anda otomatis diarahkan ke lokasi terdekat, sehingga responsnya cepat dari mana pun.
Protokol dan port
- UDP port 53 — default untuk sebagian besar kueri (cepat, ringan).
- TCP port 53 — dipakai bila respons besar (mis. > 512 byte) atau untuk zone transfer antar server.
- DoT (DNS over TLS, port 853) dan DoH (DNS over HTTPS, port 443) — varian terenkripsi untuk privasi.
Keamanan
DNS klasik tidak terenkripsi dan rentan terhadap beberapa serangan:
- DNS spoofing / cache poisoning — penyerang menyisipkan record palsu ke cache resolver agar korban diarahkan ke situs jahat.
- DNS hijacking — pengalihan kueri ke resolver berbahaya.
Mitigasi:
- DNSSEC — menandatangani record secara kriptografis agar keasliannya bisa diverifikasi.
- DoT / DoH — mengenkripsi kueri agar tidak bisa disadap atau dimanipulasi di jalur.
Perintah praktis (Linux)
| Tujuan | Perintah |
|---|---|
| Resolusi lengkap + detail | dig www.example.com
|
| Hanya jawaban singkat | dig +short www.example.com
|
| Tanya record tertentu | dig MX example.com
|
| Reverse lookup (IP → nama) | dig -x 93.184.216.34
|
| Gunakan resolver tertentu | dig @1.1.1.1 example.com
|
| Status resolver sistem | resolvectl status
|
| Alternatif klasik | nslookup example.com, host example.com
|
Troubleshooting
- Bisa ping IP tapi tidak bisa ping nama — konektivitas jaringan oke, masalah ada di DNS. Cek resolver yang dikonfigurasi (
resolvectl statusatau/etc/resolv.conf). - Resolusi lambat — coba resolver publik (
dig @8.8.8.8) untuk membandingkan; mungkin resolver ISP yang lambat. - Jawaban tampak salah/usang — kemungkinan cache; perhatikan TTL atau bersihkan cache resolver.
- Beda hasil antar resolver — bisa karena propagasi perubahan DNS belum selesai (tunggu sesuai TTL), atau pemfilteran oleh resolver tertentu.