Berikut adalah dua paket perangkat lunak lain yang dapat digunakan untuk caching DNS di Linux:
- dnsmasq
- mengikat
Setelah mengonfigurasi perangkat lunak untuk penerusan dan caching DNS, Anda kemudian menyetel sistem DNS resolver ke 127.0.0.1 di /etc/resolv.conf.
Jika sistem Anda menggunakan NetworkManager, Anda dapat mencoba menggunakan dns=dnsmasq
opsi di /etc/NetworkManager/NetworkManager.conf
atau Anda dapat mengubah pengaturan koneksi Anda ke Otomatis (Hanya Alamat) dan kemudian menggunakan skrip di /etc/NetworkManager/dispatcher.d
direktori untuk mendapatkan server nama DHCP, atur sebagai server penerusan DNS di perangkat lunak cache DNS Anda, lalu picu pemuatan ulang konfigurasi.
Di Linux (dan mungkin sebagian besar Unix), tidak ada caching DNS tingkat OS kecuali nscd diinstal dan dijalankan. Meski begitu, fitur caching DNS dari nscd dinonaktifkan secara default setidaknya di Debian karena rusak. Hasil praktisnya adalah bahwa sistem linux Anda sangat mungkin tidak melakukan caching DNS tingkat OS apa pun.
Anda dapat mengimplementasikan cache Anda sendiri di aplikasi Anda (seperti yang mereka lakukan untuk Squid, menurut komentar diegows), tetapi saya akan merekomendasikan untuk tidak melakukannya. Ini banyak pekerjaan, mudah salah (nscd salah!!!), kemungkinan tidak akan semudah merdu sebagai cache DNS khusus, dan menduplikasi fungsi yang sudah ada di luar aplikasi Anda.
Jika pengguna akhir yang menggunakan perangkat lunak Anda perlu memiliki caching DNS karena beban kueri DNS cukup besar untuk menjadi masalah atau RTT ke server DNS eksternal cukup lama untuk menjadi masalah, mereka dapat menginstal server DNS caching seperti Unbound pada mesin yang sama dengan aplikasi Anda, dikonfigurasi untuk meng-cache respons dan meneruskan kesalahan ke DNS resolver reguler.
Di sini Anda memiliki contoh caching DNS di Debian menggunakan dnsmasq:Caching DNS lokal, artikel di ManageaCloud.
Ringkasan konfigurasi:
/etc/default/dnsmasq
# Ensure you add this line
DNSMASQ_OPTS="-r /etc/resolv.dnsmasq"
/etc/resolv.dnsmasq
# Your preferred servers
nameserver 1.1.1.1
nameserver 8.8.8.8
nameserver 2001:4860:4860::8888
/etc/resolv.conf
nameserver 127.0.0.1
Kemudian mulai ulang dnsmasq.
Uji tolok ukur menggunakan DNS 1.1.1.1:
for i in {1..100}; do time dig slashdot.org @1.1.1.1; done 2>&1 | grep ^real | sed -e s/.*m// | awk '{sum += $1} END {print sum / NR}'
Uji tolok ukur menggunakan penerusan DNS caching lokal (dnsmasq):
for i in {1..100}; do time dig slashdot.org; done 2>&1 | grep ^real | sed -e s/.*m// | awk '{sum += $1} END {print sum / NR}'