我使用 Ubuntu 14.04 Server AMI 在 AWS 上启动了一台新服务器。我打算为我们的网站构建一个公共 DNS 服务器。我们目前还有另外两台运行 CentOS 的服务器,但我被告知其中一台将关闭,因为它的硬件比较旧。至少,这也是一个了解 BIND 的好机会!
这是我在这个新的(不起作用的)DNS服务器上的当前设置:
命名的.conf.选项:
options {
directory "/var/cache/bind";
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
listen-on port 53 { any; };
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
allow-transfer { none; };
recursion no;
allow-query-cache { none; };
};
zone "test.edu" IN {
type master;
file "/var/named/testedu.db";
allow-update { none; };
};
然后,/var/named/testedu.db:
$TTL 3600
$ORIGIN test.edu.
@ IN SOA dns3.test.edu. isdept.test.edu. (
20150413 ;Serial
10800 ; Refresh after 6 hours
3600 ;Retry
604800 ;Expire
3600 ;TTL
)
;NS Records
IN NS dns3.test.edu.
;mail records
IN MX 5 mail.test.edu.
;Host A records
dns2 IN A 50.19.235.118
dns1 IN A 100.100.219.12
dns3 IN A 52.5.59.8
www IN A 100.100.219.21
test.edu. IN A 100.100.219.21
mail IN A 100.100.219.6
facultyportal IN A 100.100.219.4
因此,named-checkconf /etc/bind/named.conf.options
没有返回任何内容,因此没有错误。并named-checkzone test.edu /var/named/testedu.db
返回它已加载串行并且正常。
如果我运行:netstat -an | grep ^udp | grep 53
,我会得到:
udp 0 0 172.30.1.115:53 0.0.0.0:*
udp 0 0 127.0.0.1:53 0.0.0.0:*
udp6 0 0 :::53 :::*
这似乎是正确的——并且表明 BIND 正在运行。
但是 - 当我运行 nslookup 时,我在该服务器应该能够返回的任何记录上都得到了 SERVFAIL:
user@dns3:/var/named$ nslookup
> server localhost
Default server: localhost
Address: 127.0.0.1#53
> facultyportal.test.edu
Server: localhost
Address: 127.0.0.1#53
** server can't find facultyportal.nwcu.edu: SERVFAIL
named-checkconf -zj 的输出:
zone test.edu/IN: loaded serial 20150413
zone stead/IN: loaded serial 1
zone localhost/IN: loaded serial 2
zone 127.in-addr.arpa/IN: loaded serial 1
zone 0.in-addr.arpa/IN: loaded serial 1
zone 255.in-addr.arpa/IN: loaded serial 1
(我添加 stead 区域是为了进行测试。看来 localhost 可以从那里解析条目)
我是否遗漏了什么?谢谢!