0

ソースから Bind 9 をコンパイルし (以下を参照)、MySQL DLZ で Bind9 をセットアップしました。バッファ オーバーフローについてサーバーから何かを取得しようとすると、エラーが発生し続けます。何度もグーグルで検索しましたが、このエラーを修正する方法が見つかりません。

オプションを構成します。

root@anacrusis:/opt/bind9/bind-9.9.1-P3# という名前の -V BIND 9.9.1-P3 を '--prefix=/opt/bind9' '--mandir=/opt/bind9/man' でビルド'--infodir=/opt/bind9/info' '--sysconfdir=/opt/bind9/config' '--localstatedir=/opt/bind9/var' '--enable-threads' '--enable-largefile' '--with-libtool' '--enable-shared' '--enable-static' '--with-openssl=/usr' '--with-gssapi=/usr' '--with-gnu-ld' '--with-dlz-postgres=no' '--with-dlz-mysql=yes' '--with-dlz-bdb=no' '--with-dlz-filesystem=yes' '--with-dlz -stub=yes' '--with-dlz-ldap=yes' '--enable-ipv6' 'CFLAGS=-fno-strict-aliasing -DDIG_SIGCHASE -O2' 'LDFLAGS=-Wl,-Bsymbolic-functions' 'CPPFLAGS =' OpenSSL バージョンを使用: OpenSSL 1.0。1 2012 年 3 月 14 日 libxml2 バージョンを使用: 2.7.8

dig example.comこれは私が(デバッグで)私が得るエラーです:

クエリ文字列: ttl, type, mx_priority, case when lower(type)='txt' then concat('"', data, '"') else data end from dns_records where zone = 'example.com' and host = ' を選択@'

17-Sep-2012 01:09:33.610 dns_rdata_fromtext: buffer-0x7f5bfca73360:1: 入力の予期しない終了 17-Sep-2012 01:09:33.610 dns_sdlz_putrr がエラーを返しました。エラー コード: 入力の予期しない終了 17-Sep-2012 01:09:33.610 クエリ文字列: ttl、type、mx_priority、case when lower(type)='txt' then concat('"', data, '"' を選択) ゾーン = 'example.com' およびホスト = '*' である dns_records からデータが終了します。

17-Sep-2012 01:09:33.610 query.c:2579: 致命的なエラー: 17-Sep-2012 01:09:33.610 RUNTIME_CHECK(result == 0) failed 17-Sep-2012 01:09:33.610 exiting (dueライブラリの致命的なエラーまで)

Named.conf

options {
    directory "/opt/bind9/";
    allow-query-cache { none; };
    allow-query { any; };
    recursion no;
};

dlz "Mysql zone" {
    database "mysql
    {host=localhost dbname=system ssl=false user=root pass=*password*}
    {select zone from dns_records where zone = '$zone$'}
    {select ttl, type, mx_priority, case when lower(type)='txt' then concat('\"', data, '\"')
        else data end from dns_records where zone = '$zone$' and host = '$record$'}
    {}
    {}
    {}
    {}";
};
4

3 に答える 3

0

手動で DB にログインし、クエリを実行します。それが思いつくものを見てください。このエラーは、予期しない入力の終わりがあったことを示しています。つまり、何かを取得することを期待していたのに、取得できませんでした。したがって、最初に手動で取得できるかどうかを確認します。たぶんmysqld実行されていません。ユーザーが定義されていないか、パスワードが間違って設定されているか、そのテーブルに対する権限が付与されていない可能性があります。これらはすべてエラーの原因となる可能性があります。

これがすべて機能すると仮定すると、次の 2 つのオプションがあります。

  • より多くのログを有効にnamed.confして、何が起こっているかについてより多くのデータを処理できるようにします
  • を削除して再インストールBINDし、すべてのハッシュがすべてのライブラリで一致し、すべての依存関係が整っていることを確認します。

于 2012-10-16T20:05:00.017 に答える