Tutorial ini akan menunjukkan kepada Anda cara mengatur resolver DNS lokal di Ubuntu 20.04 dengan Tidak Terikat . Penyelesai DNS dikenal dengan banyak nama, beberapa di antaranya tercantum di bawah ini. Mereka semua mengacu pada hal yang sama.
- penyelesai penuh (berbeda dengan penyelesai rintisan)
- server DNS rekursif
- server nama rekursif
- resolver rekursif
- Rekursor DNS
Contoh resolver DNS adalah 8.8.8.8
(Server DNS publik Google) dan 1.1.1.1
(Server DNS publik Cloudflare). OS di komputer 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 menyimpan server DNS .
Mengapa Menjalankan Penyelesai DNS Anda Sendiri
Biasanya, komputer, router, atau server Anda menggunakan resolver DNS ISP untuk menanyakan nama DNS, jadi mengapa menjalankan resolver DNS lokal?
- Ini dapat mempercepat pencarian DNS, karena resolver DNS lokal hanya mendengarkan permintaan DNS Anda dan tidak menjawab permintaan DNS orang lain, jadi Anda memiliki peluang yang jauh lebih tinggi untuk mendapatkan jawaban 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 harus menjalankan penyelesai DNS Anda sendiri, karena beberapa daftar hitam DNS seperti URIBL menolak permintaan dari penyelesai DNS publik.
- Jika Anda menjalankan server VPN Anda sendiri pada VPS (Virtual Private Server), merupakan praktik yang baik juga untuk menginstal resolver DNS pada 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.
Petunjuk :Local
tidak berarti komputer rumah Anda. Sebaliknya, itu berarti resolver DNS berjalan pada kotak yang sama atau jaringan yang sama dengan klien DNS. Anda dapat menginstal resolver DNS Tidak Terikat di komputer rumah Anda. Ini lokal ke komputer rumah Anda. Anda juga dapat menginstal Resolver DNS Tidak Terikat di server cloud, dan itu lokal ke server cloud.
Resolver DNS Tidak Terikat
Unbound adalah resolver validasi DNS open-source, artinya ia dapat melakukan validasi DNSSEC untuk memastikan respons DNS asli. Fitur tidak terikat:
- Ringan dan sangat cepat, karena tidak menyediakan fungsionalitas server DNS otoritatif yang lengkap. Di salah satu server saya, Unbound menggunakan seperempat dari memori yang dibutuhkan oleh BIND9.
- Tembolok respons DNS
- Prefetch:mengambil data yang akan kedaluwarsa sehingga klien tidak mendapatkan lonjakan latensi saat pencarian perlu dilakukan ulang saat TTL kedaluwarsa pada data.
- DNS melalui TLS
- DNS melalui HTTPS
- Minimisasi Nama Kueri:Kirim informasi dalam jumlah minimum ke server upstream untuk meningkatkan privasi.
- Penggunaan Cache Bervalidasi DNSSEC secara Agresif
- Zona otoritas, untuk salinan lokal dari zona akar
- DNS64
- DNSCrypt
- Validasi DNSSEC:Ini diaktifkan secara default di Ubuntu
- Subnet Klien EDNS
- Dapat dijalankan sebagai penerus DNS.
- Mendukung data lokal dan zona kebijakan respons untuk memberikan jawaban khusus untuk nama domain tertentu.
Langkah 1:Instal Resolver DNS Tidak Terikat di Ubuntu 20.04
Jalankan perintah berikut untuk menginstal Unbound di Ubuntu 20.04 dari repositori default.
sudo apt update sudo apt install unbound
Periksa versi.
unbound -V
Contoh keluaran:
Secara default, Tidak Terikat secara otomatis dimulai setelah penginstalan. Anda memeriksa statusnya dengan:
systemctl status unbound
Jika tidak berjalan, mulailah dengan:
sudo systemctl start unbound
Dan aktifkan mulai otomatis saat boot:
sudo systemctl enable unbound
Catatan :Jika ada layanan lain yang mendengarkan pada port UDP 53, maka unbound mungkin tidak dapat dimulai. Anda harus menghentikan layanan itu sebelum memulai tidak terikat. Untuk mengetahui service apa saja yang sudah menggunakan UDP port 53, jalankan perintah berikut.
sudo ss -lnptu | grep 53
Jika Anda telah menginstal resolver BIND9 sebelumnya, maka Anda perlu menjalankan perintah berikut untuk menghentikan dan menonaktifkannya, sehingga Unbound dapat mendengarkan port UDP 53. Secara default, Unbound mendengarkan pada 127.0.0.1:53
dan [::1]:53
sudo systemctl disable named --now
Langkah 2:Konfigurasikan Tidak Terikat
File konfigurasi utama untuk Unbound adalah /etc/unbound/unbound.conf
. Di luar kotak, server Tidak Terikat di Ubuntu menyediakan layanan rekursif hanya untuk localhost. Pertanyaan dari luar akan ditolak.
Edit file konfigurasi.
sudo nano /etc/unbound/unbound.conf
Secara default, hanya ada satu baris konfigurasi dalam file ini.
include: "/etc/unbound/unbound.conf.d/*.conf"
Ini untuk menyertakan file konfigurasi di bawah /etc/unbound/unbound.conf.d/
direktori, yang berisi dua file konfigurasi.
qname-minimisation.conf
:mengaktifkan minimalisasi QNAME.root-auto-trust-anchor-file.conf
:Mengaktifkan validasi DNSSEC.
Anda tidak perlu menyentuh kedua file ini. Ketahuilah bahwa mereka akan melakukan yang baik untuk resolusi DNS Anda. Sekarang kita perlu menambahkan konfigurasi kustom kita. Anda dapat melihat contoh file konfigurasi /usr/share/doc/unbound/examples/unbound.conf
untuk mempelajari cara mengonfigurasi Tidak Terikat. Untuk kenyamanan Anda, saya menyusun konfigurasi minimal untuk Anda. Tambahkan baris berikut di /etc/unbound/unbound.conf
berkas.
server: # the working directory. directory: "/etc/unbound" # run as the unbound user username: unbound verbosity: 2 # uncomment and increase to get more logging. # listen on all interfaces, answer queries from the local subnet. interface: 0.0.0.0 # comment out the following line if your system doesn't have IPv6. interface: ::0 # perform prefetching of almost expired DNS cache entries. prefetch: yes access-control: 10.0.0.0/8 allow access-control: 127.0.0.1/24 allow access-control: 2001:DB8::/64 allow # hide server info from clients hide-identity: yes hide-version: yes remote-control: # Enable remote control with unbound-control(8) here. control-enable: no # what interfaces are listened to for remote control. # give 0.0.0.0 and ::0 to listen to all interfaces. # set to an absolute path to use a unix local name pipe, certificates # are not used for that, so key and cert files need not be present. control-interface: 127.0.0.1 # control-interface: ::1 # port number for remote control operations. control-port: 8953
Konfigurasi di atas cukup jelas. Ada dua hal yang mungkin perlu Anda pertimbangkan.
(1) Secara default, Ubuntu menjalankan resolver rintisan yang diselesaikan systemd yang mendengarkan 127.0.0.53:53
. Anda harus menghentikannya, agar tidak terikat dapat mengikat 0.0.0.0:53
.
sudo systemctl disable systemd-resolved --now
(2) Jika jangkauan jaringan lokal Anda bukan 10.0.0.0/8
, Anda perlu mengubahnya, misalnya,
access-control: 192.168.0.0/24 allow
jadi unbound akan menerima kueri DNS dari jaringan 192.168.0.0/24.
Simpan dan tutup file. Kemudian mulai ulang Tidak Terikat.
sudo systemctl restart unbound
Periksa statusnya. Pastikan itu berjalan.
systemctl status unbound
Jika Anda memiliki firewall UFW yang berjalan di server Tidak Terikat, maka Anda perlu membuka port 53 agar klien LAN dapat mengirim kueri DNS.
sudo ufw allow in from 10.0.0.0/8 to any port 53
Ini akan membuka port TCP dan UDP 53 ke jaringan pribadi 10.0.0.0/8.
Langkah 3:Mengatur Penyelesai DNS Default di Server Ubuntu 20.04
Kita perlu membuat server Ubuntu 20.04 menggunakan 127.0.0.1 sebagai DNS resolver, jadi unbound akan menjawab pertanyaan DNS. Paket tidak terikat di Ubuntu dikirimkan dengan layanan systemd unbound-resolvconf.service
yang seharusnya membantu kita mencapai ini. Namun, saya menemukan itu tidak akan berhasil.
Sebagai gantinya, Anda dapat membuat unbound-resolvconf.service
khusus berkas.
sudo nano /etc/systemd/system/unbound-resolvconf.service
Tambahkan baris berikut dalam file ini.
[Unit] Description=local unbound via resolvconf After=unbound.service ConditionFileIsExecutable=/sbin/resolvconf [Service] Type=oneshot RemainAfterExit=yes ExecStart=/bin/sh -c 'echo nameserver 127.0.0.1 | /sbin/resolvconf -a lo.unbound' ExecStop=/sbin/resolvconf -d lo.unbound [Install] WantedBy=unbound.service
Simpan dan tutup file ini. Kemudian muat ulang systemd.
sudo systemctl daemon-reload
Pastikan sistem Anda memiliki resolvconf
biner.
sudo apt install openresolv
Selanjutnya, mulai ulang layanan ini.
sudo systemctl restart unbound-resolvconf.service
Sekarang periksa konten /etc/resolv.conf
.
cat /etc/resolv.conf
Seperti yang Anda lihat, 127.0.0.1 (Tidak Terikat) adalah resolver DNS default.
Pemecahan Masalah
Jika Anda melihat nilai yang berbeda di /etc/resolv.conf
file, itu berarti Tidak Terikat masih bukan penyelesai DNS default Anda. Perhatikan bahwa beberapa penyedia hosting seperti Linode mungkin menggunakan pembantu jaringan untuk membuat /etc/resolv.conf
secara otomatis mengajukan. Untuk mengubah penyelesai DNS default, Anda perlu menonaktifkan pembantu jaringan itu di panel kontrol hosting.
Jika cara ini masih tidak berhasil, mungkin karena /etc/resolv.conf
file di server Ubuntu Anda bukan tautan simbolis ke /run/resolvconf/resolv.conf
. Anda perlu menghapus /etc/resolv.conf
file dan buat tautan simbolis.
sudo rm /etc/resolv.conf sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
Jika Anda memiliki klien WireGuard VPN yang berjalan di server Ubuntu, maka Anda perlu menggunakan pengaturan DNS berikut di file konfigurasi klien WireGuard.
DNS = 127.0.0.1
Kemudian mulai ulang klien VPN WireGuard.
Langkah 4:Mengatur DNS Resolver Default di Komputer Klien
Di desktop Ubuntu, Anda dapat mengikuti petunjuk di atas untuk menyetel penyelesai DNS default, tetapi ingat untuk mengganti 127.0.0.1 dengan alamat IP server Tidak Terikat. Langkah-langkah menyetel penyelesai DNS default di MacOS dan Windows dapat ditemukan di Internet.
Cara Menonaktifkan IPv6 dalam Tidak Terikat
Jika server Anda tidak memiliki konektivitas IPv6, sebaiknya matikan IPv6 di Tidak Terikat untuk mengurangi pencarian DNS yang tidak perlu melalui IPv6. Untuk menonaktifkan IPv6 di Unbound di Ubuntu, cukup tambahkan baris berikut di server:
klausa dalam /etc/unbound/unbound.conf
berkas.
do-ip6: no
Simpan dan tutup file. Kemudian mulai ulang Tidak Terikat.
sudo systemctl restart unbound
DNSSEC Tidak Terikat
DNSSEC adalah cara untuk memvalidasi bahwa respons DNS tidak diubah. Ini diaktifkan secara default jika Anda menginstal Unbound dari repositori default Ubuntu. Mari lakukan kueri DNS cepat di server Ubuntu 20.04.
dig A linuxbabe.com
Anda dapat melihat ad
tandai dalam respons DNS. AD berarti data otentik.
Perhatikan bahwa nama domain harus mengaktifkan DNSSEC agar validasi berfungsi. Jika Anda tidak melihat tanda iklan, itu bisa berarti nama domain belum mengaktifkan DNSSEC.
Data lokal
Anda dapat menggunakan fitur data lokal di Tidak Terikat untuk melayani nama host internal lokal atau mengganti data DNS publik.
Misalnya, jika saya menginstal tidak terikat di server web blog saya, saya dapat menambahkan empat baris berikut di server:
klausa dalam file konfigurasi Tidak Terikat, sehingga domain selalu di-resolve ke localhost.
local-data: "linuxbabe.com A 127.0.0.1" local-data: "www.linuxbabe.com A 127.0.0.1" local-data: "linuxbabe.com AAAA ::1" local-data: "www.linuxbabe.com AAAA ::1"
Tidak ada server yang dapat dijangkau
Jika Anda melihat kesalahan berikut saat menggunakan dig
perintah pada komputer klien
;; connection timed out; no servers could be reached
Bisa jadi aturan firewall Anda salah atau Resolver tidak terikat tidak berjalan.
Kesimpulan
Saya harap tutorial ini membantu Anda mengatur resolver DNS lokal di Ubuntu 20.04 dengan Unbound. Karena akan digunakan di localhost/jaringan lokal, tidak diperlukan enkripsi (DNS over TLS atau DNS over HTTPS). Untuk menyiapkan resolver DoT atau resolver DoH, silakan baca tutorial berikut.
- Cara Mudah Mengatur DNS melalui TLS Resolver dengan Nginx di Ubuntu
- Mengatur DNS melalui HTTPS (DoH) Resolver di Ubuntu dengan DNSdist
Seperti biasa, jika menurut Anda postingan ini bermanfaat, berlangganan newsletter gratis kami untuk mendapatkan lebih banyak tips dan trik. Hati-hati