我正在尝试在我的 LAN 上设置一个 dns 服务器,因为我的路由器不支持 nat 反射,并且我有需要在 apache 上运行的域(无法通过 IP 地址访问)的虚拟主机。我不太熟悉区域文件,但我认为我走在正确的轨道上。我的域名是 tenex.us,我想在我的 lan 上使用 tenex.local(在 apache 中添加适当的 vhost)访问它。dns 服务器正在运行,因为它解析并缓存其他地址,包括 tenex.us,但我得到
服务器找不到 tenex.local:SERVFAIL
我有如下的named.conf
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
zone "tenex.local" IN {
// this is the authoritative server for
// tenex.us info
type master;
file "db.tenex";
};
和 db.tenex 如下
$TTL 86400
@ IN SOA ns1.tenex.local. craig.tenex.local. (
2014120705
28800
7200
864000
86400
)
IN NS ns1
IN NS ns2
@ IN A 10.1.1.2
ns1 IN A 10.1.1.2
ns2 IN A 10.1.1.2
www IN CNAME @
dev IN CNAME @
ftp IN CNAME @
和 named.conf.options 如下(其他文件是自 2014 年 12 月 6 日起的默认安装文件)
acl clients {
10.1.1.0/24;
10.1.2.0/24;
localhost;
localnets;
};
options {
directory "/var/cache/bind";
recursion yes;
allow-query { clients; };
forwarders {
8.8.8.8;
8.8.4.4;
};
forward only;
dnssec-validation yes;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
我不是 DNS 专家,但我认为这是它的工作原理。如果我错了,请纠正我,这将对我有很大帮助。
- 我向服务器查询 tenex.local,
- 它看到 tenex.local 列出了一个区域,然后将该条目的区域文件内容返回给查询它的设备。
- 设备看到权威名称服务器是 ns1.tenex.local,并且当前地址与区域文件中 ns1.tenex.local 的 A 记录的地址(10.1.1.2)匹配,因此它(应该)解析为 www.tenex.local/tenex.local/dev.tenex.local/etc 的 A 记录。
答案1
我认为,为了编写,ns1 IN A ...
您ns1.tenex.local. IN A ...
必须$ORIGIN tenex.local.
在区域文件中定义。符号也应如此@
。
也可以看看BIND - 由于错误,区域未加载