我在 Debian 11 服务器 (BIND 9.16.33-Debian) 上为我公司的 LAN 设置了一个 DNS 服务,其中包含以下(转发)区域文件(mycomp.com
当然不是真名):
# cat forward.mycomp.com.db
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns1.mycomp.com. root.ns1.mycomp.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
;@ IN NS localhost.
;@ IN A 127.0.0.1
;@ IN AAAA ::1
@ IN NS ns1.mycomp.com.
ns1 IN A 192.168.50.9
www IN A 77.66.11.123
bonsai IN A 192.168.50.149
...
所有 PC 都指向内部 DNS:
# cat /etc/resolv.conf
# Generated by NetworkManager
search mycom.com
nameserver 192.168.50.9
现在的问题是,公司网站也被称为mycomp.com
- 我试图包含www
在中forward.mycomp.com.db
,并且它有效,因为它解析为正确的地址,但www.mycomp.com
只是 的别名mycomp.com
,所以我仍然无法访问该网站从局域网内部。从我的搜索中我可以看出我的方向是正确的,但我认为我需要将我的浏览器指向mycomp.com
. 但是mycomp.com
,显然,包含在上面的文件中是行不通的;我该如何解决?
在文件中包含“mycomp.com”确实有效,但必须遵循区域文件的语法规则。该条目需要命名
mycomp.com.
(尾随点很重要)或@
(如您的 SOA/NS 记录)。就像您的“www”条目会自动附加区域名称一样,名为“mycomp.com”的条目也会发生同样的情况,它会扩展为“mycomp.com.mycomp.com”。在 DNS 中:
为避免这种情况,条目名称必须已经有一个尾随点:
您还可以使用
@
快捷方式指定区域根目录——您的 SOA 和 NS 记录已经有了(事实上,您甚至有一个用于 A/AAAA 记录的注释掉的示例):同样的自动后缀也适用于值,所以写就足够了
NS ns1
——服务器会自动将其扩展为“ns1.mycomp.com”。以及。在SOA记录之后,你应该这样写:
@
在最左边的列是指“区域顶部”,即mycomp.com
.注意不同的记录类型:虽然顶级的NS记录
mycomp.com
需要指向 DNS 服务器,但同样的A 记录可以指向 WWW 服务器,MX 记录指向 SMTP 服务器。由于 NS 记录指向一个名称而不是 IP 地址,名称服务器不必在区域根目录中拥有自己的 A 记录。CNAME记录定义
www.mycomp.com
为.mycomp.com