我在 ubuntu 服务器中安装了 DNS 服务器(bind9),并且可以使用 nslooup 和 dig 进行从主机名到 IP 地址的名称解析;但是当我尝试进行反向查找时出现错误
nslookup 192.168.137.5
** server can't find 5.137.168.192.in-addr.arpa: NXDOMAIN
该IP地址是本地服务器的IP地址,也是安装了bind9的名称服务器。如果我做正向查找就可以了
nslookup example.com
Server: 192.168.137.5
Address: 192.168.137.5#53
Name: example.com
Address: 192.168.137.5
Name: example.com
Address: ::1
这是我的配置文件总共3个:named.config.local,forward.example.com,reverse.example.comnamed.conf.local
zone "example.com" IN {
type master;
file "/etc/bind/forward.example.com";
};
zone "137.168.192.in-addr.arpa" IN {
type master;
file "/etc/bind/reverse.example.com";
};
转发.example.com
$TTL 604800
@ IN SOA example.com. root.example.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS home-server.example.com.
@ IN A 192.168.137.5
@ IN AAAA ::1
home-server IN A 192.168.137.5
wintop IN A 192.168.137.1
反向.example.com
$TTL 604800
@ IN SOA example.com. root.example.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS home-server.
@ IN PTR example.com.
@ IN AAAA ::1
home-server IN A 192.168.137.5
host IN A 192.168.137.5
wintop IN A 192.168.137.1
10 IN PTR home-server.example.com.
11 IN PTR wintop.example.com.
答案1
根据您的forward.example.com
区域文件,您的reverse.example.com
区域文件应如下所示:
$TTL 604800
$ORIGIN 137.168.192.in-addr.arpa.
@ IN SOA example.com. root.example.com. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS example.com.
5 IN PTR example.com.
1 IN PTR wintop.example.com.
反向区域中不应有A
或AAAA
记录,除非作为子区域代表团中的粘合记录。
您原来的反向区域文件坚持认为 IP 地址 192.168.137.10 为home-server.example.com
,192.168.137.11 为wintop.example.com
,这与您的正向区域不一致。
声称 IPv6 本地主机地址::1
是愚蠢的。在反向区域它根本没有任何作用,在前进区域它就是错误的。当客户端询问“哪里是home-server.example.com
?”时,您的转发区域将得到服务器答案:“对于 IPv4,它是 192.168.137.5;对于 IPv6,它是 ::1。”然后客户会想:“哈。我像 Windows Vista 以来的所有现代操作系统一样都支持 IPv6,所以这个名字只是一种指向……我的奇特方式?太好了,我不需要做任何事情。”毕竟外网连接就可以了!” ...除非请求实际上来自home-server.example.com
,否则这可能不是您想要发生的情况。
请记住,DNS 服务器只是将记录传递给客户端,根本不进行任何解释;客户是实际使用该信息的人。
您可能还需要考虑哪一个是典范192.168.137.5 的名称:是它home-server.example.com
还是只是example.com
?您可能必须将其中一个名称设为另一个名称的别名(CNAME 记录);否则,您可能无法成功验证两个名称的 SSL/TLS 证书。
所以你的前区也许应该是这样的:
$TTL 604800
$ORIGIN example.com.
@ IN SOA example.com. root.example.com. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS example.com.
@ IN A 192.168.137.5
home-server IN CNAME example.com.
wintop IN A 192.168.137.1