nslookup 失败

nslookup 失败

我试图弄清楚为什么 nslookup 找不到本地主机名。

配置 我正在尝试设置一个权威名称服务器,从“DNS 和 BIND”运行,在 Debian 5.0 的 chroot“jail”中运行 bind9。bind 似乎启动正常,因为 syslog 中没有错误消息。hostname 报告“workshop.example.net”,hostname -f 报告 FQDN 相同。文件 /etc/hosts 包含一行:“xx.xx.xxx.xx workshop.example.net workshop”

文件 /etc/resolv.conf 可能有问题;当我重新启动时,它的域名行被设置为不合适的值。但在我将该行编辑为“domain example.net”并重新启动 bind9 后,nslookup 仍然不起作用。

NSLOOKUP 输出 nslookup 给出了默认名称服务器的服务器地址,但显示“找不到研讨会:NX 域”。

查询这里可能出了什么问题?

问题是否可能出在域名的主机和名称服务器的注册上?我不确定我是否在注册商处正确设置了这些值。但我认为,如果我正确设置了 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,我猜想这意味着解析器首先查看本地名称服务器,然后再查看其他服务器。

我不完全理解我为“workshop”获得的挖掘输出,但在提出任何问题之前,我将先查看挖掘结果。

非常感谢所有不辞辛劳研究并猜测问题的人。

答案1

查询这里可能出了什么问题?

有几件事正在对你不利。:-(

文件 /etc/resolv.conf 可能有问题;当我重新启动时,它的域名行会被设置为不合适的值。

你是如何/etc/resolv.conf被创造/填充的?

我猜想您的 IP 地址是由 DHCP 服务器分配的。作为 IP 地址分配的一部分,您的 DHCP 客户端正在使用 DHCP 服务器分配的 IP 地址进行重写。/etc/resolv.conf因此,重新启动后会出现“不适当”的值。domainnameserver

NSLOOKUP 输出 nslookup 给出了默认名称服务器的服务器地址,但显示“找不到研讨会:NX 域”。

这是因为你的默认DNS 服务器不是您的本地 DNS 服务器——它是 DHCP 服务器分配给您的 DNS 服务器之一。此“其他”DNS 服务器不知道您的域。

但是,我将该行编辑为“domain example.net”并重新启动 bind9 后,nslookup 仍然不起作用。

这是因为您需要将本地 DNS 服务器添加到 中的名称服务器列表中/etc/resolv.conf。在任何其他条目之前nameserver,添加...

nameserver 127.0.0.1

现在,当您使用时nslookup,您的本地 DNS 服务器应该是您的默认DNS 服务器 nslookup现在应该能够解析“workshop”。

更新这是 dig 的输出:命令:dig A@workshop workshop.example.net

这确认您已在本地绑定 DNS 服务器上正确配置了域。

正如您已经体验到的,您对的更改/etc/resolv.conf将在下次重新启动时被覆盖。您有两个选择:

  • 重新配置您的机器以使用静态 IP。 /etc/resolv.conf将不再被覆盖,因此您的更改将在重启后保留。

  • 重新配置您的 DHCP 客户端,以便它不会覆盖/etc/resolv.conf此主题应该会为您指明正确的方向。

答案2

bind 不会使用您的 /etc/hosts 文件。nslookup 将查询“/etc/nsswitch.conf”中列出的源。

/etc/resolv.conf 中的域名行仅用于完成不带域名的主机名,即:“nslookup workshop”。

为了进一步测试,我建议使用 dig:

dig A @server workshop.example.net

这将向 DNS 服务器“server”查询“workshop.example.net”的 A 记录。

答案3

workshop.example.com 是否在 example.com 的区域文件中?bind 不会读取您的 /etc/hosts,只会读取它的区域文件。

答案4

NSLOOKUP 输出 nslookup 给出了默认名称服务器的服务器地址,但显示“找不到研讨会:NX 域”。

nslookup 使用的默认服务器是否与您设置的服务器不同?在您引用的 dig 输出中,您专门查询了服务器“workshop”并得到了正确答案。完成相同操作的 nslookup 命令是nslookup workshop.example.net server

如果有效,那么您只需要让您的计算机使用您的服务器。/etc/resolv.conf 将是第一个执行此操作的地方。

相关内容