GNU/Linux >> Belajar Linux >  >> Ubuntu

Siapkan Penyelesai DNS Lokal di Ubuntu 20.04 dengan BIND9

Tutorial ini akan menunjukkan kepada Anda cara mengatur resolver DNS lokal di Ubuntu 20.04, dengan perangkat lunak DNS BIND9 yang banyak digunakan. 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)
  • 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 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 caching DNS server.

Mengapa Menjalankan Penyelesai DNS Lokal Anda Sendiri

Biasanya, komputer atau router 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, sehingga 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.

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 mengatur resolver DNS lokal dan karena akan digunakan di localhost/jaringan lokal, tidak diperlukan enkripsi (DNS melalui TLS atau DNS melalui HTTPS). Menyiapkan resolver DoT atau resolver DoH akan dibahas di artikel mendatang.

Petunjuk :Local tidak berarti komputer rumah Anda. Sebaliknya, itu berarti resolver DNS berjalan pada kotak yang sama dengan klien DNS. Anda dapat menginstal penyelesai DNS BIND di komputer rumah Anda. Ini lokal ke komputer rumah Anda. Anda dapat menginstal penyelesai DNS BIND di server cloud, dan itu lokal ke server cloud.

Mengatur Penyelesai DNS Lokal di Ubuntu 20.04 dengan BIND9

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 di Ubuntu 20.04, dari repositori default. BIND 9 adalah versi saat ini dan BIND 10 adalah proyek mati.

sudo apt update
sudo apt install bind9 bind9utils bind9-dnsutils bind9-doc bind9-host

Periksa versi.

named -v

Contoh keluaran:

BIND 9.16.1-Ubuntu (Stable Release) <id:d497c32>

Untuk memeriksa nomor versi dan opsi build, jalankan

named -V

Secara default, BIND secara otomatis dimulai setelah instalasi. Anda memeriksa statusnya dengan:

systemctl status named

Jika tidak berjalan, mulailah dengan:

sudo systemctl start named

Dan aktifkan mulai otomatis saat boot:

sudo systemctl enable named

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 di Ubuntu 20.04 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 Ubuntu menyediakan layanan rekursif untuk localhost 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 named

Jika Anda memiliki firewall UFW yang berjalan di server BIND, maka Anda perlu membuka port 53 agar klien LAN dapat mengirim kueri DNS.

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 named

Ini akan menampilkan pesan log terbaru dari unit layanan bind9. Saya menemukan baris berikut di log, yang menunjukkan bahwa permintaan DNS untuk catatan A google.com telah diterima dari port 57806 dari 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 di Server Ubuntu 20.04

Systemd-resolved menyediakan stub resolver di Ubuntu 20.04. Seperti disebutkan di awal artikel ini, stub resolver adalah klien DNS kecil di komputer pengguna akhir yang menerima permintaan DNS dari aplikasi seperti Firefox dan meneruskan permintaan ke resolver rekursif.

Penyelesai rekursif default dapat dilihat dengan perintah ini.

systemd-resolve --status

Petunjuk:Jika perintah di atas tidak segera berhenti, Anda dapat menghentikannya dengan menekan tombol Q.

Seperti yang Anda lihat, BIND bukan default. Jika Anda menjalankan perintah berikut di server BIND,

dig A facebook.com

Permintaan DNS ini tidak dapat ditemukan di log BIND. Sebagai gantinya, Anda perlu secara eksplisit memberi tahu Dig untuk menggunakan BIND.

dig A facebook.com @127.0.0.1

Untuk menetapkan BIND sebagai resolver default, buka file konfigurasi yang diselesaikan systemd.

sudo nano /etc/systemd/resolved.conf

Dalam [Resolve] bagian, tambahkan baris berikut. Ini akan menetapkan server DNS global untuk server Anda.

DNS=127.0.0.1

Simpan dan tutup file. Kemudian mulai ulang layanan yang diselesaikan systemd.

sudo systemctl restart systemd-resolved

Sekarang jalankan perintah berikut untuk memeriksa resolver DNS default.

systemd-resolve --status

Sekarang lakukan kueri DNS tanpa menentukan 127.0.0.1 .

dig A facebook.com

Anda akan melihat permintaan DNS di log BIND, yang berarti BIND sekarang menjadi resolver rekursif default. Jika Anda tidak melihat kueri apa pun di log BIND, Anda mungkin perlu mengonfigurasi server DNS per tautan.

Konfigurasi Server DNS Per-Link di Ubuntu 20.04

Anda juga dapat mengonfigurasi server DNS per tautan, yang akan menimpa server DNS global. Ada dua cara untuk mengonfigurasi server DNS per tautan:

  • melalui systemd-resolved
  • melalui netplan

diselesaikan dengan sistem

Daftar file di bawah /etc/systemd/network/ direktori.

ls /etc/systemd/network/

Contoh keluaran:

05-eth0.network  99-default.link

Seperti yang Anda lihat, saya memiliki dua file konfigurasi tautan. 05-eth0.network file ini untuk antarmuka jaringan utama saya, jadi saya mengedit file ini.

sudo nano /etc/systemd/network/05-eth0.network

Nama file Anda mungkin berbeda. Jika tidak ada file di bawah direktori ini, maka konfigurasi DNS per tautan Anda tidak dikontrol oleh systemd-resolved .

Komentari entri DNS dan Domain default, dan tambahkan entri DNS Anda sendiri.

DNS=127.0.0.1

