我试图弄清楚为什么 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
因此,重新启动后会出现“不适当”的值。domain
nameserver
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 将是第一个执行此操作的地方。