我想设置一个隐藏的主 DNS 服务器,即我在自己的服务器上托管区域文件,但所有请求都应发送到由专用 DNS 公司托管的辅助 DNS 服务器。我自己的 DNS 服务器不应由递归解析器或最终用户使用。该公司将使用区域传输从我的服务器复制区域文件。理想情况下,没有人应该知道我的服务器存在于此 DNS 设置中。
当然,NS
这种设置中的所有记录都将指向 DNS 公司的名称服务器。但我不确定该SOA
记录。
根据我的理解,此设置意味着我的服务器是“授权的开始”,因此我必须在其中指定它SOA
- 这将使公众知道我的服务器是真正的主服务器。根据serverfault 上的另一个答案MNAME 必须设置为“<domain-name>
该区域的原始或主要数据源的名称服务器”。
如果可能的话并且不会带来太多麻烦,我宁愿不在 SOA 中列出我的 NS 服务器,而是将 SOA 指向我的名称服务器托管公司。
company.example.com
如果我实际设置为 SOA 而不是我自己的服务器,会有什么后果myserver.example.org
?
- 我是否会违反 RFC?
- DNS 系统的某些部分是否不再起作用?(我读到 SOA 的条目用于动态更新,但我既不打算接受来自外国人的动态更新,也不打算自己发送)
- 因为我错误地指定了他们的电子邮件地址作为主 DNS 的联系人,我的名称服务器托管公司会来找我吗?(SOA 的邮件地址字段)
- 我是否可以在 SOA 中混合使用不同的主机名和邮件地址来解决某些问题?例如指向
company.example.com
SOA 服务器,但指向[email protected]
邮件联系人?
答案1
使用外包名称服务器(来自其他域)并不违反 DNS 标准,但这听起来不像是隐藏的主配置。作为主服务器给出的 NSSOA
应该在NS
记录中,但这并不意味着必须配置服务器,以便向世界介绍的主服务器是数据的实际原始来源。
例如,您可能不想将拥有您私有 DNSSEC 密钥的主服务器暴露给全世界。如果公开宣布的主服务器具有其他可能更容易受到攻击的功能(如某些 Web 应用程序),那么这一点尤其有用。
让我们举个例子。配置假设是BIND。
$ORIGIN example.com.
@ IN SOA ns1.example.com. hostmaster.example.com. (
2020053100 ; serial
7200 ; refresh (2 hours)
3600 ; retry (1 hour)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
@ IN NS ns3.example.com.
ns1 IN A 192.0.2.10
ns2 IN A 198.51.100.20
ns3 IN A 203.0.113.30
隐藏的大师未在区域中列出。
- 该服务器仅在私有网络上,具有IP地址
172.16.10.40
。 - 该服务器执行 DNSSSEC 签名,因此我使用了
example.com.signed
。 它被配置为的主服务器
example.com
,允许从公共主服务器进行区域传输,但只能使用 LAN(或者也可以是 VPN)。zone "example.com" { type master; file "/etc/bind/db/example.com.signed"; allow-transfer { 172.16.10.20; }; notify explicit; also-notify { 172.16.10.20; }; };
通知是使用
notify explicit
&手动配置的also-notify
,因为notify yes
只会通知 中列出的服务器(NS
除了 中列出的主服务器)SOA
。这根本无法开箱即用。
- 该服务器仅在私有网络上,具有IP地址
公共初选服务器
ns1.example.com
- 该服务器有两个IP地址:公共IP
192.0.2.10
和私有IP172.16.10.20
。 它是配置为从属对于区域,并允许从其他 NS 进行区域传输:
zone "example.com" { type slave; file "/etc/bind/db/example.com"; masters { 172.16.10.40; }; allow-transfer { 198.51.100.20; 203.0.113.30; }; notify yes; };
- 该服务器有两个IP地址:公共IP
公立中学服务器
ns2.example.com
&ns3.example.com
。在这个例子中,这些服务器完全在其他地方,提供必需的 网络多样性和地质冗余。
这些服务器从公共主服务器执行区域传输。
zone "example.com" { type slave; file "/etc/bind/db/example.com"; masters { 192.0.2.10; }; };