Tutorial ini akan menunjukkan kepada Anda cara mengatur resolver DNS lokal di Debian 10 Buster, dengan perangkat lunak DNS BIND9 yang banyak digunakan. Ada banyak sinonim untuk DNS resolver, beberapa di antaranya tercantum di bawah ini. Mereka semua mengacu pada hal yang sama.
- penyelesai penuh (berbeda dengan penyelesai rintisan)
- Rekursor DNS
- server DNS rekursif
- resolver rekursif
Perlu diketahui juga bahwa Server DNS juga dapat disebut server nama. Contoh resolver DNS adalah 8.8.8.8 (server DNS publik Google) dan 1.1.1.1 (server DNS publik Cloudflare). OS di PC Anda juga memiliki resolver, meskipun disebut stub resolver karena kemampuannya yang terbatas. Penyelesai rintisan adalah klien DNS kecil di komputer pengguna akhir yang menerima permintaan DNS dari aplikasi seperti Firefox dan meneruskan permintaan ke penyelesai rekursif. Hampir setiap resolver dapat men-cache respons DNS untuk meningkatkan kinerja, sehingga mereka juga disebut caching DNS server.
Mengapa Menjalankan Penyelesai DNS Anda Sendiri
Biasanya, komputer atau router Anda menggunakan resolver DNS ISP Anda untuk menanyakan nama domain guna mendapatkan alamat IP. Menjalankan resolver DNS lokal Anda sendiri dapat mempercepat pencarian DNS, karena
- Resolver DNS lokal hanya mendengarkan permintaan DNS Anda dan tidak menjawab permintaan DNS orang lain, sehingga Anda memiliki peluang yang jauh lebih tinggi untuk mendapatkan respons DNS langsung dari cache di resolver.
- Latensi jaringan antara komputer Anda dan resolver DNS dihilangkan (hampir nol), sehingga kueri DNS dapat dikirim ke server DNS root lebih cepat.
Jika Anda menjalankan server email dan menggunakan daftar hitam DNS (DNSBL) untuk memblokir spam, maka Anda disarankan untuk menjalankan resolver DNS lokal untuk mempercepat pencarian DNS. Jika Anda menjalankan server VPN Anda sendiri di VPS (Virtual Private Server), sebaiknya Anda juga menginstal resolver DNS di VPS yang sama.
Anda mungkin juga ingin menjalankan penyelesai DNS Anda sendiri jika Anda tidak suka riwayat penjelajahan Internet Anda disimpan di server pihak ketiga.
Jika Anda memiliki situs web dan ingin server DNS Anda sendiri menangani resolusi nama untuk nama domain Anda alih-alih menggunakan server DNS pencatat domain Anda, maka Anda perlu menyiapkan server DNS otoritatif, yang berbeda dari resolver DNS. BIND dapat bertindak sebagai server DNS otoritatif dan resolver DNS secara bersamaan, tetapi merupakan praktik yang baik untuk memisahkan dua peran pada kotak yang berbeda . Tutorial ini menunjukkan cara menyiapkan resolver DNS lokal dan karena akan digunakan di host lokal/jaringan lokal, tidak diperlukan enkripsi (DNS melalui TLS atau DNS melalui HTTPS). Menyiapkan server DoT atau DoH akan dibahas di artikel mendatang.
Harap dicatat bahwa Anda harus memiliki hak akses root saat menginstal perangkat lunak di Debian. Anda dapat menambahkan sudo di awal perintah, atau gunakan su -
perintah untuk beralih ke pengguna root.
Instal BIND9 di Debian 10 Buster
BIND (Berkeley Internet Name Domain) adalah perangkat lunak server DNS open-source yang banyak digunakan di Unix/Linux karena stabilitas dan kualitasnya yang tinggi. Ini awalnya dikembangkan oleh UC Berkeley, dan kemudian pada tahun 1994 pengembangannya dipindahkan ke Internet Systems Consortium, Inc (ISC).
Jalankan perintah berikut untuk menginstal BIND 9 pada Debian 10 Buster dari repositori default. BIND 9 adalah versi saat ini dan BIND 10 adalah proyek mati.
sudo apt update sudo apt install bind9 bind9utils bind9-doc bind9-host dnsutils
Periksa informasi versi.
sudo named -v
Contoh keluaran:
BIND 9.11.5-P4-5.1-Debian (Extended Support Version) <id:998753c>
Untuk memeriksa nomor versi dan opsi build, jalankan
sudo named -V
Secara default, BIND secara otomatis dimulai setelah instalasi. Anda dapat memeriksa statusnya dengan:
systemctl status bind9
Petunjuk:Jika perintah di atas tidak segera berhenti, tekan Q.
Jika tidak berjalan, mulailah dengan:
sudo systemctl start bind9
Dan aktifkan mulai otomatis saat boot:
sudo systemctl enable bind9
Server BIND akan berjalan sebagai bind
pengguna, yang dibuat selama instalasi, dan mendengarkan pada TCP dan UDP port 53, seperti yang dapat dilihat dengan menjalankan perintah berikut:
sudo netstat -lnptu | grep named
Biasanya kueri DNS dikirim ke port UDP 53. Port TCP 53 adalah untuk ukuran respons yang lebih besar dari 512 byte.
Daemon BIND disebut bernama . (Daemon adalah bagian dari perangkat lunak yang berjalan di latar belakang.) named
biner diinstal oleh bind9
paket dan ada biner penting lainnya:rndc
, pengontrol daemon nama jarak jauh, yang diinstal oleh bind9utils
kemasan. rndc
binary digunakan untuk memuat ulang/menghentikan dan mengontrol aspek lain dari daemon BIND. Komunikasi dilakukan melalui port TCP 953.
Misalnya, kita dapat memeriksa status server nama BIND.
sudo rndc status
Konfigurasi untuk Penyelesai DNS Lokal
/etc/bind/
adalah direktori yang berisi konfigurasi untuk BIND.
- named.conf :file konfigurasi utama yang menyertakan konfigurasi tiga file lainnya.
- db.127 :file zona pemetaan terbalik IPv4 localhost.
- db.local :localhost meneruskan file zona pemetaan IPv4 dan IPv6.
- db.kosong :file zona kosong
Paket bind9 pada Debian 10 tidak dikirimkan dengan db.root
file, sekarang menggunakan file petunjuk root di /usr/share/dns/root.hints
. Petunjuk root file digunakan oleh resolver DNS untuk menanyakan server DNS root. Ada 13 grup root DNS server, dari a.root-servers.net
ke m.root-servers.net
.
Di luar kotak, server BIND9 di Debian menyediakan layanan rekursif untuk host lokal dan klien jaringan lokal saja. Pertanyaan dari luar akan ditolak. Jadi Anda tidak perlu mengedit file konfigurasi. Agar Anda terbiasa dengan konfigurasi BIND 9, saya akan menunjukkan cara mengaktifkan layanan rekursi.
File konfigurasi BIND utama /etc/bind/named.conf
sumber pengaturan dari 3 file lain.
- /etc/bind/named.conf.options
- /etc/bind/named.conf.local
- /etc/bind/named.conf.default-zones
Untuk mengaktifkan layanan rekursi, edit file pertama.
sudo nano /etc/bind/named.conf.options
Di options
klausa, tambahkan baris berikut. Ganti alamat IP di allow-recursion
pernyataan dengan alamat jaringan lokal Anda sendiri.
// hide version number from clients for security reasons. version "not currently available"; // optional - BIND default behavior is recursion recursion yes; // provide recursion service to trusted clients only allow-recursion { 127.0.0.1; 192.168.0.0/24; 10.10.10.0/24; }; // enable the query log querylog yes;
Simpan dan tutup file. Kemudian uji sintaks file konfigurasi.
sudo named-checkconf
Jika tes berhasil (ditunjukkan dengan output senyap), maka mulai ulang BIND9.
sudo systemctl restart bind9
Jika Anda memiliki firewall yang berjalan di server BIND, maka Anda perlu membuka port 53 agar klien LAN dapat mengirim kueri DNS. Jika Anda menggunakan firewall UFW, Anda dapat menjalankan perintah berikut.
sudo ufw allow in from 192.168.0.0/24 to any port 53
Ini akan membuka port TCP dan UDP 53 ke jaringan pribadi 192.168.0.0/24. Kemudian dari komputer lain di LAN yang sama, kita dapat menjalankan perintah berikut untuk meng-query A record dari google.com. Ganti 192.168.0.102 dengan alamat IP dari resolver BIND Anda.
dig A google.com @192.168.0.102
Sekarang pada resolver BIND, periksa log kueri dengan perintah berikut.
sudo journalctl -eu bind9
Ini akan menampilkan pesan log terbaru dari unit layanan bind9. Saya dapat menemukan baris berikut di log, yang menunjukkan bahwa kueri DNS untuk catatan A google.com telah diterima dari port 57806 alamat IP 192.168.0.103.
named[1162]: client @0x7f4d2406f0f0 192.168.0.103#57806 (google.com): query: google.com IN A +E(0)K (192.168.0.102)
Mengatur DNS Resolver Default pada Debian 10 Buster Server
Di server BIND, kita perlu mengatur 127.0.0.1 sebagai DNS resolver default. Anda dapat memeriksa resolver DNS saat ini di Debian 10 dengan perintah berikut.
cat /etc/resolv.conf
Contoh keluaran:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 2001:19f0:300:1704::6 nameserver 108.61.10.10
Paket bind9 pada Debian 10 dikirimkan dengan unit layanan Systemd bind9-resolvconf.service
, yang akan membantu kita mengatur BIND sebagai penyelesai DNS default di server Debian. Secara default, layanan ini dinonaktifkan, kita harus memulainya dan mengaktifkan mulai otomatis saat boot.
sudo systemctl start bind9-resolvconf sudo systemctl enable bind9-resolvconf
Anda sekarang dapat memeriksa konten /etc/resolv.conf
lagi. Seperti yang Anda lihat, 127.0.0.1 (BIND) sekarang menjadi DNS resolver default di Debian 10 Buster.
Jika resolver DNS Anda bukan 127.0.0.1, mungkin sistem Anda tidak memiliki resolvconf
biner, yang menyebabkan bind9-resolvconf
layanan untuk gagal. Anda perlu menginstal resolvconf
paket dan mulai ulang layanan.
sudo apt install resolvconf sudo systemctl restart bind9-resolvconf
Mengatur DNS Resolver Default di Komputer Klien
Sekarang Anda dapat mengonfigurasi komputasi lain di LAN untuk menggunakan server BIND sebagai resolver DNS. Untuk komputer Windows dan MacOS, Anda dapat mencari di Google untuk mengetahui cara menyetel resolver DNS default. Di sini saya akan menunjukkan cara mengatur DNS resolver di komputer desktop Linux. Metode berikut ini berfungsi di semua distro Linux yang menggunakan NetworkManager.
Klik ikon Manajer Jaringan di desktop Linux Anda untuk menemukan Edit connections
. (Pada Beberapa distro Linux, Anda perlu mengklik kanan Network Manager.)
Kemudian pilih koneksi saat ini dan klik ikon roda gigi untuk mengedit koneksi ini.
Pilih tab pengaturan IPv4, ubah metode dari Automatic(DHCP)
ke Automatic(DHCP) addresses only
, yang akan mencegah sistem Ubuntu Anda mendapatkan alamat server DNS dari router Anda. Kemudian tentukan server DNS. Di sini saya memasukkan alamat IP server BIND di LAN saya.
Simpan perubahan Anda. Kemudian mulai ulang NetworkManager agar perubahan diterapkan.
sudo systemctl restart NetworkManager
Setelah Anda terhubung kembali, klik ikon Network Manager lagi dan pilih connection information
. Anda dapat melihat bahwa komputer desktop Linux Anda sekarang menggunakan server DNS BIND Anda.
Cara Menonaktifkan IPv6 di BIND
Jika Anda tidak menggunakan IPv6 di jaringan Anda, ada baiknya untuk menonaktifkan IPv6 di BIND, jika tidak, akan ada banyak kesalahan tentang IPv6 di log BIND seperti di bawah ini.
network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53 network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53 network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53 network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53
Untuk menonaktifkan IPv6 di BIND di Ubuntu, cukup buka /etc/default/bind9 berkas
sudo nano /etc/default/bind9
Tambahkan -4
ke OPSI.
OPTIONS="-u bind -4"
Simpan dan tutup file. Kemudian restart BIND dan selesai.
sudo systemctl restart bind9
BIND SERVFAIL
Jika resolver BIND Anda tidak dapat menjawab kueri DNS (SERVFAIL), dan Anda melihat baris berikut di log BIND.
dnssec: warning: managed-keys-zone: Unable to fetch DNSKEY set '.': timed out
Mungkin karena server Anda tidak memiliki konektivitas IPv6 yang berfungsi. Ini terjadi pada salah satu server saya. Saya pikir konektivitas IPv6 berfungsi seperti biasa, tetapi tiba-tiba terputus karena alasan yang tidak saya ketahui. Setelah saya menonaktifkan IPv6 di BIND, resolusi DNS berfungsi kembali.
BIND Mulai Ulang Otomatis
Jika karena alasan apa pun proses Bind Anda dimatikan, Anda perlu menjalankan perintah berikut untuk memulai kembali.
sudo systemctl restart bind9
Daripada mengetikkan perintah ini secara manual, kita dapat membuat bind secara otomatis restart dengan mengedit named.service
unit layanan sistemd. Untuk mengganti konfigurasi layanan systemd default, kami membuat direktori terpisah.
sudo mkdir -p /etc/systemd/system/bind9.service.d/
Kemudian buat file di bawah direktori ini.
sudo nano /etc/systemd/system/bind9.service.d/restart.conf
Tambahkan baris berikut dalam file, yang akan membuat Bind otomatis restart 5 detik setelah kegagalan terdeteksi.
[Service] Restart=always RestartSec=5s
Simpan dan tutup file. Kemudian muat ulang systemd.
sudo systemctl daemon-reload
Untuk memeriksa apakah ini akan berhasil, bunuh Bind dengan:
sudo pkill named
Kemudian centang status Bind. Anda akan menemukan Bind dimulai ulang secara otomatis.
systemctl status bind9
BIND max-cache-size
BIND dapat menyimpan hasil DNS di server untuk mempercepat pencarian DNS untuk klien. BIND mengasumsikan Anda menjalankan resolver DNS khusus, yaitu, tidak ada layanan web lain yang berjalan pada host yang sama, jadi ukuran cache default (didefinisikan oleh max-cache-size
) diatur ke 90% dari total RAM untuk mencapai kinerja terbaik. Anda dapat melihat baris seperti di bawah ini di log BIND (sudo journalctl -eu bind9
) saat BIND dimulai.
none:100: 'max-cache-size 90%' - setting to 7165MB (out of 7961MB)
Perhatikan bahwa BIND tidak akan langsung menggunakan 90% RAM Anda. Jika permintaan DNS hanya sedikit, BIND hanya menggunakan sedikit RAM, karena hasil DNS yang di-cache tidak banyak. Jika ada banyak permintaan DNS, maka akan menggunakan banyak RAM untuk menyimpan cache DNS.
Jika RAM Anda terbatas, Anda mungkin tidak ingin BIND menggunakan 90% RAM Anda untuk cache. Edit file konfigurasi BIND /etc/bind/named.conf.options
.
sudo nano /etc/bind/named.conf.options
Tambahkan direktif berikut di options
ayat. Ubah 50% ke nilai pilihan Anda.
max-cache-size 50%;
Mulai ulang BIND agar perubahan diterapkan.
sudo systemctl restart bind9
Kesimpulan
Saya harap tutorial ini membantu Anda mengatur resolver DNS lokal di Debian 10 Buster dengan BIND9. Seperti biasa, jika menurut Anda postingan ini bermanfaat, berlangganan newsletter gratis kami untuk mendapatkan lebih banyak tips dan trik. Hati-hati