![为什么同一网络中的两个 Ubuntu 系统在 DNS 解析上表现不同?](https://linux22.com/image/3777/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%90%8C%E4%B8%80%E7%BD%91%E7%BB%9C%E4%B8%AD%E7%9A%84%E4%B8%A4%E4%B8%AA%20Ubuntu%20%E7%B3%BB%E7%BB%9F%E5%9C%A8%20DNS%20%E8%A7%A3%E6%9E%90%E4%B8%8A%E8%A1%A8%E7%8E%B0%E4%B8%8D%E5%90%8C%EF%BC%9F.png)
我有两个系统,都运行 Ubuntu 12.04,它们位于同一网络内(通过集线器连接,没有路由逻辑)。两个系统的配置非常相似,但并不完全相同。特别是,该命令route
在两个系统上给出相同的结果。
在网络中,Windows 服务器按名称运行winshared
。一台Linux系统工作解析IP:
> nslookup winshared
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: winshared.somepc.xx
Address: 172.16.0.110
而另一个 Linux 系统则失败
> nslookup winshared
;; connection timed out; no servers could be reached
为什么我发现两个系统上的 DNS 解析存在差异?以及如何修复它?
附加说明:
两个系统上的内容
/etc/resolv.conf
相同,内容如下:nameserver 127.0.0.1
答案1
这个问题的答案要从 中的条目开始/etc/resolv.conf
。内容是相同的,并且给定的IP地址127.0.0.1
指的是系统本身。
下一个提示来自 的输出nslookup
: 它显示, 的地址winshared
正在由侦听端口 53 的进程解析。sudo netstat -nlp
在工作系统上使用会显示一个正在dnsmasq
侦听此端口的进程。然而,另一个系统有第二个进程named
正在侦听该端口。named
是 DNS 服务器,因此可能导致无法解析名称的混乱。
正如所解释的可以通过卸载来停止该服务bind9
,之后故障系统上的DNS服务就被停止,并且两个系统都只有一个进程dnsmasq
在端口53上运行,该进程是DNS请求的轻量级转发服务。
winshared
之后,可以在两个系统上解析该名称。
答案2
通常,服务器的行为不同,因为它们的配置不同;)
DNS 服务器由 DHCP 设置或在/etc/resolv.conf
文件中手动配置。
某些主机名/IP 地址的静态条目可能存在于/etc/hosts
.
可能/etc/nsswitch.conf
会指示解析器对本地文件/NIS/LDAP 或 DNS 等源给予不同的优先级
答案3
我想文件 /etc/resolv.conf 是由包 resolvconf 生成的。
您使用静态还是动态网络配置?
查看 /etc/resolvconf/ 和 /etc/networks/interfaces 中的不同文件。
或者,如果已安装,请使用网络管理器。