Simpan dan tutup file. Kemudian restart systemd-resolved dan systemd-networkd layanan.

sudo systemctl restart systemd-resolved systemd-networkd

netplan

Beberapa server Ubuntu mungkin menggunakan netplan untuk mengkonfigurasi jaringan per-link. Dalam hal ini, Anda perlu mengkonfigurasi server DNS di .yaml file di bawah /etc/netplan/ direktori. Daftar file dalam direktori ini.

ls /etc/netplan/

Contoh keluaran:

01-netcfg.yaml

Jadi saya mengedit file ini.

sudo nano /etc/netplan/01-netcfg.yaml

Setel alamat server DNS di nameservers bagian.

      nameservers:
        search: [ invalid ]
        addresses:
                - 127.0.0.1

Anda dapat menentukan beberapa resolver DNS seperti di bawah ini, yang dapat mengurangi kemungkinan kegagalan DNS.

      nameservers:
        search: [ invalid ]
        addresses:
                - 127.0.0.1
                - 8.8.8.8
                - 1.1.1.1

Simpan dan tutup file. Kemudian terapkan perubahannya.

sudo netplan apply

Catatan: Jika Anda melihat pesan kesalahan berikut, maka netplan tidak dapat memproses file konfigurasi.

Invalid YAML at /etc/netplan/01-netcfg.yaml  inconsistent indentation

Anda harus memperbaiki lekukan yang tidak konsisten dan menjalankan sudo netplan apply perintah lagi.

Pemecahan Masalah

Periksa konten /etc/resolv.conf .

cat /etc/resolv.conf

Seperti yang Anda lihat, 127.0.0.1 (BIND) adalah resolver DNS default. Jika Anda melihat nilai yang berbeda, itu berarti BIND masih bukan resolver DNS default Anda. Anda dapat menggunakan utilitas resolveconf untuk menetapkan BIND sebagai resolver default.

Instal resolvconf paket

sudo apt install resolvconf

Kemudian mulai named-resolvconf layanan.

sudo systemctl start named-resolvconf.service

Aktifkan mulai otomatis saat boot.

sudo systemctl enable named-resolvconf.service

Sekarang periksa /etc/resolv.conf mengajukan lagi. BIND seharusnya menjadi penyelesai DNS default di server Ubuntu Anda sekarang.

cat /etc/resolv.conf

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

Anda juga dapat membuat file ini secara manual dan menjadikannya hanya-baca untuk mencegah ditimpa oleh aplikasi lain di server yang sama.

sudo rm /etc/resolv.conf

echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf

sudo chmod 444 /etc/resolv.conf

systemd-resolved tidak berjalan

Jika Anda melihat kesalahan berikut setelah menjalankan systemd-resolve --status perintah,

Failed to get global data: Unit dbus-org.freedesktop.resolve1.service not found.

Mungkin systemd-resolved tidak berjalan. Mulailah dengan:

sudo systemctl status systemd-resolved

Aktifkan mulai otomatis.

sudo systemctl enable systemd-resolved

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 BIND. Langkah-langkah menyetel penyelesai DNS default di MacOS dan Windows dapat ditemukan di Internet.

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/named berkas

sudo nano /etc/default/named

Tambahkan -4 ke OPSI.

OPTIONS="-u bind -4"

Simpan dan tutup file. Kemudian restart BIND dan selesai.

sudo systemctl restart named

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.

Bernama Restart Otomatis

Jika karena alasan apa pun proses Bernama Anda dimatikan, Anda perlu menjalankan perintah berikut untuk memulai kembali.

sudo systemctl restart named

Daripada mengetikkan perintah ini secara manual, kita dapat membuat Named 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/named.service.d/

Kemudian buat file di bawah direktori ini.

sudo nano /etc/systemd/system/named.service.d/restart.conf

Tambahkan baris berikut dalam file, yang akan membuat Named 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 Named with:

sudo pkill named

Kemudian centang Status bernama. Anda akan menemukan Named dimulai ulang secara otomatis.

systemctl status named

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 di 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 named ) 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 named

Catatan :Saat Anda memulai ulang BIND, seluruh cache akan dihapus.

Tidak ada server yang dapat dijangkau

Jika Anda melihat kesalahan berikut saat menggunakan perintah dig di komputer klien

;; connection timed out; no servers could be reached

Bisa jadi itu

  • Aturan firewall Anda salah. Periksa log firewall Anda.
  • Resolver BIND tidak berjalan.
  • BIND tidak mendengarkan pada antarmuka jaringan.
  • Dapatkah Anda melakukan ping dari klien DNS ke resolver DNS?

Kesimpulan

Saya harap tutorial ini membantu Anda mengatur resolver DNS lokal di Ubuntu 20.04 dengan BIND9. 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 Penyelesai DNS Lokal menggunakan Dnsmasq di Ubuntu 20.04

  2. Pindai jaringan lokal dengan arp-scan di ubuntu

  3. Cara Mengatur Firewall dengan UFW di Ubuntu 16.04

  1. Cara Mengatur Firewall dengan UFW di Ubuntu 18.04

  2. Cara mengatur DNS Nameserver di Ubuntu 20.04

  3. Cara Mengatur Resolver DNS Tidak Terikat di Ubuntu 20.04

  1. Cara Mengatur Server Nama DNS di Ubuntu 18.04

  2. Cara Mengatur Firewall dengan UFW di Ubuntu 20.04

  3. Cara Mengkonfigurasi Server DNS Di Ubuntu 18.04 / Ubuntu 16.04