我正在尝试在公司内部设置自己的 DNS 服务器,但无法使其工作。我安装Bind9
在 上Ubuntu 12.04
。每次尝试使用它时,我总是得到status: SERVFAIL
。这是我的一个测试示例:
; <<>> DiG 9.8.1-P1 <<>> ns.vpl.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 25725
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;ns.vpl.net. IN A
;; Query time: 1 msec
;; SERVER: 192.168.3.12#53(192.168.3.12)
;; WHEN: Mon Nov 25 12:39:13 2013
;; MSG SIZE rcvd: 28
这是我的文件:
命名的.conf.本地
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
// Load internal VPL d.o.o. forward and backward zones.
zone "vpl.net" {
type master;
file "/etc/bind/vpl-zone/db.vpl";
};
zone "192.168.3.in-addr-arpa" {
type master;
notify no;
file "etc/bind/vpl-zone/db.192";
};
数据库
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA vpl.net. jure.vpl.net. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.vpl.net.
@ IN A 192.168.3.12
@ IN AAAA ::1
; A NAME Records
ldap IN A 192.168.3.11
分贝.192
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA vpl.net. jure.vpl.net. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.vpl.net.
11 IN PTR ldap.vpl.net.
解析配置文件
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.3.12
domain vpl.net
search vpl.net
是否配置
eth0 Link encap:Ethernet HWaddr 00:0c:29:2c:94:cb
inet addr:192.168.3.12 Bcast:192.168.3.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe2c:94cb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:26142 errors:0 dropped:684 overruns:0 frame:0
TX packets:6495 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2341216 (2.3 MB) TX bytes:1168912 (1.1 MB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:152 errors:0 dropped:0 overruns:0 frame:0
TX packets:152 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:16049 (16.0 KB) TX bytes:16049 (16.0 KB)
命名的.conf.选项
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
forwarders {
8.8.8.8;
8.8.4.4;
};
//========================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
//========================================================================
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
我真的不知道我做错了什么,所以任何建议都会有帮助。
谢谢。
答案1
在这种情况下,您会收到一个,SERVFAIL
因为该区域无效。它缺少胶水记录(RFC1912常见的 DNS 操作和配置错误,第 2.3 节)。
您已指定 NS(名称服务器)资源记录:
@ IN NS ns.vpl.net.
但您没有与域关联的 A(IPv4)资源记录ns.vpl.net。 如果192.168.3.12是您的名称服务器的地址,那么您需要添加如下内容:
ns IN A 192.168.3.12
BIND 很可能就此向您发出了警告。如果此调整无法解决您的问题,请发布服务重启后 BIND 错误的内容。可能还有其他问题。
另外,我有预感你实际上并不想指定::1作为您的 AAAA (IPv6) 资源记录vpl.net。这样做会导致任何执行查找的服务器相信它(本地主机) 是 IPv6 地址vpl.net。
如果您的网络中没有部署 IPv6,则不要指定 AAAA 记录。几乎所有 IPv6 网络都是双栈的,即使不指定 AAAA 资源记录也可以正常工作。
也可以看看:
答案2
在您的选项部分您是否允许查询和递归?
允许查询 { 本地主机; 192.168.3.0/24; }
允许递归 { 本地主机; 192.168.3.0/24; }
递归是;