我最近用 ISC dhcpd 4 和 bind 9 设置了动态 DNS。除了网络上的少数主机无法解析外,一切都正常。经过调查,我发现它们已被动态添加到绑定区域文件中,但它们的域名附加在主机名中。
例如 server1 正常,但 server2 无法解析:
$TTL 1800 ; 30 minutes
server1 A 192.168.0.10
TXT "00ecbb5990a60bb0b138272611cae0f56d"
server2.reh.favsys.net A 192.168.0.11
TXT "00ecbb5990a60bb0b138272611cae0f56d"
我检查了 server2,看看有什么不同,我发现在 /etc/sysconfig/netowrk-scripts/ifcfg-eth0 文件中,DHCP_HOSTNAME 选项使用 fqdn 设置:DHCP_HOSTNAME=server2.my.domain.net,而 server1 只有主机名:DHCP_HOSTNAME=server1
是的,所以我想我只需要找到所有有此问题的服务器并将接口文件更改为仅包含主机名。
这很好,可以做到,但这是配置接口文件的正确方法吗?DHCP_HOSTNAME 选项应该是不合格的名称。
或者我可以在 DHCP 服务器的配置文件中打开一个设置来阻止这种行为发生。如果有一种方法可以配置 dhcp,以便在客户端发送完全合格的主机名时忽略域部分,我更愿意采用这种方法。
我当前的 dhcpd.conf 选项是:
include "/etc/rndc.key";
ddns-update-style interim;
ddns-domainname "my.domain.net.";
ddns-rev-domainname "in-addr.arpa.";
ddns-updates on;
ignore client-updates;
option domain-search "my.domain.net";
default-lease-time 1800;
max-lease-time 7200;
log-facility local7;
authoritative;
我还尝试配置 dhcp 服务器以允许客户端更新,看看是否会产生影响。然而,这只会导致区域文件中出现动态更新条目,如下所示:
$ORIGIN my.domain.net.
$TTL 1800 ; 30 minutes
server1 A 192.168.0.10
TXT "009ddasdr32rfdsfksdfpdsadsad3343fcdsd"
$ORIGIN my.domain.net.my.domain.net.
server2 A 192.168.0.11
TXT "dasdasdsadasdsddvc0b1382726dsdadasdsd"
创建了一个新源,其域名重复,但主机名仍然无法解析。
如果能提供在使用 dhcp 和 bind 进行 ddns 时,在客户端上正确配置主机名的正确方法,我将不胜感激。
编辑添加子网范围抱歉,范围遗漏了,这里是子网选项域名在范围内指定的一个示例
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.10 192.168.0.250;
next-server 192.168.0.2;
filename "/pxelinux.0";
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
option domain-name-servers 192.168.0.3;
option domain-name "my.domain.net";
}
答案1
ddns-domainname
和选项ddns-rev-domainname
不是必需的,因为您的风格是临时的(应该是这样)。
ignore client-updates
应该忽略客户端认为其 FQDN 应该是什么。你做得对。
奇怪的是,您没有指定option domain-name "example.net"
example.net 是您的域名。这可以是全局的,也可以是特定范围的(由于某种原因,您省略了范围;这可能很重要)。
但是,我发现问题在于它认为第二台服务器的 DNS 后缀是my.domain.net.my.domain.net.
。它之所以这样认为,是因为尽管它正确地忽略了服务器对其 DNS 后缀(或域名)的断言,但 server2 却告诉 DHCP 服务器其主机名(将添加 FQDN 后缀)是server2.my.domain.net
。主机名中不应包含任何.
s。虽然 dhcpd 不删除或拒绝它很奇怪,也许是一种缺陷,但 server2 配置错误,这是唯一可以纠正此问题的地方。
在建立临时方法之前,对于静态租约,可以使用选项ddns-hostname
来覆盖客户端的断言。这不再可用。
即使现在,对于从 DHCP 服务器接受其主机名(如静态租约中指定)的客户端(大多数 Linux 和其他一些系统,但不包括 Windows),您可以从 DHCP 服务器控制此行为。但是,这听起来不像是对您的环境的描述。