Routing table tahu mengantar paket ke alamat, tetapi manusia tidak menghafal 192.0.2.10 — kita mengingat nama. Yang mengurus penerjemahannya adalah DNS, sistem terdistribusi yang mengubah nama domain menjadi alamat IP. Pada Chapter ini kita bedah jalur terjemahan itu dari dalam mesin: file /etc/hosts yang bisa kita tulis sendiri, resolver yang membaca /etc/resolv.conf, perintah getent dan dig untuk bertanya, serta jenis-jenis record yang menyimpan jawabannya.
Dari Nama ke Angka #
Ketika sebuah program — browser, curl, ssh — perlu menghubungi server-kantor, program tersebut tidak berbicara langsung ke jaringan. Program memanggil resolver di pustaka standar sistem (fungsi getaddrinfo di glibc), dan resolver-lah yang menentukan dari mana jawaban dicari: file lokal dulu, lalu server DNS. Hasilnya, alamat IP diserahkan kembali ke program tanpa program pernah tahu prosesnya. Karena semua program memakai jalur yang sama, mengubah satu file kecil bisa mengubah perilaku seluruh sistem.
/etc/hosts: Pemetaan Manual #
File /etc/hosts adalah buku telepon tertua di Unix: satu baris berisi alamat IP diikuti satu atau lebih nama. Isinya diperiksa resolver sebelum bertanya ke server DNS mana pun. Formatnya mudah dibuat ulang sebagai latihan:
printf '127.0.0.1\tlocalhost\n192.0.2.10\tserver-kantor\n2001:db8::10\tserver-kantor\n' > hosts
cat hostsOutput yang Dihasilkan:
127.0.0.1 localhost
192.0.2.10 server-kantor
2001:db8::10 server-kantorTiga baris tersebut memetakan nama localhost ke alamat loopback IPv4, lalu nama server-kantor ke dua alamat sekaligus — IPv4 dan IPv6. Satu nama boleh memiliki banyak baris; satu baris juga boleh memuat banyak nama yang dipisah spasi.
Siapa yang memutuskan urutan pencarian file dan DNS? File /etc/nsswitch.conf, tepatnya baris yang diawali hosts::
grep '^hosts:' /etc/nsswitch.confOutput yang Dihasilkan:
hosts: files dnsJawaban files dns berarti: periksa /etc/hosts lebih dulu, dan hanya bila nama tidak ditemukan, lanjut ke server DNS. Inilah sebabnya entri di /etc/hosts bisa dipakai meng-alihkan nama ke alamat lain — misalnya saat menguji situs di server baru sebelum DNS diganti. Perintah getent menanyakan resolver persis seperti layaknya program lain:
getent hosts localhostOutput yang Dihasilkan:
::1 localhost ip6-localhost ip6-loopbackBerbeda dengan cat /etc/hosts, getent hosts tidak membaca file secara langsung — perintah ini melewati jalur resolver lengkap, sehingga cocok memverifikasi apa yang benar-benar dilihat program. Pada contoh di atas, nama localhost dijawab dengan alamat IPv6 ::1 beserta alias-aliasnya yang tercatat di file hosts.
/etc/resolv.conf: Kompas Resolver #
Bila nama tidak ada di /etc/hosts, resolver bertanya ke server DNS yang alamatnya tercantum di /etc/resolv.conf. Tiga jenis baris paling penting:
| Baris | Arti |
|---|---|
nameserver | alamat IP satu server DNS; boleh ada beberapa, dicoba berurutan |
search | domain yang ditambahkan ke nama pendek, misalnya web menjadi web.kantor.example |
options | pengaturan perilaku, seperti batas waktu dan jumlah percobaan |
Isi file ini berbeda di tiap jaringan, jadi kita pelajari formatnya lewat salinan:
printf 'nameserver 192.0.2.53\nnameserver 198.51.100.53\nsearch kantor.example\noptions timeout:2 attempts:3\n' > resolv.conf
cat resolv.confOutput yang Dihasilkan:
nameserver 192.0.2.53
nameserver 198.51.100.53
search kantor.example
options timeout:2 attempts:3Dua baris nameserver adalah fallback: bila yang pertama tidak menjawab dalam timeout:2 detik, resolver berpindah ke yang kedua, dan berhenti setelah attempts:3 putaran.
Bertanya Langsung dengan dig #
Perintah dig dari paket dnsutils menanyakan server DNS tanpa melalui resolver lokal, lengkap dengan detail jawabannya. Opsi -short meringkas tinggal alamatnya. Berikut contoh tampilan dig +short untuk sebuah domain internal:
$ dig +short web.kantor.example
192.0.2.55
Jawaban DNS tersimpan sebagai record dengan jenis yang berbeda-beda:
| Record | Isi | Contoh kegunaan |
|---|---|---|
A | satu alamat IPv4 | alamat dasar sebuah host |
AAAA | satu alamat IPv6 | pasangan IPv6 dari host |
CNAME | nama lain | alias www yang menunjuk web |
MX | nama mail server | ke mana email domain dikirim |
NS | nama name server | server DNS otoritatif domain |
TXT | teks bebas | verifikasi kepemilikan, kebijakan SPF |
Angka yang muncul sebelum jawaban pada keluaran dig yang lengkap adalah TTL (time to live) dalam detik — masa berlaku jawaban sebelum harus ditanya ulang. Server DNS perantara menyimpan jawaban di cache selama masa itu; inilah sebabnya perubahan record tidak langsung terlihat di seluruh dunia.
Nama, file, dan record DNS kini tersusun rapi di kepala kita. Pertanyaan penutup section dasar ini: dari mana mesin mendapatkan alamat IP dan alamat server DNS itu sejak menyala? Jawabannya lewat protokol pemberi alamat otomatis — DHCP, materi Chapter DHCP .
Referensi lanjut: halaman manual hosts(5) dan resolv.conf(5) , serta wiki Arch tentang name resolution .