GNU/Linux >> Belajar Linux >  >> Ubuntu

Siapkan Penyelesai DNS Tidak Terikat di Server Ubuntu 20.04

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


Ubuntu
  1. Cara Mengatur WireGuard di Ubuntu 22.04

  2. Cara menginstal resolver DNS Tidak Terikat di Ubuntu 22.04

  3. Cara Mengatur Resolver DNS Tidak Terikat di Ubuntu 20.04

  1. Cara Mengatur &Menginstal Server Proxy Squid di Ubuntu 18.04

  2. Cara mengatur DNS Nameserver di Ubuntu 20.04

  3. Cara Mengatur Server TeamSpeak di Ubuntu 16.04

  1. Cara Mengatur Server OpenVPN di Ubuntu 18.04

  2. Cara Mengatur Server Nama DNS di Ubuntu 18.04

  3. Cara Mengatur Blok Server Nginx di Ubuntu 20.04