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(使用调试)时遇到的错误:

查询字符串:select ttl, type, mx_priority, case when lower(type)='txt' then concat('"', data, '"') else data end from dns_records where zone = 'example.com' and host = ' @'

2012 年 9 月 17 日 01:09:33.610 dns_rdata_fromtext:缓冲区 0x7f5bfca73360:1:输入意外结束 2012 年 9 月 17 日 01:09:33.610 dns_sdlz_putrr 返回错误。错误代码是:输入意外结束 2012 年 9 月 17 日 01:09:33.610 查询字符串:选择 ttl、类型、mx_priority、case when lower(type)='txt' then concat('"', data, '"' ) 否则数据从 dns_records 结束,其中 zone = 'example.com' 和 host = '*'

2012 年 9 月 17 日 01:09:33.610 query.c:2579:致命错误:2012 年 9 月 17 日 01:09:33.610 RUNTIME_CHECK(结果 == 0)失败 2012 年 9 月 17 日 01:09:33.610 退出(由于库中的致命错误)

命名.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

1

Do you run named single-threaded (with "-n 1" parameter)? If not, named will crash in various places when working on more than one query in parallel, since the MySQL DLZ module is not thread safe.

于 2016-01-15T14:02:48.143 回答
0

手动登录数据库并运行查询。看看它会出现什么。该错误表示它的输入意外结束,这意味着它希望得到一些东西,但它从来没有得到它。所以第一件事是看你是否可以手动获取它。也许mysqld没有运行。可能未定义用户或密码设置错误或未授予该表的权限。这些都可以解释错误。

假设所有这些都有效,那么您有两个选择:

  • 启用更多登录,named.conf以便您有更多数据可以处理正在发生的事情
  • 删除并重新安装BIND,确保所有库上的所有哈希都匹配,并且所有依赖项都已到位。

于 2012-10-16T20:05:00.017 回答
0

我已经在 CentOS 7 上与 DLZ 绑定。我没有收到影响您的错误。

我意识到这是一篇较旧的帖子,但我想我会分享我的 conf 文件并配置选项。

我正在使用绑定 9.11.0

配置

 ./configure --prefix=/usr --sysconfdir=/etc/bind --localstatedir=/var --mandir=/usr/share/man --infodir=/usr/share/info --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 --enable-ipv6

命名.conf

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local
#auskommentiert !!!
#include "/etc/bind/named.conf.options";
#include "/etc/bind/named.conf.local";
#include "/etc/bind/named.conf.default-zones";


key "rndc-key" {
            // how was key encoded
            algorithm hmac-md5;
            // what is the pass-phrase for the key
                secret "noway";
             };


#options {
#default-key "rndc-key";
#default-server 127.0.0.1;
#default-port 953;
#};

controls {
inet * port 953 allow { any; } keys { "rndc-key"; };
#inet * port 53 allow { any; } keys { "rndc-key"; };
};



logging {
    channel query.log {
        file "/var/log/query.log";
        // Set the severity to dynamic to see all the debug messages.
        severity dynamic;
    };

    category queries { query.log; };
};


dlz "Mysql zone" {
   database "mysql
   {host=172.16.254.100 port=3306 dbname=dyn_server_db user=db_user pass=db_password}
   {SELECT zone FROM dyn_dns_records WHERE zone = '$zone$'}
   {SELECT ttl, type, mx_priority, IF(type = 'TXT', CONCAT('\"',data,'\"'), data) AS data
    FROM dyn_dns_records
    WHERE zone = '$zone$' AND host = '$record$' AND type <> 'SOA' AND type <> 'NS'}
   {SELECT ttl, type, data, primary_ns, resp_person, serial, refresh, retry, expire, minimum
    FROM dyn_dns_records
    WHERE zone = '$zone$' AND (type = 'SOA' OR type='NS')}
   {SELECT ttl, type, host, mx_priority, IF(type = 'TXT', CONCAT('\"',data,'\"'), data) AS data, resp_person, serial, refresh, retry, expire, minimum
    FROM dyn_dns_records
    WHERE zone = '$zone$' AND type <> 'SOA' AND type <> 'NS'}
   {SELECT zone FROM xfr_table where zone='$zone$' AND client = '$client$'}";
};
于 2017-04-01T01:45:30.517 回答