使用 mysql dlz 绑定 9.16.33 启动失败,Required token $zone$ not found.
详细信息为:
$ sudo named -d 0 -g
07-Dec-2022 14:54:31.043 starting BIND 9.16.33 (Extended Support Version) <id:35e9c6e>
07-Dec-2022 14:54:31.043 running on Linux x86_64 6.0.9-kagamine #2 SMP PREEMPT_DYNAMIC Sat Nov 26 18:02:37 HKT 2022
07-Dec-2022 14:54:31.043 built with '--build=x86_64-pc-linux-gnu' '--host=x86_64-pc-linux-gnu' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--datadir=/usr/share' '--sysconfdir=/etc' '--localstatedir=/var/lib' '--datarootdir=/usr/share' '--disable-static' '--docdir=/usr/share/doc/bind-9.16.33' '--htmldir=/usr/share/doc/bind-9.16.33/html' '--with-sysroot=/' '--libdir=/usr/lib64' 'AR=/usr/bin/x86_64-pc-linux-gnu-ar' '--prefix=/usr' '--sysconfdir=/etc/bind' '--localstatedir=/var' '--with-libtool' '--enable-full-report' '--without-readline' '--with-openssl=/usr' '--without-cmocka' '--disable-backtrace' '--enable-linux-caps' '--disable-dnsrps' '--disable-dnstap' '--disable-fixed-rrset' '--without-dlz-bdb' '--with-dlopen' '--with-dlz-filesystem' '--with-dlz-stub' '--without-gssapi' '--without-json-c' '--without-dlz-ldap' '--with-dlz-mysql' '--without-dlz-odbc' '--without-dlz-postgres' '--without-lmdb' '--with-libxml2' '--with-zlib' '--without-python' '--without-maxminddb' '--disable-geoip' 'build_alias=x86_64-pc-linux-gnu' 'host_alias=x86_64-pc-linux-gnu' 'CFLAGS=-O3 -pipe -mavx2 -mfma -maes -Wno-unused-variable -finline-functions -fomit-frame-pointer' 'LDFLAGS=-O3 -pipe -mavx2 -mfma -maes -Wno-unused-variable -finline-functions -fomit-frame-pointer -Wl,-O3 -Wl,--as-needed -Wl,--hash-style=gnu -Wl,--sort-common -Wl,-x -Wl,-X'
07-Dec-2022 14:54:31.043 running as: named -d 0 -g
07-Dec-2022 14:54:31.043 compiled by GCC 11.3.0
07-Dec-2022 14:54:31.043 compiled with OpenSSL version: OpenSSL 1.1.1q 5 Jul 2022
07-Dec-2022 14:54:31.043 linked to OpenSSL version: OpenSSL 1.1.1q 5 Jul 2022
07-Dec-2022 14:54:31.043 compiled with libxml2 version: 2.10.3
07-Dec-2022 14:54:31.043 linked to libxml2 version: 21003
07-Dec-2022 14:54:31.043 compiled with zlib version: 1.2.12
07-Dec-2022 14:54:31.043 linked to zlib version: 1.2.13
07-Dec-2022 14:54:31.043 ----------------------------------------------------
07-Dec-2022 14:54:31.043 BIND 9 is maintained by Internet Systems Consortium,
07-Dec-2022 14:54:31.043 Inc. (ISC), a non-profit 501(c)(3) public-benefit
07-Dec-2022 14:54:31.043 corporation. Support and training for BIND 9 are
07-Dec-2022 14:54:31.043 available at https://www.isc.org/support
07-Dec-2022 14:54:31.043 ----------------------------------------------------
07-Dec-2022 14:54:31.043 adjusted limit on open files from 4096 to 1048576
07-Dec-2022 14:54:31.043 found 28 CPUs, using 28 worker threads
07-Dec-2022 14:54:31.043 using 28 UDP listeners per interface
07-Dec-2022 14:54:31.075 using up to 21000 sockets
07-Dec-2022 14:54:31.078 loading configuration from '/etc/bind/named.conf'
07-Dec-2022 14:54:31.078 reading built-in trust anchors from file '/etc/bind/bind.keys'
07-Dec-2022 14:54:31.078 using default UDP/IPv4 port range: [32768, 60999]
07-Dec-2022 14:54:31.078 using default UDP/IPv6 port range: [32768, 60999]
07-Dec-2022 14:54:31.079 listening on IPv4 interface lo, 127.0.0.1#5353
07-Dec-2022 14:54:31.089 listening on IPv4 interface wg0, 10.123.112.20#5353
07-Dec-2022 14:54:31.092 listening on IPv6 interface lo, ::1#5353
07-Dec-2022 14:54:31.094 generating session key for dynamic DNS
07-Dec-2022 14:54:31.095 sizing zone task pool based on 1 zones
07-Dec-2022 14:54:31.095 Loading 'example_com_dlz' using driver mysql
07-Dec-2022 14:54:31.095 Required token $zone$ not found.
07-Dec-2022 14:54:31.095 Could not build find zone query list
07-Dec-2022 14:54:31.095 mysql driver could not create database instance object.
07-Dec-2022 14:54:31.095 SDLZ driver failed to load.
07-Dec-2022 14:54:31.095 DLZ driver failed to load.
07-Dec-2022 14:54:31.095 loading configuration: failure
07-Dec-2022 14:54:31.095 exiting (due to fatal error)
在named.conf中:
zone "example.com" {
type master;
dlz example_com_dlz;
};
dlz "example_com_dlz" {
database "mysql
{socket=/run/mysqld/mysqld.sock user=root dbname=zonecc}
{select id from example_com where zone = '%zone%' }
{select ttl, record, case when type='TXT' then concat('\"', data, '\"') else data end from example_com where host = '%record%' and zone = '%zone%' }
";
};
在 MariaDB 中:
select * from example_com;
+-----+------------+--------+------+-------------------------------------------------------------------------+-----------+
| id | host | record | ttl | data | zone |
+-----+------------+--------+------+-------------------------------------------------------------------------+-----------+
| 1 | @ | SOA | 300 | ns0.example.com. dns.mail.example.com. 1670134076 7200 1800 604800 1800 | example.com |
| 2 | @ | NS | 900 | ns0.example.com | example.com |
| 3 | @ | NS | 1200 | ns1.example.com | example.com |
| 10 | ns0 | A | 600 | xx.xx.xx.xx | example.com |
| 11 | ns0 | AAAA | 600 | xxxx::xxxx | example.com |
| 12 | ns1 | AAAA | 600 | xx.xx.xx.xx | example.com |
| 13 | ns1 | AAAA | 600 | xxxx::xxxx | example.com |
| 28 | hydrogen | A | 600 | xx.xx.xx.xx | example.com |
| 29 | hydrogen | AAAA | 600 | xxxx:xxxx | example.com |
...
答案1
似乎您需要使用$zone$
而不是%zone%
。我还怀疑您也需要替换其他变量的分隔符,例如%record%
。