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のどこにあるのか誰か教えてもらえますか?
承認された回答:
ゾーンファイルを見ました。現時点では、ローカルBINDサーバーがマスターとして定義されている35万を超えるドメインのリストのようです。ドメインの形式は次のとおりです。
zone "xxxx.com" { type master; notify no; file "null.zone.file"; };
メモリ要件に従って、ドメインテーブルがメモリにロードされるため、そのために約40MB〜80MBの空きRAMが必要になる可能性があります。 (少なくとも200MBの方が快適だと思いますが)
サーバーがRAMに厳しく制限されていない限り、それは少しありそうもないように見えますが、発生する可能性があります。
また、いくつかのドメインの名前にアンダースコア( "_")があることに気づきました。 DNS RRにアンダースコアを付けると、いくつかのRFC(RFC952およびRFC1123)が壊れます。そのため、BINDオプションセクションにディレクティブを追加する必要があります。
check-names master ignore;
ドメインをブラックリストに載せるために使用されているフォーマットと方法について。バージョン9.8以降、BINDは、ドメインをブラックリストに登録するために特別に作成された、応答ポリシーゾーン(RPZ)と呼ばれるものをサポートします。
いくつかの(商用)ブラックリストプロバイダーは、今日その形式に従います。 (私自身、職場と自宅の両方でRPZを使用しています。)
RPZを使用する方が理にかなっており、負荷も軽くなります。そのため、サービスを支払う場合は、使用方法についてサプライヤーに問い合わせることをお勧めします。 RPZ形式は、ある程度ワイルドカードもサポートします。これは、はるかに小さいブラックリストファイルを意味します。
別の方法として、ファイルをスクリプトで処理してRPZ形式に変更することもできます。
関連:さまざまな信号が送信される原因は何ですか?RPZと公式RPZプロバイダーに関する関連リンクをここに残します:
https://dnsrpz.info
および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
これらの2つの制限を引き上げた後、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