我有一个困惑,不知道如何将一个 DNS 设置为两个或多个域的主服务器?例如,如果我有两个域:首家和第二家以及一个具有公网 IP 地址的 DNS 服务器。我应该以这种方式设置吗:
区域文件首家
$ORIGIN first.com.
@ IN SOA ns1.first.com. hostmaster.first.com. (
2003080800 ; serial number
3h ; refresh = 3 hours
15M ; update retry = 15 minutes
3W12h ; expiry = 3 weeks + 12 hours
2h20M ; minimum = 2 hours + 20 minutes
)
IN NS ns1.first.
IN NS ns2.first.
ns1 IN A 70.0.0.3 # address for example purposes
ns2 IN A 70.0.0.4 #
区域文件第二家:
$ORIGIN second.com.
@ IN SOA ns1.second.com. hostmaster.second.com. (
2003080800 ; serial number
3h ; refresh = 3 hours
15M ; update retry = 15 minutes
3W12h ; expiry = 3 weeks + 12 hours
2h20M ; minimum = 2 hours + 20 minutes
)
IN NS ns1.second.
IN NS ns2.second.
ns1 IN A 70.0.0.3 # address for example purposes
ns2 IN A 70.0.0.4 #
并在父区域中创建四个 NS 记录和四个 Glue A 记录:
first IN NS ns1.first.com.
IN NS ns2.first.com.
second IN NS ns1.second.com.
IN NS ns2.second.com.
ns1.first IN A 70.0.0.3
ns2.first IN A 70.0.0.4
ns1.second IN A 70.0.0.3
ns2.second IN A 70.0.0.4
或者应该配置为第二家我们将 ns1.first. 定义为主名称服务器,并将两个 NS 记录定义为ns1.first.com。和ns2.first.com。没有 A 记录?像这样:
$ORIGIN second.com.
@ IN SOA ns1.first.com. hostmaster.second.com. (
2003080800 ; serial number
3h ; refresh = 3 hours
15M ; update retry = 15 minutes
3W12h ; expiry = 3 weeks + 12 hours
2h20M ; minimum = 2 hours + 20 minutes
)
IN NS ns1.first.
IN NS ns2.first.
在这种情况下,在父区域中我们将定义四个 NS 记录和两个 A 粘合记录:
first IN NS ns1.first.com.
IN NS ns2.first.com.
second IN NS ns1.first.com.
IN NS ns2.first.com.
ns1.first IN A 70.0.0.3
ns2.first IN A 70.0.0.4
ns2是配置为两个域的从属服务器的名称服务器,也具有公共 IP 地址。
如果问题很简单,我深表歉意,但在阅读了大量文本并思考之后,我仍然不确定正确的方法是什么。
谢谢
答案1
我认为,通常作为名称服务器运营商,您会希望一劳永逸地决定您的名称服务器的名称,然后将这些名称用于您托管的任意数量的区域。
您的名称服务器可以命名为与客户/目的无关的名称,如 ns1.hostingcompany.example
、ns2.hostingcompany.example
、ns3.hostingcompany.example
、ns4.hostingcompany.example
。
可以用多个名称引用同一个名称服务器,但这往往会导致许多域的粘合记录(可能超出您的控制范围?),从而实际上使您更难维护自己的环境。
答案2
配置单个 DNS 服务器时,您通常会为每个域设置单独的区域,确保为要为其配置特定名称服务器的所有域创建正向和反向区域文件。您使用的配置将非常特定于您正在使用的 DNS 服务器,并且从您的帖子中不清楚您使用的是哪个服务器。Linux 环境中流行的 DNS 服务器是 bind9。要使用 bind9 配置多个域,您应该执行以下操作:
/etc/named.conf
:
zone "first.com" {
type master;
file "/etc/named/zones/db.first.com";
};
zone "second.com" {
type master;
file "/etc/named/zones/db.second.com";
};
在/etc/named/zones/db.first.com
:
$ORIGIN first.com.
@ IN SOA ns1.first.com. hostmaster.first.com. (
2003080800 ; serial number
3h ; refresh = 3 hours
15M ; update retry = 15 minutes
3W12h ; expiry = 3 weeks + 12 hours
2h20M ; minimum = 2 hours + 20 minutes
)
IN NS ns1.first.com.
IN NS ns2.first.com.
ns1.first.com. IN A 70.0.0.3 # address for example purposes
ns2.first.com. IN A 70.0.0.4 #
并且/etc/named/zones/db.second.com
:
$ORIGIN second.com.
@ IN SOA ns1.second.com. hostmaster.second.com. (
2003080800 ; serial number
3h ; refresh = 3 hours
15M ; update retry = 15 minutes
3W12h ; expiry = 3 weeks + 12 hours
2h20M ; minimum = 2 hours + 20 minutes
)
IN NS ns1.second.com.
IN NS ns2.second.com.
ns1.second.com. IN A 70.0.0.3 # address for example purposes
ns2.second.com. IN A 70.0.0.4 #
然后您可以将 70.0.0.4(或ns2
)配置为从属,确保allow-transfers
在中指定 ns1 地址masters
。
据我所知,不需要胶水记录。
答案3
看起来这是正确的做法:
第一的区域文件
$ORIGIN first.com.
@ IN SOA ns1.first.com. hostmaster.first.com. (
2003080800 ; serial number
3h ; refresh = 3 hours
15M ; update retry = 15 minutes
3W12h ; expiry = 3 weeks + 12 hours
2h20M ; minimum = 2 hours + 20 minutes
)
IN NS ns1.first.com.
IN NS ns2.first.com.
ns1 IN A 70.0.0.3 # address for example purposes
ns2 IN A 70.0.0.4 #
第二区域文件
$ORIGIN second.com.
@ IN SOA ns1.second.com. hostmaster.first.com. (
2003080800 ; serial number
3h ; refresh = 3 hours
15M ; update retry = 15 minutes
3W12h ; expiry = 3 weeks + 12 hours
2h20M ; minimum = 2 hours + 20 minutes
)
IN NS ns1.first.com.
IN NS ns2.first.com.
ns1.first.com. IN A 70.0.0.3 # example address
ns2.first.com. IN A 70.0.0.4 #
父母区域文件
first IN NS ns1.first.com.
IN NS ns2.first.com.
second IN NS ns1.first.com.
IN NS ns2.first.com.
ns1.first IN A 70.0.0.3
ns2.first IN A 70.0.0.4