![DHCPD 分配错误的 DNS 服务器](https://linux22.com/image/635174/DHCPD%20%E5%88%86%E9%85%8D%E9%94%99%E8%AF%AF%E7%9A%84%20DNS%20%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我刚刚安装了两台 Ubuntu 14.04LTS 服务器。第一台我安装了 bind9 和 isc-dhcp-server。第二台保留原样以使用 DHCP。我使用 VMware fusion 创建了一个新的专用网络,以防止 DHCP 服务器进入我的网络的其余部分,并将两台机器连接到该网络。这个专用网络是仅主机网络,不允许主机连接到网络或让 VMware 分配地址。没有互联网连接或任何其他网络连接。只有两个独立的虚拟机。
正向和反向 DNS 均解析。DHCP 成功为客户端服务器添加正向和反向记录。第二台服务器从 DHCP 服务器获取除 DNS 服务器要使用的信息之外的所有正确信息。无论我在域名服务器中输入什么,客户端服务器始终会获取 127.0.1.1。
我确实觉得 127.0.1.1 是由 dhcp 服务器发送的,不会被客户端服务器上的任何东西覆盖,因为该值显示在 /var/lib/dhcp/dhclient.eth0.leases 中。我觉得如果它被客户端服务器上的某些东西覆盖,它会在该文件中显示正确的值,但我可能是错的。
服务器配置
/etc/dhcp/dhcpd.conf
root@srv1:~# cat /etc/dhcp/dhcpd.conf
ddns-update-style interim;
ddns-domainname "example.net.";
ddns-rev-domainname "in-addr.arpa.";
log-facility local7;
subnet 172.16.163.0 netmask 255.255.255.0 {
range 172.16.163.10 172.16.163.20;
option domain-name-servers 172.16.163.1;
option domain-name "example.net";
option routers 172.16.163.1;
option broadcast-address 172.16.163.225;
default-lease-time 600;
max-lease-time 7200;
}
key DHCP_UPDATER {
algorithm HMAC-MD5.SIG-ALG.REG.INT;
secret "xxxxxxxxxxxxxxxxxx==";
};
zone example.net. {
primary 127.0.0.1;
key DHCP_UPDATER;
}
zone 163.16.172.in-addr.arpa. {
primary 127.0.0.1;
key DHCP_UPDATER;
}
/etc/resolv.conf
root@srv1:~# cat /etc/resolv.conf
nameserver 172.16.163.1
search example.net
/etc/网络/接口
root@srv1:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 172.16.163.1
netmask 255.255.255.0
gateway 173.16.163.1
就像我说的,一切似乎都运行良好,只是第二台服务器没有获得正确的 DNS 条目。如果我手动选择正确的 DNS 服务器,它就可以正常解析。
如果我的配置看起来很简单,这只是在 VM 实验室环境中进行的测试,尚未暴露给外界。
谢谢
答案1
我不喜欢发帖后立即发布自己的答案,但当我正在获取 DHCP 客户端配置和租约文件时,我注意到大约有六个租约条目。为了创建一个干净的文件来发布在这里,我删除了该文件并重新启动。之后它获取了正确的 DNS 服务器信息。
虽然我觉得还有更多问题,但我的解决方案是删除客户端上的 /var/lib/dhcp/dhclient.eth0.leases 并重新启动。
答案2
由于无法在现实中看到任何东西,所以很难猜测。但首先我想说,因为 example.net 是子网域名中的域,然后您指定一个“从哪里”的地方通过 127.0.0.1 更新区域 example.net,我猜这就是你的问题所在。
答案3
在我的情况下,/etc/resolv.conf 中设置了 1.1.1.1,因为我有一个包含 DNS 配置行的 Wireguard 隧道。我通过在所有配置文件中搜索 DNS 服务器找到了它:
grep -RIl "1.1.1.1" /etc