我已经在 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
,所以我仍然无法访问该网站从 LAN 内部。从我的搜索中我可以看出我走在正确的轨道上,但我认为我需要将我的浏览器指向mycomp.com
.然而,显然,包含mycomp.com
在上面的文件中是行不通的;我该如何解决?
答案1
在文件中包含“mycomp.com”做工作,但必须遵循区域文件的语法规则。该条目需要命名mycomp.com.
(尾随点很重要)或@
(如您的 SOA/NS 记录)。
就像您的“www”条目会自动附加区域名称一样,名为“mycomp.com”的条目也会发生同样的情况,该条目会扩展为“mycomp.com.mycomp.com”。在 DNS 中:
www A 77.66.11.123 ; becomes "www.mycomp.com."
sub.www A 77.66.11.123 ; becomes "sub.www.mycomp.com."
mycomp.com A 77.66.11.123 ; becomes "mycomp.com.mycomp.com."
为了避免这种情况,条目名称必须已经有一个尾随点:
mycomp.com. A 77.66.11.123 ; remains "mycomp.com."
您还可以使用@
快捷方式指定区域根 – 您的 SOA 和 NS 记录已经拥有该区域根(事实上您甚至还有一个注释掉的例子用于 A/AAAA 记录):
@ NS ns1.mycomp.com.
@ A 77.66.11.123
相同的自动后缀也应用于值,因此编写就足够了NS ns1
- 服务器会自动将其扩展为“ns1.mycomp.com”。以及。
@ NS ns1
ns1 A 192.168.50.9
答案2
在 SOA 记录之后,您应该编写如下内容:
@ IN NS ns1.mycomp.com. # the final dot is NOT optional here.
@ IN A 77.66.11.123
@ IN AAAA <mycomp.com web server IPv6 address>
@ IN MX 1 smtp.mycomp.com. # incoming mail server. Final dot needed.
ns1 IN A 192.168.50.9
ns1 IN AAAA <DNS server IPv6 address>
bonsai IN A 192.168.50.149
www IN CNAME mycomp.com.
@
最左边的列指的是“区域顶部”,即mycomp.com
。
请注意不同的记录类型:尽管国民服役记录顶层的mycomp.com
需要指向DNS服务器,一个记录同样可以指向 WWW 服务器,并且MX记录到 SMTP 服务器。由于 NS 记录指向姓名名称服务器不必在区域根目录中拥有自己的 A 记录,而不是 IP 地址。
这CNAME记录定义www.mycomp.com
为 的别名mycomp.com
。