我在设置新域名时遇到了麻烦,不知道我遗漏了什么。这是一个封闭网络中的域名,因此只有一个 DNS 服务器,我正在该服务器上测试它。
我已完成以下设置(我使用 bind9):
/etc/bind/named.conf:
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
/etc/bind/named.conf.选项:
options {
directory "/var/cache/bind";
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
(顺便问一下,那个目录是什么?)
/etc/bind/named.conf.local:
zone "mydomain.com" {
type master;
file "mydomain.com.db";
};
zone "160.16.172.in-addr.arpa" {
type master;
file "rev.160.16.172.in-addr.arpa";
};
/etc/bind/mydomain.com.db:
$TTL 3D
@ IN SOA ns.mydomain.com. admin.mydomain.com. (
201007121
28800
3600
604800
38400
);
@ IN NS ns1
ns1 IN A 172.16.160.67
sonic.mydomain.com IN A 172.16.160.67
TXT "Network Gateway"
named-checkzone 表示一切正常。
反向 DNS 似乎也有效:
root@sonic:/etc/bind# dig -x 172.16.160.67
; <<>> DiG 9.7.0-P1 <<>> -x 172.16.160.67
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38189
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;67.160.16.172.in-addr.arpa. IN PTR
;; ANSWER SECTION:
67.160.16.172.in-addr.arpa. 259200 IN PTR redmine.mydomain.com.
67.160.16.172.in-addr.arpa. 259200 IN PTR gw.mydomain.com.
;; AUTHORITY SECTION:
160.16.172.in-addr.arpa. 259200 IN NS ns.mydomain.com.
;; Query time: 0 msec
;; SERVER: 172.16.160.67#53(172.16.160.67)
;; WHEN: Tue Jul 13 08:46:35 2010
;; MSG SIZE rcvd: 108
(我在尝试解决此问题时将反向 DNS 文件中的几个额外的域从区域文件中删除。)
但找不到域名:
root@sonic:/etc/bind# dig mydomain.com
; <<>> DiG 9.7.0-P1 <<>> mydomain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 45088
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;mydomain.com. IN A
;; Query time: 0 msec
;; SERVER: 172.16.160.67#53(172.16.160.67)
;; WHEN: Tue Jul 13 08:49:27 2010
;; MSG SIZE rcvd: 26
我已经定义 /etc/resolv.conf 仅包含该服务器的地址作为名称服务器。
我猜我遗漏了一些在解释如何设置 DNS 服务器的文档中没有明确说明的内容。
答案1
将区域文件保存到 /var/named 而不是 /etc/bind,重新启动 BIND 并再次尝试挖掘。
答案2
我最终找到了问题所在。由于某种原因,如果我没有将绝对路径设置为 named.conf.local,bind 就找不到区域定义文件。我不知道默认路径应该是什么,但看起来它不是 /etc/bind 或 /var/named。