我有一台 Ubuntu 14.04 服务器,运行着isc_dhcp_server
DNSbind9
服务器。Bind 充当缓存,和它维护.m
我本地网络上的域(和区域)。服务器的地址是10.0.0.1
,其 FQDN 是server.m
。
问题是 DHCP 服务器没有向 DNS 服务器发送任何 DDNS 更新。我尝试过多种方式更改 DHCP 服务器的配置(使用 LDAP),但都无济于事。例如:我将现在属于 的所有配置语句移至其父subnet
级group
。这两种配置似乎都运行良好(或不良好)。
我究竟做错了什么?
我做过但是设法向 DNS 服务器发送手动构建的 DDNS 更新,例如这个答案显示了如何操作。这非常有效,更新显示在我的系统日志中。即使我使用了错误的密钥nsupdate
,也会被记录下来。因此,我的绑定配置应该没问题。
我的 DHCP 服务器是使用 LDAP 配置的,如下所示教程. 生成的配置文件(在 DHCP 服务器启动过程中从 LDAP 树生成)看起来像下面发布的代码。(的结果ldap-debug-file "/var/log/dhcp-ldap.conf";
)
你可能会想“条目在哪儿host
?“。在我的 LDAP 目录中,它们位于 内group
,为objectClass: dhcpGroup
,但它们不会出现在派生dhcp-ldap.conf
文件中。我使用属性配置的那些主机dhcpHWAddress: ethernet 01:23:45:67:89:ab
被视为known-clients
,因为它们最终从 接收地址range 10.0.0.64 10.0.0.127
。我以这种方式配置的所有主机也都有dhcpOption: host-name "some-host-name"
和dhcpStatements: ddns-hostname "some-host-name"
。
尽管known-clients
被认出来了,但我没看到任何DHCP 服务器尝试更新我的日志中的任何 DNS 记录。
log-facility local7;
default-lease-time 43200;
max-lease-time 86400;
key DHCP_UPDATER { algorithm hmac-md5; secret somesecretkey; }
group {
option domain-name "m";
option subnet-mask 255.255.255.0;
option broadcast-address 10.0.0.255;
option time-servers server.m;
option routers server.m;
option domain-name-servers server.m;
subnet 10.0.0.0 netmask 255.255.255.0 {
authoritative;
update-static-leases on;
deny client-updates;
ddns-update-style interim;
ddns-updates on;
zone 0.0.10.in-addr.arpa. { primary server.m; key DHCP_UPDATER; }
zone m. { primary server.m; key DHCP_UPDATER; }
ddns-rev-domainname "0.0.10.in-addr.arpa.";
ddns-domainname "m.";
pool {
range 10.0.0.128 10.0.0.192;
allow unknown-clients;
}
pool {
range 10.0.0.64 10.0.0.127;
allow known-clients;
}
}
}
答案1
来自 dhcpd.conf(5) 手册页:
The ddns-update-style parameter
ddns-update-style style;
The style parameter must be one of ad-hoc, interim or none. The
ddns-update-style statement is only meaningful in the outer scope -
it is evaluated once after reading the dhcpd.conf file, rather than
each time a client is assigned an IP address, so there is no way to
use different DNS update styles for different clients. The default is
none.
在您的配置中,您已将其放入ddns-update-style
一个subnet
块内。根据上述内容,ddns-update-style
仅在外部范围内有意义,因此您编写的配置将不起作用。移至ddns-update-style
外部范围,即任何块之外。