我正在尝试创建一个 DNS 服务器来为“example.com”的区域提供副本。
前言:
当前设置包括:
- Ubuntu 11.10
- Bind9
- 阿帕奇 2
我已经在注册商级别创建了 Glue 记录,类似于:
- ns1.example.com A xxxx
- ns2.example.com A xxxx
UFW 对端口 53 有一个例外。
问题
安装 Bind9 后,我已配置 named.conf.local、named.conf.options(使用 Google DNS 作为转发器)并为我的域创建了一个区域文件 (db.example.com)。
通过 IntoDNS 测试我的配置后,似乎没有出现任何 A 记录,并且我收到一系列错误,包括:
错误:您的一个或多个名称服务器没有响应:没有响应的名称服务器是:xxxx
上述错误似乎是一个重复出现的问题,甚至通过网络工具提供的 tracert 也可以发现:
DNS 服务器返回错误:名称服务器失败
请求解决方案
那么,我做错了什么?为什么我提供的名称服务器无法访问?
我已遵循无数指南但无济于事,非常感谢任何建议、资源或意见。
答案1
您能否证明您的命名实例正在监听外部接口,就像这样;
[root@someserver ~]# netstat -lnp | grep ":53 "
tcp 0 0 123.123.123.213:53 0.0.0.0:* LISTEN 27989/named
udp 0 0 123.123.123.123:53 0.0.0.0:* 27989/named
您还可以使用 dig(来自 bind-utils 包)查询本地名称服务器;
# dig @localhost example.com
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5 <<>> @localhost example.com
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35676
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 172800 IN A 192.0.43.10
;; AUTHORITY SECTION:
example.com. 172800 IN NS b.iana-servers.net.
example.com. 172800 IN NS a.iana-servers.net.
;; Query time: 17 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat May 26 03:45:20 2012
;; MSG SIZE rcvd: 93
(我不熟悉 UFW)但是文档表明这样的操作应该会转储你正在运行的防火墙;
# sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
To Action From
-- ------ ----
22 ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
答案2
假设服务器上端口 53 的 tcp/udp 连接没有被阻止...
默认的 BIND named.conf 是为了让 DNS “作为仅缓存的名称服务器(仅作为本地主机 DNS 解析器)”工作
要将其转变为公共 DNS 服务器,您可以根据需要应用其中一些:
- 在任何 IP 上列出,默认情况下它只监听本地主机
- 允许任何查询
- 递归无,传输无
。
...
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
recursion no;
allow-transfer { none; };
dnssec-enable yes;
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
...
include "/etc/named/named.conf.local";