GNU/Linux >> Belajar Linux >  >> Ubuntu

Siapkan Penyelesai DNS Lokal di Ubuntu 18.04, 16.04 dengan BIND9

Tutorial ini akan menunjukkan kepada Anda cara mengatur resolver DNS lokal di Ubuntu 18.04, 16.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 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 Lokal Anda Sendiri

Biasanya, komputer atau router Anda menggunakan resolver DNS ISP Anda untuk menanyakan nama DNS, jadi mengapa menjalankan resolver DNS Anda sendiri?

  • 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. Selain itu, 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 DNS resolver Anda sendiri jika 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 server 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 18.04, 16.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 18.04, 16.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-doc bind9-host dnsutils

Periksa versi.

named -v

Contoh keluaran:

BIND 9.11.3-1ubuntu1.3-Ubuntu (Extended Support Version) <id:a375815>

Untuk memeriksa nomor versi dan opsi build, jalankan

named -V

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

systemctl status bind9

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.root :petunjuk root file yang 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 .
  • db.127 :file zona pemetaan terbalik IPv4 localhost.
  • db.local :localhost meneruskan file zona pemetaan IPv4 dan IPv6.
  • db.kosong :file zona kosong

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 bind9

Jika Anda memiliki firewall 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 bind9

Ini akan menampilkan pesan log terbaru dari unit layanan bind9. Saya dapat 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 18.04

Systemd-resolved menyediakan stub resolver di Ubuntu 18.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

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 18.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

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.

Mengatur DNS Resolver Default di Server Ubuntu 16.04

Ubuntu 16.04 menggunakan resolvconf program untuk mengelola resolver DNS di /etc/resolv.conf mengajukan. Instal resolvconf paket.

sudo apt install resolvconf

Untuk menetapkan BIND sebagai resolver default di server Ubuntu 16.04, Anda perlu mengedit /etc/resolvconf/resolv.conf.d/head file dan tambahkan “nameserver 127.0.0.1 ” ke file ini, yang dapat dilakukan dengan menjalankan perintah berikut:

echo "nameserver 127.0.0.1" | sudo tee -a /etc/resolvconf/resolv.conf.d/head

Penyelesai yang ditentukan dalam file ini akan selalu menjadi penyelesai DNS pertama, apa pun yang terjadi. Sekarang restart resolvconf layanan.

sudo systemctl restart resolvconf

Anda sekarang dapat memeriksa konten /etc/resolv.conf .

cat /etc/resolv.conf

Seperti yang Anda lihat, 127.0.0.1 adalah DNS resolver default.

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.

Perbarui :Kemudian saya perhatikan bahwa paket BIND di Ubuntu 16.04 dilengkapi dengan unit layanan Systemd bind9-resolvconf.service , yang akan membantu kita untuk mengatur default DNS resolver di server Ubuntu, jadi tidak perlu dilakukan secara manual seperti di atas. Secara default, layanan ini dinonaktifkan, kita harus memulainya dan mengaktifkan mulai otomatis saat boot.

sudo systemctl start bind9-resolvconf

sudo systemctl enable bind9-resolvconf

Pastikan resolvconf paket diinstal. Hanya dua baris perintah dan BIND akan ditetapkan sebagai DNS resolver default di server Ubuntu 16.04 Anda.

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 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 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 Ubuntu 18.04, 16.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. Cara Mengatur Firewall dengan UFW di Ubuntu 16.04

  3. Cara Mengatur Resolver DNS Tidak Terikat di Ubuntu 20.04

  1. Cara Mengatur Firewall dengan UFW di Ubuntu 18.04

  2. Cara mengatur DNS Nameserver di Ubuntu 20.04

  3. Pindai jaringan lokal dengan arp-scan di ubuntu

  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