我正在做一个课堂项目,我想在其中模拟一个用作全球互联网 DNS 层次结构的 DNS 层次结构。结构如下:
因此,所有请求都将发送到根服务器,根服务器将返回 edu 服务器的 ip,并且该服务器将根据请求返回 kevin 或 bech 服务器的 ip。
我使用 bind 手动配置了所有服务器,如下所示:
$TTL 604800
@ IN SOA kevin.edu. root.kevin.edu. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
IN NS dns.kevin.edu.
www IN A 1.1.1.7
kgs IN A 1.1.1.8
dns IN A 1.1.1.5
我现在的问题是我想递归地解决这个问题,主机只知道根 DNS 服务器的 IP,当他想知道 www.kevin.edu 的 IP 时,首先会向根询问 edu 的 IP,然后向 edu 询问 kevin.edu,最后向 kevin 询问 www.kevin.edu。
我知道该如何做吗?
编辑:
根dns服务器的配置文件:
$TTL 604800
@ IN SOA . root.kevin.edu. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
IN NS dns.
edu IN A 1.1.1.4
dns IN A 1.1.1.3
答案1
如问题所示,您的根区域不包含任何授权信息edu
,只有一条A
记录。根据此定义,edu
它不是自己的区域,而只是根区域的一部分的名称。
为了符合您的描述,记录edu
A
不应该在根区域,而应该有委托NS
记录+粘合A
/AAAA
记录,以便可以跟踪委托。
例如这样的事情:
edu. IN NS ns.edu. ; delegation
ns.edu. IN A 1.1.1.4 ; glue
edu
匹配的记录也应该存在于权威区域(本例中为区域)中。
在确保所有不同区域之间确实存在委派后,让解析器服务器使用您的自定义 DNS 树应该非常简单。这应该只是为您的自定义根区域提供根提示(NS
+ 粘合A
/AAAA
记录)并可能禁用/覆盖与实际根区域签名方式相关的任何 dnssec 设置的问题。