bind9 的大區域文件:廣告攔截
我成功地在
bind9
伺服器上使用了一個小的(20,000 個條目)區域文件,但今天我的數據提供者發送了一個更新,導致區域文件變成了 300,000+ 個條目(30Mb+)。問題是伺服器不會以這個區域文件啟動。
named-checkconf
不會報告任何錯誤。沒有可用的日誌消息(或者我無法正確記錄它們)。我想知道是否
bind9
能夠處理大型配置文件,如果可以,我該如何解決。如果沒有,我想知道這個問題是否有任何解決方法。也許可以將條目儲存在數據庫中?我嘗試使用的區域文件可以從這裡下載。
更新:
service bind9 status
顯示了一些可能相關的資訊: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'
我不太確定如何解釋或使用這些資訊……有什麼想法嗎?我也無法找到
bind9
日誌所在的位置:/var/log/
沒有bind9
條目。誰能告訴我他們在 Debian Jessie 上的位置?
我看過你的區域文件:它似乎是一個超過 350k 域的列表,目前,它被定義為本地 BIND 伺服器作為主伺服器。域具有以下格式:
zone "xxxx.com" { type master; notify no; file "null.zone.file"; };
根據記憶體要求,我會說作為一個大概的數字,您可能需要大約 40MB-80MB 的可用 RAM,因為域表已載入到記憶體中。(儘管至少 200MB 讓我感覺更舒服)
除非伺服器在 RAM 中受到嚴重限制,否則這似乎有點不可能,但它可能會發生。
我還注意到幾個域的名稱中有下劃線(“_”)。在 DNS RR 中使用下劃線會破壞幾個 RFC(RFC 952 和 RFC 1123),您需要將指令添加到 BIND 選項部分:
check-names master ignore;
至於用於將域列入黑名單的格式和方法。從 9.8 版開始,BIND 支持專門為將域列入黑名單而創建的所謂的響應策略區 (RPZ)。
現在有幾個(商業)黑名單提供商遵循這種格式。(我自己在工作和家裡都使用 RPZ)。
使用 RPZ 應該更有意義,也意味著更輕的負載,因此,如果您支付服務費用,我建議您聯繫您的供應商以了解如何使用它。RPZ 格式在某種程度上還支持萬用字元,這意味著黑名單文件要小得多。
另一種方法是使用腳本處理文件以將其更改為 RPZ 格式。
我將在此處留下有關 RPZ 和官方 RPZ 提供商的相關連結:
以及如何配置 RPZ 的教程:
http://www.zytrax.com/books/dns/ch9/rpz.html
您可能已經註意到,在目前配置下,您還會有很多打開的文件;因此我建議再次使用 RPZ。
為了在大型電子郵件、DNS 或 HTTP 伺服器中處理更多打開的文件,通常必須提高限制。
情況並不像以前使用舊核心那樣糟糕,但我仍然建議提高限制。
編輯和修改/添加打開文件的全域限制
/etc/sysctl.conf
指令:fs.file-max
fs.file-max=500000
要在不重新啟動的情況下應用新文件限制,您需要執行:
sudo sysctl -p
對於每個程序的文件限制,請編輯
/etc/security/limits.conf
:* - nofile 400000
要應用每個程序的文件限制,請註銷和登錄,或執行:
sudo ulimit -n 400000
提高這兩個限制後,需要重啟 BIND:
sudo service bind9 restart
要將文件轉換為 RPZ 格式,請執行:
cat bind | tr -d \" | awk ' { print $2" CNAME ." } ' > /etc/bind/rpz.db
該腳本會將條目轉換為以下格式:
zeus.developershed.com CNAME . zeusclicks.com CNAME . zintext.com CNAME .
在命名的選項部分添加:
response-policy { zone "rpz"; };
創建 RPZ 區域的聲明:
zone "rpz" { type master; file "/etc/bind/rpz.db"; };
添加到
/etc/bind/rpz.db
文件頂部:$TTL 604800 @ IN SOA localhost. root.localhost. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL @ IN NS your_dns_fqdn.
取消配置您的 DNS 文件並重新啟動您的 BIND 伺服器。顯然,RPZ 文件可以使用萬用字元進行優化並縮短得多,但是即使沒有這種優化,現在您也不需要那麼多打開的文件。
至於查詢 BIND/DNS 日誌,它們與系統登錄一起使用
/var/log/syslog
標籤named
。您可以使用以下命令:sudo grep named /var/log/syslog