![服务器本身没有 FQDN 的 DNS/Bind9 名称解析失败,但客户端正常](https://linux22.com/image/998345/%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9C%AC%E8%BA%AB%E6%B2%A1%E6%9C%89%20FQDN%20%E7%9A%84%20DNS%2FBind9%20%E5%90%8D%E7%A7%B0%E8%A7%A3%E6%9E%90%E5%A4%B1%E8%B4%A5%EF%BC%8C%E4%BD%86%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%AD%A3%E5%B8%B8.png)
我在一台 16.04 服务器上设置了 bind9,并设置了域,可以使用 windows 客户端和 ubuntu 16.04 桌面客户端对其进行测试。这是根据如何使用主机名完成完整的 BIND9 DNS 服务器配置?:
domain is "test.lan"
srv 192.168.0.1, IP configured via /etc/network/interfaces. Hosts
file contains domain test.lan and srv entry.
linuxpc, 192.168.0.2, IP configured via desktop: static IP with DNS and search
domain magrathea.lan. Hosts file contains domain test.lan
and own and srv entries.
winpc, 192.168.0.3, IP configured via desktop: static IP with DNS and domain
suffix for this connection: magrathea.lan
我在客户身上看到的情况:
linuxpc$ ping winpc
PING winpc.test.lan (192.168.0.3) 56(84) bytes of data
64 bytes from winpc.test.lan (192.168.0.3): icmp_seq=1 ttl=...
linuxpc$ ping winpc.test.lan
PING winpc.test.lan (192.168.0.3) 56(84) bytes of data
64 bytes from winpc.test.lan (192.168.0.3): icmp_seq=1 ttl=...
linuxpc$ ping winpc.test
ping: unknown host winpc.test
C:>ping linuxpc
Pinging linuxpc.test.lan [192.168.0.2] with 32 bytes of data:
Reply from 192.168.0.2: bytes =32 time>1ms TTL=64
C:>ping linuxpc.test.lan
Pinging linuxpc.test.lan [192.168.0.2] with 32 bytes of data:
Reply from 192.168.0.2: bytes =32 time>1ms TTL=64
C:>ping linuxpc.test
Ping request could not find host linuxpc.test. Please check the name...
Reply from 192.168.0.2: bytes =32 time>1ms TTL=64
在服务器上(以winpc作为ping目标):
serv$ ping linuxpc
ping: unknwon host linuxpc
serv$ ping linuxpc.test.lan
PING linuxpc.test.lan (192.168.0.2) 56(84) bytes of data
64 bytes from linuxpc.test.lan (192.168.0.2): icmp_seq=1 ttl=...
serv$ ping linuxpc,test
ping: unknwon host linuxpc.test
serv
我确实尝试将该行 添加到服务器的接口文件dns-search test.lan
,但这并没有改变上述结果。
问题
- 1)为什么服务器 ping 只能使用完全限定域名?
- 2) 为什么没有“.lan”的情况下两台 PC 都无法解析“.test”?我该怎么办?
- 3) 我可以使用“test”作为内联网域名吗?与“test.lan”相比,它有哪些缺点?
感谢您的帮助
答案1
与此同时,我确实找到了问题所在以及如何解决它。我先回答最后一个问题:
3) 我可以使用“test”作为内部网域吗?与“test.lan”相比,它有哪些缺点?答案:可以。网络设置适用于全套服务 (LAMP) 和多个名为“test”的客户端。不知道为什么要添加额外的“.lan”。也许有人知道。
1) 为什么服务器 ping 只能使用完全限定域名? 答案:因为这个问题确实存在
a)文件“/etc/network/interfaces”中的“dns-search”行
b) 桌面网络连接中的“搜索域”字段。它位于 /Edit/IPv4 Settings/SearchDomains。可能仅在手动 IP 定义时可见。
使用其中任意一个。我在这个网站或 wiki 上找到的示例中从未真正解释过这一点。可能是因为它被认为太过琐碎。这意味着对于该域中的所有地址,完全限定域名 (FQDN) 的域部分被视为可选。可以省略它。如果没有该语句,bind9 配置中只有别名,但它们对服务器自己的地址没有帮助。
服务器现在工作正常。这是我的完整接口定义文件:
sudo nano /etc/network/interfaces
auto enp2s0f1
iface enp2s0f1 inet static
address 192.168.10.10
netmask 255.255.0.0
gateway 192.168.10.1
network 192.168.0.0
broadcast 192.168.255.255
dns-nameservers 192.168.10.10
dns-search test
显然该文件适用于 C 类网络。修改 D 类网络的地址应该很容易,就像本网站上几乎所有其他示例一样。您可能会注意到奇怪的网络 ID。它是 Ubuntu 强制执行的最新标准,因此它是以这种方式自动生成的。它应该对设备上的端口位置进行编码。它解决了我从未遇到过的问题,我看不出它比“eth0”有什么好处,但再次将其设置回“eth0”似乎太麻烦了,所以我就保留了它。
2) 为什么没有“.lan”的情况下两台 PC 都无法解析“.test”?我该怎么办?我猜问题的关键在于 dns-search 参数的具体功能,但我无法进行实验,因为我的网络已经在“test”下运行,而不是“test.lan”。所以问题消失了。
希望它能对某人有所帮助。