DNS 服务器无法解析本地主机名

DNS 服务器无法解析本地主机名

我正在尝试在我的 RHEL6.4 vm 上设置一个 Apache 服务器,但dnsmasq由于某种原因无法识别主机名:

nslookup rhel64.example.com
Server:         xxx.xxx.xx.1
Address:        xxx.xxx.xx.1#53

server can't find rhel64.exmple.com: NXDOMAIN

/etc/hosts

xxx.x.x.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

/etc/resolv.conf

; generated by /sbin/dhclient-script
search novalocal example.com
nameserver xxx.xxx.xx.1

如果您需要查看任何内容来解决我的问题,请告诉我。我无法使用其他 DNS 服务器。

寻找一种dnsmasq无需更改 DNS 服务器即可解析主机名的方法。

答案1

我希望你的服务器的 IP 地址是固定的。你的服务器/etc/hosts应该包含

127.0.0.1  localhost
127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4 
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
xxx.x.x.1  rhel64.example.com rhel64

localhost不应指向 127.0.0.1 或 ::1 以外的地址。根据/etc/hosts需要添加具有固定地址的其他主机。

对于动态地址,请确保您在 中设置了正确的域/etc/dnsmasq.conf,并确保在请求中发送了主机名。检查目录dnsmasq.leases中的文件/var/lib并尝试验证。域应像这样指定。

domain=example.com

或者,您可以在dnsmasq.conf文件或中提供固定地址/etc/ethers。 类似这样的行会将 mac 地址映射aa.bb.cc.dd.ee.ff到。 DNS 名称将按上述方式192.0.2.1指定。/etc/hosts

 aa.bb.cc.dd.ee.ff     192.0.2.1

编辑:我将使用的诊断包括。

在运行 dnsmasq 的主机上运行 getent。

 getent hosts rhel64

这应该会返回您在 hosts 文件中输入的值或 DNS 返回的值。如果可行,请尝试使用命令host查找地址。nslookup如果 hosts 不可用,请使用。尝试这些命令。(看来您的dnsmasqapache服务器位于同一主机上。

 hosts rhel64.
 hosts rhel64.example.com.
 hosts rhel64.  localhost
 hosts rhel64.example.com.  localhost
 hosts rhel64.  rhel64. 
 hosts rhel64.example.com.  rhel64.
 hosts rhel64.  rhel64.example.com.
 hosts rhel64.example.com.  rhel64.example.com.

哪个命令失败以及失败的原因应该可以帮助您确定问题所在。您可能还想确保 dnsmasq 正在监听所有 IP 地址。

诊断问题时: 的请求rhel64.针对不带域名的主机名, 的请求rhel64.example.com.针对完全限定名称。名称上的最后一个点告诉解析器不要尝试搜索列表中的域。如果指定了第二个主机名,它将覆盖 中列出的名称服务器/etc/resolv.conf。在本例中,我使用了 中的服务器/etc/resolv.conf、本地主机地址(127.0.0.1 或 ::1)、从 DNS 查找的主机名地址以及从名称服务器查找的完全限定名称地址。如果初始查找名称失败,则最后两个服务器将不起作用。

 netstat -an | grep :53

编辑:重读您的帖子时,我注意到您是从 DHCP 获取地址的,有关设置固定 IP 地址的说明适用于 Unix 样式的 DHCP 服务器。它们应该应用于 dchp 服务器,该服务器可能是 xxx.xx1 处的路由器,这不是您的服务器地址。您应该能够使用命令ifconfig或较新的命令获取当前 IP 地址ip addr。该地址应该与 /etc/hosts 文件中的主机名相匹配。

如果您无法访问路由器,可以尝试让 DHCP 为您更新 DNS 服务。将以下条目添加到我们的 DHCP 配置文件中: option fqdn.fqdn rhel64.example.com; 或 option fqdn.fqdn rhel64;

添加条目后,您需要重新启动该dhclient过程。尝试命令

sudo dhclient -r
sudo dhclient

否则您将需要重新启动界面或整个网络设置。

相关内容