GNU/Linux >> Linux の 問題 >  >> Linux

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のどこにあるのか誰か教えてもらえますか?

承認された回答:

ゾーンファイルを見ました。現時点では、ローカル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

Linux
  1. libtool の .la ファイルは何のためのものですか?

  2. 大きなファイルの行数を数える

  3. 大きなファイルに対して大きなリストをgrepする

  1. Linux用の10個の便利なBashエイリアス

  2. Linux 上の大きなファイルのバイナリ diff/パッチ?

  3. Linux test -a コマンド テストとは何ですか?

  1. 初心者向けのLinuxwcコマンドの説明(6例)

  2. 最も古いファイルを移動するためのシェルスクリプト?

  3. iノードは何に適していますか?