我按照几个教程安装自己的名称服务器,但几乎束手无策,因为我无法解析它们。请注意,出于隐私考虑,实际域和 IP 地址已更改为 example.com 和 192.168.0.1。我的 named.conf.local 文件:
zone "example.com" {
type master;
file "/var/cache/bind/example.com.db";
};
zone "0.168.192.in_addr.arpa" {
type master;
file "/var/cache/bind/192.168.0.db";
};
我的named.conf.options文件:
options {
forwarders {
192.168.0.1;
};
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
我的 resolv.conf 文件:
search example.com.
nameserver 192.168.0.1
我的转发 DNS 文件:
ORIGIN example.com.
$TTL 86400
@ IN SOA ns1.example.com. root.example.com. (
2012083101 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
3600 ) ; Negative Cache TTL
example.com. NS ns1.example.com.
example.com. NS ns2.example.com.
example.com. MX 10 mail.example.com.
@ IN A 192.168.0.1
ns1.example.com IN A 192.168.0.1
ns2.example.com IN A 192.168.0.2
mail IN A 192.168.0.1
server1 IN A 192.168.0.1
gateway IN CNAME ns1.example.com.
headoffice IN CNAME server1.example.com.
smtp IN CNAME mail.example.com.
pop IN CNAME mail.example.com.
imap IN CNAME mail.example.com.
www IN CNAME server1.example.com.
sql IN CNAME server1.example.com.
我的反向 DNS:
$ORIGIN 0.168.192.in-addr.arpa.
$TTL 86400
@ IN SOA ns1.example.com. root.example.com. (
2009013101 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
3600 ) ; Negative Cache TTL
1 PTR mail.example.com.
1 PTR server1.example.com.
2 PTR ns1.example.com.
然而,当我重新启动 bind9 并执行以下时:
host ns1.example.com localhost
我得到:
Using domain server:
Name: localhost
Address: 127.0.0.1#53
Aliases:
Host ns1.example.com.example.com not found: 2(SERVFAIL)
同样地,对于:
host 192.168.0.1 localhost
我得到:
;; connection timed out; no servers could be reached
有人知道发生了什么吗?顺便说一句,我在这个问题中使用的域名“www.example.com”正在转发到我的 ISP 的名称服务器。这会影响我的 bind9 配置吗?我想学习如何自行设置名称服务器以供学习,所以我才经历了这么多麻烦。
答案1
这两个答案都很好.. bind 附带了一个可用于检查区域/conf 文件的工具
named-checkzone domain.com /path/to/domain.com.zone
还有
named-checkconf
检查您的配置。
答案2
将 替换_
为,-
如in-addr
。
zone "0.168.192.in_addr.arpa" {
...
};
应该
zone "0.168.192.in-addr.arpa" {
...
};
答案3
有问题的条目在这里:
ns1.example.com IN A 192.168.0.1
ns2.example.com IN A 192.168.0.2
如果您没有用句点结束这些内容,您的域名将被添加到每个内容的末尾。要使其正常工作,请将它们更改为:
ns1 IN A 192.168.0.1
ns2 IN A 192.168.0.2
您还需要进行@Zoredache 给出的更改来修复您的反向 DNS(但您直到后来才发现该问题......)
答案4
首先……启动named后,确保它仍在运行,并且没有因某种错误而退出。named是否显示在ps输出中?它向系统日志记录了什么?您是否配置了rndc?如果配置了,那么“rndc status”显示什么?当您收到SERVFAIL和“连接超时”消息(如上所述)时,您需要确保您正在与实时服务器通信。
除了 syslog 之外,它还会在其他地方记录吗?(您只向我们展示了您的 named.conf 的一个子集,所以我不确定主 named.conf 是否有声明将日志信息发送到其他地方的日志记录节。)
检查 ps 以确保 named 正在运行,并检查 syslog 以查看它在尝试启动时是否有任何抱怨。
除此之外,您打算通过配置中声明转发器的行来实现什么目的?
当您准备测试时,请使用完全限定域名(FQDN)进行测试,例如:
dig ns1.example.com. @localhost
以避免出现上述混淆的情况:
Host ns1.example.com.example.com not found: 2(SERVFAIL)
(您可以看到,由于 resolv.conf 文件中的搜索规则,“example.com”被附加到已经包含它的域名...您可以使用 FQDN 消除歧义。)