GNU/Linux >> Belajar Linux >  >> Debian

Siapkan Server DNS Resmi BIND di Debian 10 Buster

Tutorial ini akan menunjukkan kepada Anda cara mengatur dan menjalankan server nama otoritatif Anda sendiri di Debian 10 Buster dengan perangkat lunak BIND 9 yang banyak digunakan.

Catatan :Tutorial ini menunjukkan metode baris perintah. Jika Anda ingin mengedit catatan DNS dari GUI web, saya sarankan untuk menyiapkan server DNS otoritatif dengan Webmin, yang merupakan panel kontrol server sumber terbuka dan gratis.

Apa Itu Server DNS Resmi?

Jika Anda memiliki nama domain dan ingin server DNS Anda sendiri menangani resolusi nama untuk nama domain Anda alih-alih menggunakan server DNS pencatat domain, Anda perlu menyiapkan server DNS otoritatif.

Server DNS otoritatif digunakan oleh pemilik nama domain untuk menyimpan catatan DNS. Ini memberikan jawaban otoritatif untuk resolver DNS (seperti 8.8.8.8 atau 1.1.1.1), yang meminta data DNS atas nama pengguna akhir di PC, ponsel cerdas, atau tablet.

Tentang BIND

BIND (Berkeley Internet Name Domain) adalah perangkat lunak DNS open-source, fleksibel, dan berfitur lengkap 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).

BIND dapat bertindak sebagai server DNS otoritatif untuk zona dan resolver DNS secara bersamaan. Penyelesai DNS juga bisa disebut server nama rekursif karena melakukan pencarian DNS rekursif untuk pengguna akhir. Namun, mengambil dua peran pada saat yang sama tidak menguntungkan. Merupakan praktik yang baik untuk memisahkan dua peran pada dua mesin yang berbeda.

Pada artikel sebelumnya, saya menjelaskan langkah-langkah pengaturan DNS resolver lokal di Debian 10 Buster. Tutorial ini akan menunjukkan cara menyiapkan BIND9 di Debian 10 Buster sebagai server DNS otoritatif saja dengan rekursi dinonaktifkan.

Prasyarat

Untuk mengikuti tutorial ini, Anda harus sudah membeli nama domain. Saya mendaftarkan nama domain saya di NameCheap karena harganya murah dan mereka memberikan perlindungan privasi whois gratis seumur hidup.

Anda juga membutuhkan dua server. Satu server untuk server DNS master dan yang lainnya untuk server DNS budak. Idealnya kedua server harus berada di lokasi fisik yang berbeda. Jika satu server DNS offline, server DNS lainnya masih dapat menjawab kueri DNS untuk nama domain Anda.

Setiap server hanya membutuhkan RAM 512MB dan berikut adalah penyedia hosting yang saya rekomendasikan. Saya telah menggunakan semuanya.

  • Vultr:Mulai dari $2,5/bulan. Kartu kredit diperlukan. Anda dapat membuat akun di Vultr melalui tautan rujukan saya untuk mendapatkan kredit gratis $50.
  • DigitalOcean:Mulai dari $5/bulan. Tidak diperlukan kartu kredit. Anda dapat menggunakan Paypal. Anda dapat membuat akun di DigitalOcean melalui tautan rujukan saya untuk mendapatkan kredit gratis $50.

Setelah Anda membeli dua server, instal Debian 10 di sana dan ikuti petunjuk di bawah.

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.

Siapkan Server DNS Resmi di Debian 10 Buster dengan BIND9

Anda perlu menjalankan perintah di bagian ini di kedua server.

Masuk ke dua server melalui SSH dan jalankan perintah berikut untuk menginstal BIND 9 di server Debian 10 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

Periksa nomor versi.

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

named -V

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

systemctl status bind9

Keluaran:

