我在 18.04 服务器上安装了 LDAP、BIND9 和 Bind9-dyndb-ldap。向 LDAP 添加了 BIND 模式;向 LDAP 添加了区域和一些服务器 dns 条目。向 named.conf 添加了“dyndb”部分,配置 ldap 连接信息。
...
dyndb "bind9-dyndb" "/usr/lib/bind/ldap.so" {
uri "ldap://ldap.example.com";
base "ou=dns,dc=example,dc=com";
auth_method "simple";
bind_dn "cn=admin,dc=example,dc=com";
password "MyPassword";
};
...
我可以使用“ldapsearch”提供的用户名和密码搜索我的 ldap。我还能够解决不允许 BIND9 使用“/usr/lib/bind/ldap.so”的 AppArmor 配置问题。
现在,当我尝试启动 bind9 时,我在系统日志中收到以下错误:
Dec 21 21:42:20 ltserver1 named[17111]: cannot parse settings for 'named.conf for database bind9-dyndb': not found
Dec 21 21:42:20 ltserver1 named[17111]: dynamic database 'bind9-dyndb' configuration failed: not found
Dec 21 21:42:20 ltserver1 named[17111]: loading configuration: not found
Dec 21 21:42:20 ltserver1 named[17111]: exiting (due to fatal error)
我不知道该如何进一步调试。如能提供任何“提示”,我将不胜感激!
我找不到任何教程展示最新的 bind9-dyndb-ldap/BIND9 配置示例(我找到的最新教程适用于 Ubuntu 16.04,它仍然使用“Dynamic-DB”而不是“dyndb”)。我感觉自己在黑暗中摸索。任何帮助都非常有帮助的!
答案1
更新:已解决 我在 Red Hat 上找到了这个 Bugzilla 链接:https://bugzilla.redhat.com/show_bug.cgi?id=1436268
如果未定义server_id,它就会崩溃。
因此,我刚刚补充道
server_id "[hostname of the machine]"
到我的named.conf文件的dyndb部分,它就立即启动了。
希望这可以帮助。
原始帖子
我正在从 Xenial 升级到 Bionic,遇到了完全相同的问题,配置也几乎和您的一样。据我所知,我已将配置文件重写为新的 dyndb 格式。必须将选项格式从:
arg "uri ldaps://example.com"
到
uri "ldaps://example.com"
唯一的区别是我的密码没有加引号,因为指令是针对没有加引号的字符串(尽管如果加引号它也不会抱怨)。
无论我设置什么调试级别,我似乎都无法获得更多无法解析某些内容的详细信息。所有这些都是有效的配置指令,所以我很困惑!
由于所有这些都是在 docker 中构建的,我总是可以使用 Xenial 映像,因为我的旧 DNS 容器映像可以与旧软件包一起构建和部署,但我想弄清楚这个配置不喜欢哪部分。
不管怎样,我确实让它吐出了 dyndb LDAP 模块的预期语法,尽管这都是我所期望的。
22-Jan-2019 01:29:03.990 expected grammar:
auth_method <quoted_string>;
base <quoted_string>;
bind_dn <quoted_string>;
connections <integer>;
directory <quoted_string>;
dyn_update <boolean>;
fake_mname <quoted_string>;
krb5_keytab <quoted_string>;
krb5_principal <quoted_string>;
ldap_hostname <quoted_string>;
password <string>;
reconnect_interval <integer>;
sasl_auth_name <quoted_string>;
sasl_mech <quoted_string>;
sasl_password <quoted_string>;
sasl_realm <quoted_string>;
sasl_user <quoted_string>;
server_id <quoted_string>;
sync_ptr <boolean>;
timeout <integer>;
uri <quoted_string>;
verbose_checks <boolean>;