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:

bash
printf '127.0.0.1\tlocalhost\n192.0.2.10\tserver-kantor\n2001:db8::10\tserver-kantor\n' > hosts
cat hosts

Output yang Dihasilkan:

text
127.0.0.1	localhost
192.0.2.10	server-kantor
2001:db8::10	server-kantor

Tiga 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::

bash
grep '^hosts:' /etc/nsswitch.conf

Output yang Dihasilkan:

text
hosts:          files dns

Jawaban 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:

bash
getent hosts localhost

Output yang Dihasilkan:

text
::1             localhost ip6-localhost ip6-loopback

Berbeda 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:

BarisArti
nameserveralamat IP satu server DNS; boleh ada beberapa, dicoba berurutan
searchdomain yang ditambahkan ke nama pendek, misalnya web menjadi web.kantor.example
optionspengaturan perilaku, seperti batas waktu dan jumlah percobaan

Isi file ini berbeda di tiap jaringan, jadi kita pelajari formatnya lewat salinan:

bash
printf 'nameserver 192.0.2.53\nnameserver 198.51.100.53\nsearch kantor.example\noptions timeout:2 attempts:3\n' > resolv.conf
cat resolv.conf

Output yang Dihasilkan:

text
nameserver 192.0.2.53
nameserver 198.51.100.53
search kantor.example
options timeout:2 attempts:3

Dua 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:

console
$ dig +short web.kantor.example
192.0.2.55

Jawaban DNS tersimpan sebagai record dengan jenis yang berbeda-beda:

RecordIsiContoh kegunaan
Asatu alamat IPv4alamat dasar sebuah host
AAAAsatu alamat IPv6pasangan IPv6 dari host
CNAMEnama lainalias www yang menunjuk web
MXnama mail serverke mana email domain dikirim
NSnama name serverserver DNS otoritatif domain
TXTteks bebasverifikasi 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 .