我在服务器上运行 dnsmasq(其 IP 是 10.10.31.22),假设它的主机名是mydns
以下 dnsmasq.conf:
domain-needed
bogus-priv
local=/argonath.mydomain.com/
interface=eth0
listen-address=127.0.0.1
no-hosts
addn-hosts=/etc/dnsmasq.hosts
expand-hosts
domain=argonath.mydomain.com
这是 dnsmasq.hosts:
10.10.31.8 mithrandir
注意,我仅将 dnsmasq 用于 DNS,而不是 DHCP。
现在我有一台 Linux 和一台 Windows 机器,它们都使用 dnsmasq 服务器作为 DNS。如果我在 Linux 机器上这样做,nslookup mithrandir
我会得到:
Server: 10.10.31.22
Address: 10.10.31.22#53
Name: mithrandir
Address: 10.10.31.8
在 Windows 上我得到了这个:
Server: UnKnown
Address: 10.10.31.22
*** UnKnown can't find mithrandir: Non-existent domain
然而nslookup mithrandir.argonath.mydomain.com
在windows系统上却可以工作:
Server: UnKnown
Address: 10.10.31.22
Name: mithrandir.argonath.jhgfs.com.au
Address: 10.10.31.8
我的第一个问题是,为什么我在 Linux 机器下看不到mydns
“服务器”?当然,我的第二个问题是为什么 Windows 机器会失败?我认为这与服务器未正确报告其名称有关。我设置错了什么?
答案1
解决了。Windows 在查询末尾添加了域后缀,因此它实际上是在请求mithrandir.companydomain.com
(这是在公司内部,所有工作站都放在 company.com 域上)。
失败之后,Windows 尝试访问 mithrandir.com,但它访问了更广泛的网络,结果显示不存在。
不确定如何解决这个问题,但至少我知道这是 Windows 工作站的问题,而不是我的 dnsmasq 配置的问题。