● bind9.service - BIND Domain Name Server
   Loaded: loaded (/lib/systemd/system/bind9.service; enabled; vendor preset: en
   Active: active (running) since Sun 2019-07-14 10:27:56 UTC; 4min 6s ago
     Docs: man:named(8)
 Main PID: 1481 (named)
    Tasks: 4 (limit: 1149)
   Memory: 13.7M
   CGroup: /system.slice/bind9.service
           └─1481 /usr/sbin/named -u bind

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

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

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

Di luar kotak, server BIND9 di Debian menyediakan layanan rekursif untuk host lokal dan klien jaringan lokal. Karena kita sedang menyiapkan server DNS otoritatif, kita perlu menonaktifkan rekursi. Edit /etc/bind/named.conf.options berkas.

sudo nano /etc/bind/named.conf.options

Tambahkan baris berikut di klausa opsi {…}.

 // hide version number from clients for security reasons.
 version "not currently available";

 // disable recursion on authoritative DNS server.
 recursion no;

 // enable the query log
 querylog yes;

 // disallow zone transfer
 allow-transfer { none; };

Secara teknis, Anda hanya perlu menambahkan recursion no; untuk menonaktifkan rekursi, tetapi merupakan praktik yang baik untuk menambahkan 3 arahan lainnya. Simpan dan tutup file. Kemudian mulai ulang BIND.

sudo systemctl restart bind9

Konfigurasi Server DNS Master

Pilih salah satu dari dua server sebagai server DNS master. Kami akan menamainya ns1.example.com .

Server DNS master menyimpan salinan master file zona. Perubahan catatan DNS dibuat di server ini. Sebuah domain dapat memiliki satu atau lebih zona DNS. Setiap zona DNS memiliki file zona yang berisi setiap catatan DNS di zona itu. Demi kesederhanaan, artikel ini mengasumsikan bahwa Anda ingin menggunakan satu zona DNS untuk mengelola semua data DNS untuk nama domain Anda.

/etc/bind/named.conf.default-zones file mendefinisikan zona root dan zona localhost. Untuk menambahkan zona untuk nama domain Anda, edit /etc/bind/named.conf.local berkas.

sudo nano /etc/bind/named.conf.local

Tambahkan baris berikut ke file ini. Ganti example.com dengan nama domain Anda sendiri. Ganti 12.34.56.78 dengan alamat IP server DNS budak.

zone "example.com" {
      type master;
      file "/etc/bind/db.example.com";
      allow-query { any; };
      allow-transfer { 12.34.56.78; };
};

Pada konfigurasi di atas, kami membuat zona baru dengan zone klausa dan kami menentukan bahwa ini adalah zona master. File zona adalah /etc/bind/db.example.com , di mana kita akan menambahkan catatan DNS. Transfer zona hanya akan diizinkan untuk server DNS budak.

Alih-alih membuat file zona dari awal, kita dapat menggunakan file template zona. Salin konten db.empty ke file baru.

sudo cp /etc/bind/db.empty /etc/bind/db.example.com

File zona dapat berisi 3 jenis entri:

  • Komentar :mulai dengan titik koma (;)
  • Petunjuk :mulai dengan tanda dolar ($)
  • Catatan Sumber Daya :alias catatan DNS

File zona biasanya terdiri dari jenis catatan DNS berikut.

  • Rekor SOA (Awal Otoritas) :mendefinisikan karakteristik utama suatu zona. Ini adalah catatan DNS pertama di file zona dan wajib.
  • Catatan NS (Server Nama) :menentukan server mana yang digunakan untuk menyimpan catatan DNS dan menjawab kueri DNS untuk nama domain. Harus ada setidaknya dua catatan NS dalam file zona.
  • Data MX (Mail Exchanger) :menentukan host mana yang bertanggung jawab atas pengiriman email untuk nama domain.
  • Catatan (Alamat) :Mengubah nama DNS menjadi alamat IPv4.
  • Rekor AAAA (Quad A) :Mengubah nama DNS menjadi alamat IPv6.
  • Data CNAME (Nama Kanonik) :Digunakan untuk membuat alias untuk nama DNS.
  • Data TXT :SPF, DKIM, DMARC, dll.

Sekarang mari kita edit file zona.

sudo nano /etc/bind/db.example.com

Secara default, tampilannya seperti ini:

Anda dapat mengubahnya menjadi ini.

Dimana

  • $TTL direktif mendefinisikan Time to Live default default nilai untuk zona, yang merupakan waktu catatan DNS dapat di-cache pada resolver DNS. Arahan ini bersifat wajib. Waktu ditentukan dalam detik.
  • $ORIGIN direktif mendefinisikan domain dasar.
  • Nama domain harus diakhiri dengan titik (.), yang merupakan domain root. Jika nama domain diakhiri dengan titik, itu adalah nama domain yang sepenuhnya memenuhi syarat (FQDN).
  • Simbol @ merujuk ke domain dasar.
  • IN adalah kelas DNS. Itu singkatan dari Internet. Kelas DNS lain ada tetapi jarang digunakan.

Catatan pertama dalam file zona adalah catatan SOA (Start of Authority). Catatan ini berisi informasi berikut:

  • Server DNS utama .
  • Alamat email administrator zona . RFC 2142 merekomendasikan alamat email [email protected] . Di file zona, alamat email ini mengambil formulir ini:hostmaster.example.com karena simbol @ memiliki arti khusus dalam file zona.
  • Nomor seri zona . Nomor seri adalah cara melacak perubahan zona oleh server DNS budak. Secara konvensi, nomor seri mengambil format tanggal:yyyymmddss , di mana yyyy adalah empat digit angka tahun, mm adalah bulan, dd adalah hari, dan ss adalah nomor urut untuk hari itu. Anda harus memperbarui nomor seri jika ada perubahan pada file zona.
  • Segarkan nilai . Ketika nilai refresh tercapai, server DNS budak akan mencoba membaca catatan SOA dari server DNS master. Jika nomor seri menjadi lebih tinggi, transfer zona dimulai.
  • Coba lagi nilai . Menentukan interval coba lagi dalam hitungan detik jika server DNS slave gagal terhubung ke server DNS master.
  • Kedaluwarsa :Jika server DNS slave gagal melakukan kontak dengan server DNS master selama jangka waktu ini, slave akan berhenti merespons kueri DNS untuk zona ini.
  • TTL cache negatif :Menentukan nilai waktu aktif dari tanggapan DNS untuk nama DNS yang tidak ada (NXDOMAIN).

Catatan TXT biasanya diapit oleh tanda kutip ganda. Jika Anda menambahkan data DKIM, Anda juga perlu menyertakan nilai dengan tanda kurung.

Simpan dan tutup file. Kemudian jalankan perintah berikut untuk memeriksa apakah ada kesalahan sintaks pada file konfigurasi utama. Keluaran senyap menunjukkan tidak ada kesalahan yang ditemukan.

sudo named-checkconf

Kemudian periksa sintaks file zona.

sudo named-checkzone example.com /etc/bind/db.example.com

Jika ada kesalahan sintaks dalam file zona, Anda harus memperbaikinya, atau zona ini tidak akan dimuat. Pesan berikut menunjukkan tidak ada kesalahan sintaks.

zone example.com/IN: loaded serial 2019011503
OK

Kemudian mulai ulang BIND9.

sudo systemctl restart bind9

Jika Anda menggunakan uncomplicated firewall (UFW), maka buka TCP dan UDP port 53.

sudo ufw allow 53/tcp

sudo ufw allow 53/udp

Jika Anda menggunakan firewall iptables secara langsung, jalankan perintah berikut.

sudo iptables -A INPUT -p tcp --dport 53 -j ACCEPT

sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT

Konfigurasi Server DNS Slave

Sekarang kita menggunakan server lain sebagai server DNS budak, yang akan diberi nama ns2.example.com .

Pertama, edit named.conf.local berkas.

sudo nano /etc/bind/named.conf.local

Tambahkan zona seperti di bawah ini. Ganti 12.34.56.78 dengan alamat IP server DNS master.

zone "example.com" {
        type slave;
        file "db.example.com";
        allow-query { any; };
        masters { 12.34.56.78; };
};

Dalam konfigurasi di atas, kami menetapkan bahwa ini adalah server DNS budak untuk example.com zona dan akan menerima transfer zona hanya dari server DNS master.

Simpan dan tutup file. Kemudian jalankan perintah berikut untuk memeriksa apakah ada kesalahan sintaks pada file konfigurasi utama.

sudo named-checkconf

Jika tidak ada kesalahan yang ditemukan, mulai ulang BIND9.

sudo systemctl restart bind9

File zona pada server DNS budak dimuat dari transfer zona, yang digunakan untuk menyinkronkan perubahan catatan DNS dari server DNS master ke server DNS budak. Setelah BIND9 restart, transfer zona akan segera dimulai. Periksa log BIND9 dengan perintah berikut.

sudo journalctl -eu bind9

Anda dapat melihat pesan seperti di bawah ini, yang menunjukkan transfer zona berhasil.

named[31518]: transfer of 'example.com/IN' from 12.34.56.78#53: Transfer completed: 1 messages, 16 records, 886 bytes, 0.004 secs (221500 bytes/sec)

File zona akan disimpan sebagai /var/cache/bind/db.example.com pada server DNS budak.

Jika Anda menggunakan uncomplicated firewall (UFW), maka buka TCP dan UDP port 53.

sudo ufw allow 53/tcp

sudo ufw allow 53/udp

Jika Anda menggunakan firewall iptables secara langsung, jalankan perintah berikut.

sudo iptables -A INPUT -p tcp --dport 53 -j ACCEPT

sudo iptables -A INPUT -p udp --dprot 53 -j ACCEPT

Selengkapnya tentang Transfer Zona

Server DNS budak akan menghubungi master lagi ketika waktu penyegaran dalam catatan SOA tercapai dan jika nomor seri pada master lebih besar dari pada budak, transfer zona akan dimulai. Ada dua jenis transfer zona:

  • Transfer zona penuh (AXFR):Salinan lengkap file zona ditransfer.
  • Transfer zona tambahan (IXFR):Hanya data DNS yang diubah yang ditransfer.

Kedua jenis transfer zona menggunakan port TCP 53. Secara default, BIND pada server DNS slave akan meminta transfer zona tambahan dan BIND pada server DNS master hanya akan mengizinkan transfer zona tambahan saat zona dinamis.

Interval transfer zona merupakan faktor utama dari kecepatan propagasi perubahan catatan DNS. Alih-alih menunggu server DNS slave melakukan kontak, master BIND akan memberi tahu slave saat ada perubahan pada zona tersebut. Ini dapat sangat mengurangi waktu untuk menyebarkan perubahan zona ke Internet.

Zona Terbalik

Zona terbalik berisi catatan PTR yang memetakan alamat IP ke nama DNS. Ini adalah mitra dari catatan DNS A. Catatan PTR sering diperlukan untuk server email untuk melewati filter spam. Catatan ini bukan milik domain. Anda perlu membuat data PTR di panel kontrol penyedia hosting Anda, atau bertanya kepada ISP Anda, jadi saya tidak akan membahas pembuatan zona terbalik di BIND.

Ubah NS Record dan Buat Glue Record

Sekarang Anda perlu pergi ke situs web registrar domain Anda untuk mengubah catatan NS untuk domain Anda, sehingga Internet akan tahu bahwa Anda sekarang menggunakan server DNS Anda sendiri. Biasanya Anda menggunakan nama host dalam catatan NS seperti ns1.example.com dan ns2.example.com .

name server 1:     ns1.example.com
name server 2:     ns2.example.com

Jika Anda memiliki nama domain example.com dan Anda menggunakan subdomain untuk server DNS otoritatif (ns1.example.com dan ns2.example.com ), maka Anda juga perlu membuat catatan lem di pendaftar domain Anda, sehingga Internet dapat mengetahui alamat IP server DNS Anda. Catatan lem adalah catatan A untuk ns1.example.com dan ns2.example.com .

ns1.example.com        IP-address-of-master-server
ns2.example.com        IP-address-of-slave-server

Informasi di atas akan dikirim ke operator registri yang menjalankan server DNS TLD melalui Extensible Provisioning Protocol (EPP), sehingga server DNS TLD mengetahui nama dan alamat IP server DNS otoritatif untuk nama domain Anda. Bergantung pada pencatat domain yang Anda gunakan, data NS Anda mungkin disebarkan secara instan, atau mungkin perlu waktu hingga 24 jam untuk disebarkan. Anda dapat membuka https://dnsmap.io untuk memeriksa apakah data NS baru Anda aktif.

Saya akan menunjukkan cara melakukannya di NameCheap .

Jika Anda membeli nama domain di NameCheap, lalu masuk ke akun NameCheap Anda. Pilih Domain list menu di bilah sisi kiri, lalu klik tombol Kelola tombol di paling kanan.

Pilih DNS Lanjutan .

Gulir ke bagian bawah halaman, Anda akan menemukan server DNS pribadi bagian. Klik Tambahkan NameServer tombol untuk menambahkan server nama Anda sendiri:ns1.example.com dan ns2.example.com . Anda harus memasukkan alamat IP server nama Anda.

Setelah menambahkan dua server nama Anda, klik tombol pencarian untuk memeriksa apakah mereka berhasil ditambahkan. Jika demikian, catatan lem akan muncul di bagian bawah halaman ini.

Sekarang klik Domain tab, dan gunakan server DNS khusus Anda.

Bergantung pada pencatat domain yang Anda gunakan, data NS Anda mungkin disebarkan secara instan, atau mungkin perlu waktu hingga 24 jam untuk disebarkan. Anda dapat membuka https://dnsmap.io untuk memeriksa apakah data NS baru Anda aktif.

Setelah lem record dan NS record disebarkan ke Internet, server DNS Anda akan merespons permintaan DNS untuk nama domain Anda. Anda dapat memeriksa log kueri dengan:

sudo journalctl -eu bind9

Anda juga dapat menggunakan dig utilitas untuk memeriksa catatan NS nama domain Anda.

dig NS example.com

Jika NS record dan glue record telah disebarkan ke Internet, Anda akan melihat server nama Anda di bagian jawaban. Jika Anda melihat SERVFAIL error, mungkin karena Anda tidak membuka port UDP 53 di server nama Anda.

Yang Perlu Diketahui

  • Istilah master DNS server hanya menyiratkan bahwa server ini menyimpan salinan master file zona. Tidak ada prioritas yang lebih tinggi dalam hal resolusi DNS.
  • Selalu perbarui nomor seri SOA saat Anda membuat perubahan pada file zona.

Mengaktifkan Penyelesai

BIND dapat bertindak sebagai server DNS otoritatif untuk zona dan penyelesai DNS pada waktu bersamaan. Ini adalah praktik yang baik untuk memisahkan dua peran pada dua mesin yang berbeda dan dalam artikel ini kami menonaktifkan resolver di BIND. Jika Anda benar-benar ingin mengaktifkan resolver, ikuti petunjuk di bawah ini.

Edit file konfigurasi BIND.

sudo nano /etc/bind/named.conf.options

Temukan baris berikut.

 // disable recursion on authoritative DNS server.
 recursion no;

Ubah ke berikut, jadi hanya alamat IP tepercaya yang dapat mengirim kueri rekursif ke resolver DNS Anda dan server Anda tidak akan menjadi resolver terbuka.

 // allow recursion for trusted clients only.
 recursion yes;
 allow-query { localhost; 12.34.56.78; };

Ganti 12.34.56.78 dengan alamat IP Anda sendiri. Simpan dan tutup file. Pastikan definisi zona Anda di /etc/bind/named.conf.local file memiliki opsi berikut, sehingga Internet dapat meminta data DNS di zona Anda.

allow-query { any; };

Kemudian mulai ulang BIND.

sudo systemctl restart bind9

Buka https://openresolver.com/ untuk menguji apakah server BIND Anda adalah resolver terbuka.


Debian
  1. Cara mengatur server SFTP di Server Debian 11

  2. Cara Menginstal Server MySQL di Debian 10 Buster

  3. Cara Mengatur Server OpenVPN di Debian 10

  1. Cara Mengatur Alamat IP Statis di Debian 10 Buster

  2. Cara Mengatur Server Samba di Debian 10 Buster

  3. Cara Mengatur Server LAMP di Debian 10 Buster

  1. Cara Mengatur Server NFS di Debian 10 Buster

  2. Cara Mengatur Server LEMP di Debian 10 Buster

  3. Cara Mengatur RVM di Debian 10 Buster