Domain-Name-System
如果我沒有在隱藏的主設置中將我的真正主 DNS 設置為 SOA 條目會發生什麼?
我想設置一個隱藏的主 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 伺服器,但指向myprivatemail@example.org
郵件聯繫?
使用外包名稱伺服器(來自其他域)並不違反 DNS 標準,但這聽起來不像是隱藏的主要配置。作為主要輸入的 NS
SOA
應該在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
. 這根本無法開箱即用。公共主伺服器
ns1.example.com
- 該伺服器有兩個 IP 地址: public
192.0.2.10
和 private172.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; };
公共輔助伺服器
ns2.example.com
&ns3.example.com
.
- 在此範例中,這些伺服器完全位於其他位置,提供所需的 網路多樣性和地質冗餘。
- 這些伺服器從公共主伺服器執行區域傳輸。
zone "example.com" { type slave; file "/etc/bind/db/example.com"; masters { 192.0.2.10; }; };