我目前正在尝试首次构建自己的家庭实验室,作为新手,这有点令人困惑。在过去的几天里,我一直在配置内部 DNS 服务器,设置完成后,我运行了以下测试:
首先,我尝试检查我的 DNS 是否能解析,并将我引导至我的 Web 服务器的 IP 地址(以 root 身份):
nslookup www.wallynet.local
输出:
Server: 192.168.1.3
Address: 192.168.1.3#53
Name: www.wallynet.local
Address: 192.168.1.2
接下来,我尝试查看我的 DNS 是否能够反向解析,并将我引导到我的 Web 服务器(以 root 身份):
nslookup -x www.wallynet.local
输出:
*** Invalid option: x
Server: 192.168.1.3
Address: 192.168.1.3#53
Name: www.wallynet.local
Address: 192.168.1.2
据我所知,我获得了正确的 IP 地址。
但是,根据我在设置 DNS 时一直关注的来源,我应该以 root 身份在我的正向区域文件上运行以下区域检查命令(我得到了应有的结果)来检查我的区域文件:
named-checkzone wallynet.local /var/named/fwd.wallynet.local
输出:
zone wallynet.local/IN: loaded serial 2011071001
OK
但是,如果我对反向区域文件运行相同的命令(会出现错误):
named-checkzone wallynet.local /var/named/reverse.wallynet.local
输出:
zone wallynet.local/IN: NS 'primary.wallynet.local' has no address records (A or AAAA)
zone wallynet.local/IN: not loaded due to errors.
这是我当前的反向区域文件(请忽略许多注释掉的行。我只是从我为此任务所参考的来源粘贴它):
$TTL 86400
@ IN SOA primary.wallynet.local. root.wallynet.local. (
2011071001 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
;NAME SERVER INFORMATION
@ IN NS primary.wallynet.local.
;RECORD IP ADDRESS TO HOSTNAME
3 IN PTR primary.wallynet.local.
;WHAT IS BELOW IS COMMENTED OUT FOR NOW (CAME FROM A RESOURCE ONLINE)
;@ IN NS masterdns.unixmen.local.
;@ IN NS secondarydns.unixmen.local.
;@ IN A 192.168.1.101
;@ IN A 192.168.1.102
;@ IN A 192.168.1.103
;masterdns IN A 192.168.1.101
;secondarydns IN A 192.168.1.102
;client IN A 192.168.1.103
为什么我没有收到此命令的错误,如果我的nslookup命令给了我正确的结果吗?
更新:这是我当前的转发文件:
$TTL 86400
@ IN SOA primary.wallynet.local. root.wallynet.local. (
2011071001 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
;NAME SERVER INFORMATION
@ IN NS primary.wallynet.local.
;RECORD HOSTNAME TO IP ADDRESS
primary IN A 192.168.1.3
@ IN A 192.168.1.3
;WHAT IS BELOW IS COMMENTED OUT FOR NOW (CAME FROM A RESOURCE ONLINE)
;@ IN NS masterdns.unixmen.local.
;@ IN NS secondarydns.unixmen.local.
;@ IN A 192.168.1.101
;@ IN A 192.168.1.102
;@ IN A 192.168.1.103
;masterdns IN A 192.168.1.101
;secondarydns IN A 192.168.1.102
;client IN A 192.168.1.103
;HERE I AM DEFINING A CNAME
www IN A 192.168.1.2
更新:这是我在 named.conf 中添加的区域配置:
zone "wallynet.local" IN {
type master;
file "/var/named/fwd.wallynet.local";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "/var/named/reverse.wallynet.local";
allow-update { none; };
};
答案1
首先:缺少一个换行符:
$TTL 86400 @ IN SOA primary.wallynet.local. root.wallynet.local. (
2011071001 ;Serial
应该:
$TTL 86400
@ IN SOA primary.wallynet.local. root.wallynet.local. (
2011071001 ;Serial
第二:为 IP 地址(而不是域名)创建反向 DNS 记录和区域,并使用 IN-ADDR.ARPA
对于 192.168.1.0/24 范围,您的named.conf
区域定义条目将如下所示:
zone "1.168.192.in-addr.arpa" {
type primary;
file "/var/named/reverse.wallynet.local";
};
验证反向区域语法的正确命令行是:
named-checkzone 1.168.192.in-addr.arpa /var/named/reverse.wallynet.local
您的命令nslookup -x www.wallynet.local
会产生错误,因为-x
据我所知,它根本不是一个有效的选项。
您可能会与其他/更好的 DNS 测试工具混淆,dig
该工具使用-x
选项进行反向查找。但反向查找是针对 IP 地址而不是主机名进行的,因此您可以使用:
dig -x 192.168.1.102
以下情况也是如此nslookup
:
nslookup 192.168.1.102
答案2
它不知道是什么primary.wallynet.local
。可能,向前区域根本不包含这样的名称?不幸的是,我们从未看到您的前向区域,因此无法检查。我只确信存在www A 192.168.1.2
记录。此外,似乎主区域名称服务器设置为其他名称;否则它也不会加载。或者,也许 DNS 服务器机器本身的 DNS 解析已失效。我们也不知道。
更新
事实证明,您所有的“反向”检查都是错误的。nslookup -x
没有显示任何新内容,因为它不知道“x”是什么,所以这并不表明它“给出了正确的结果”;named-checkzone
第二次调用时使用了错误的区域名称。请按照我在评论中要求的那样做:不要(仅)显示您的解释,而要显示原始证据 — 区域和配置片段!
附言
顺便一提,避免使用那里的网络在生产中:192.168.0.0/24、192.168.1.0/24、192.168.88.0/24,因为这些是许多设备的默认设置(Mikrotik 的最后一个);当你开始构建 VPN 时,你会感谢我的。养成改变它们的习惯从一开始就,实验室是养成这种习惯的绝佳机会。