我试图弄清楚为什么 nslookup 找不到本地主机名。
配置我正在尝试设置权威名称服务器,从“DNS 和 BIND”工作,在 Debian 5.0 上运行 bind9,在 chroot“监狱”中。bind 似乎可以开始了,因为 syslog 中没有错误消息。主机名报告“workshop.example.net”,主机名 -f 报告 FQDN 相同。文件 /etc/hosts 包含一行:“xx.xx.xxx.xx Workshop.example.net Workshop”
文件 /etc/resolv.conf 可能有问题;当我重新启动时,它的域行设置为不适当的值。但是在我将行编辑为“domain example.net”并重新启动bind9之后,nslookup仍然不起作用。
NSLOOKUP 输出 nslookup 提供默认名称服务器的 SERVER 地址,但显示“找不到工作室:NX 域”。
QUERY 这里可能出了什么问题?
问题是否可能与域的主机和名称服务器的注册有关?我不确定我是否在注册商处正确设置了这些值。但我认为,如果我正确设置了 bind 以及各种 host 和 resolv.conf 文件,nslookup 应该找到本地主机的地址。
更新 这是 dig 的输出: 命令:dig A @workshop Workshop.example.net
输出:
; <<>> DiG 9.5.1-P2 <<>> A @workshop workshop.example.net
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11327
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;workshop.example.net. IN A
;; ANSWER SECTION:
workshop.example.net. 3600 IN A 72.14.190.80
;; AUTHORITY SECTION:
example.net. 3600 IN NS workshop.example.net.
;; Query time: 0 msec
;; SERVER: 72.14.190.80#53(72.14.190.80)
;; WHEN: Tue Jul 7 00:25:58 2009
;; MSG SIZE rcvd: 82
我不知道我在这里寻找什么,但 ANSWER 部分中的 IP 地址是我所期望的。
更新 - 2 好的,这似乎是固定的。
resolve.conf 文件现在如下所示:
domain example.net # This was domain members.linode.net
#search members.linode.com # Previously, not commented out
nameserver 127.0.0.1 # This line added
nameserver 72.14.179.5
nameserver 72.14.188.5
这反映了非工作状态的三个变化:1)域以前是 members.linode.com - 我已将其更改为我的域名,我想这有助于通过将 'example.net' 附加到 'workshop '。2)我已经注释掉了搜索行,我猜这是将解析器发送到 members.linode.com 域以查找“workshop”。3) 我添加了名称服务器 127.0.0.1,我猜这意味着解析器先查看本地名称服务器,然后再查看其他名称服务器。
我不完全理解我为“研讨会”获得的 dig 输出,但在我提出任何问题之前,我会先看看 dig。
非常感谢所有不厌其烦地查看并猜测问题的人。
有几件事情对你不利。:-(
你是如何
/etc/resolv.conf
被创建/填充的?我的猜测是您的 IP 地址是由 DHCP 服务器分配的。作为 IP 地址分配的一部分,您的 DHCP 客户端正在重写
/etc/resolv.conf
DHCP服务器domain
并nameserver
分配。因此,重新启动后的“不适当”值。这是因为您的默认DNS 服务器不是您的本地 DNS 服务器——它是 DHCP 服务器分配给您的 DNS 服务器之一。这个“其他”DNS 服务器不知道您的域。
那是因为您需要将本地 DNS 服务器添加到
/etc/resolv.conf
. 在任何其他nameserver
条目之前,添加...现在,当您使用 时
nslookup
,您的本地 DNS 服务器应该是您的默认DNS 服务器。nslookup
现在应该可以解决“研讨会”了。这确认您已在本地绑定 DNS 服务器上正确配置了域。
正如您已经体验过的那样,您对 的更改
/etc/resolv.conf
将在您下次重新启动时被覆盖。你有两个选择:重新配置您的机器以使用静态 IP。
/etc/resolv.conf
不会再被覆盖,因此您的更改将在重新启动后保留。重新配置您的 DHCP 客户端,使其不会覆盖
/etc/resolv.conf
。 该线程应该为您指明正确的方向。bind 不会使用您的 /etc/hosts 文件。nslookup 将查询“/etc/nsswitch.conf”中列出的源。
/etc/resolv.conf 中的域行仅用于完成没有域的主机名,即:“nslookup Workshop”。
为了进一步测试,我建议使用 dig:
这将在 dns 服务器“server”中查询“workshop.example.net”的 A 记录。
是否在 example.com 的 zonefile 中的 Workshop.example.com?bind 不会读取您的 /etc/hosts,只会读取区域文件。
您可能希望将 nslookup 设置为使用调试模式。既然你已经挖掘了,我假设这里有一个类似 linux 的服务器。
输出可能会为您提供更多信息。"set debug2" 在某些平台上可以提供更多信息(例如,在 WinXP 上,它会告诉您返回结果的 TTL 值,方便!)
nslookup 使用的默认服务器与您设置的服务器是否不同?在您引用的 dig 输出中,您专门查询了服务器“workshop”并得到了正确答案。完成相同操作的 nslookup 命令是
nslookup workshop.example.net server
.如果可行,那么您只需要让您的计算机使用您的服务器。/etc/resolv.conf 将是第一个这样做的地方。