Saya berhasil menggunakan file zona kecil (20.000 entri) dengan bind9
server, tetapi hari ini penyedia data saya mengirim pembaruan yang menyebabkan file zona menjadi 300.000+ entri besar (30Mb+).
Masalahnya adalah server tidak akan memulai dengan file zona ini. named-checkconf
tidak akan melaporkan kesalahan apa pun. Tidak ada pesan log yang tersedia (atau saya tidak dapat mencatatnya dengan benar).
Saya ingin tahu apakah bind9
mampu menangani file konfigurasi besar dan jika ya bagaimana cara memperbaikinya. Jika tidak, saya ingin tahu apakah ada solusi untuk masalah ini. Mungkinkah menyimpan entri dalam database?
File zona yang saya coba gunakan dapat diunduh dari sini.
Pembaruan:
service bind9 status
menunjukkan beberapa informasi yang mungkin relevan:
adjusted limit on open files from 4096 to 1048576
found 1 CPU, using 1 worker thread
using 1 UDP listener per interface
using up to 4096 sockets
loading configuration from '/etc/bind/named.conf'
Saya tidak yakin bagaimana menafsirkan atau menggunakan informasi ini… Ada ide?
Saya juga tidak dapat menemukan di mana bind9
log berada:/var/log/
tidak memiliki bind9
entri. Adakah yang bisa memberi tahu saya di mana mereka berada di Debian Jessie?
Jawaban yang Diterima:
Saya telah melihat file zona Anda:tampaknya merupakan daftar lebih dari 350k domain, saat ini, di mana server BIND lokal didefinisikan sebagai master. Domain dengan format berikut:
zone "xxxx.com" { type master; notify no; file "null.zone.file"; };
Sesuai kebutuhan memori, saya akan mengatakan sebagai sosok kasarnya Anda mungkin memerlukan sekitar 40MB-80MB RAM gratis untuk itu karena tabel domain dimuat dalam memori. (walaupun saya akan merasa lebih nyaman dengan setidaknya 200MB)
Kecuali server sangat dibatasi dalam RAM, tampaknya agak tidak mungkin, tetapi itu bisa terjadi.
Saya juga memperhatikan ada garis bawah (“_”) pada nama beberapa domain. Memiliki garis bawah di DNS RR memecah beberapa RFC (RFC 952 dan RFC 1123), dan Anda perlu menambahkan ke bagian opsi BIND direktif:
check-names master ignore;
Adapun format dan metode yang digunakan untuk daftar hitam domain. Dari versi 9.8 dan seterusnya, BIND mendukung apa yang dikenal sebagai Response Policy Zones (RPZ), yang dibuat khusus untuk domain yang masuk daftar hitam.
Beberapa penyedia daftar hitam (komersial) saat ini mengikuti format itu. (Saya sendiri menggunakan RPZ baik di kantor maupun di rumah).
Menggunakan RPZ seharusnya lebih masuk akal dan juga berarti beban yang lebih ringan, dan karena itu, jika Anda membayar layanan, saya menyarankan Anda untuk menghubungi pemasok Anda untuk mengetahui cara menggunakannya. Format RPZ juga mendukung wildcard sampai batas tertentu, yang berarti file daftar hitam yang jauh lebih kecil.
Alternatifnya juga mengolah file dengan skrip untuk mengubahnya menjadi format RPZ.
Terkait:Apa yang menyebabkan berbagai sinyal dikirim?Saya akan meninggalkan tautan yang relevan di sini tentang RPZ dan penyedia RPZ resmi:
https://dnsrpz.info
dan tutorial cara mengkonfigurasi RPZ:
http://www.zytrax.com/books/dns/ch9/rpz.html
Seperti yang mungkin telah Anda catat, dengan konfigurasi saat ini, Anda juga akan memiliki banyak file yang terbuka; maka saya sarankan lagi menggunakan RPZ.
Untuk menangani lebih banyak file terbuka, dalam email besar, DNS, atau server HTTP, batasannya sering kali dinaikkan.
Situasinya tidak seburuk sebelumnya dengan kernel yang lebih lama, tetapi saya tetap menyarankan untuk menaikkan batasnya.
Edit /etc/sysctl.conf
dan ubah/tambahkan direktif fs.file-max
untuk batas global file terbuka:
fs.file-max=500000
Untuk menerapkan batas file baru tanpa me-reboot, Anda perlu menjalankan:
sudo sysctl -p
Dan untuk batasan file per proses, edit, /etc/security/limits.conf
:
* - nofile 400000
Untuk menerapkan batas file per proses, baik logout dan login, atau jalankan:
sudo ulimit -n 400000
Setelah menaikkan dua batas ini, Anda perlu memulai ulang BIND:
sudo service bind9 restart
Untuk mengonversi file Anda ke format RPZ, Anda menjalankan:
cat bind | tr -d " | awk ' { print $2" CNAME ." } ' > /etc/bind/rpz.db
Script akan mengonversi entri ke format berikut:
zeus.developershed.com CNAME .
zeusclicks.com CNAME .
zintext.com CNAME .
Tambahkan di bagian opsi bernama:
response-policy { zone "rpz"; };
Buat deklarasi zona RPZ:
zone "rpz" {
type master;
file "/etc/bind/rpz.db";
};
Tambahkan ke bagian atas /etc/bind/rpz.db
berkas:
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS your_dns_fqdn.
Dekonfigurasi file DNS Anda dan mulai ulang server BIND Anda. Jelas file RPZ dapat dioptimalkan dengan wildcard dan dibuat lebih pendek, namun bahkan tanpa pengoptimalan itu sekarang Anda tidak memerlukan banyak file terbuka.
Adapun untuk berkonsultasi dengan log BIND/DNS, mereka bersama-sama dengan log sistem di /var/log/syslog
dengan tag named
. Anda dapat menggunakan perintah:
sudo grep named /var/log/syslog