Domain-Name-System
在水平分割 DNS 的情況下,當查詢 DNS 伺服器不受其控制的域時,DNS 伺服器的行為是否正確?
因此,我們的雲提供商之一在 VM 之間提供了一個低延遲、零評級的“內部網路”選項。內部網路上的介面位於 10.xxx IP 空間中。當我們的一台伺服器查詢內部網路上另一台伺服器的主機名時,我們希望它解析為內部網路上的地址,而不是導致傳輸記帳的公共可路由地址。
我們已經實現了一個小型伺服器來執行此操作,當源 IP 是 10.xxx IP 時,它將返回內部地址。
我們不想做的是讓我們的內部伺服器成為我們虛擬機的唯一主 DNS 伺服器。我們會讓它成為客戶端列表中的第一個伺服器,然後是一個公共 dns 服務,如 1.1.1.1。
因此,如果在內部 DNS 中查詢 google.com(我們不擁有),我們應該返回給客戶端的正確響應是什麼?我們應該簡單地忽略請求還是應該返回 NxDomain 響應?
感謝您的任何建議!
如果您將伺服器用作遞歸伺服器,它應該以從權威基礎設施解析的正確回復進行響應。如果您返回
NXDOMAIN
,則 DNS 客戶端信任答案,並且不會繼續訪問其他伺服器。如果您不回復任何內容,那隻會導致不必要的超時延遲。此外,DNS 客戶端通常沒有理解這種條件解析的功能,但 DNS 伺服器有。因此,要考慮的一個選項是在將執行條件轉發的每台伺服器上安裝本地 DNS 伺服器。在這種情況下,您要配置的唯一 DNS 伺服器
resolv.conf
將是localhost
ie127.0.0.1
。這些範例採用 BIND 配置格式,因為您沒有在問題中指定您的風格。
options { forwarders { 1.1.1.1; }; } zone "example.com" { type forward; forward only; forwarders { 10.8.8.8; }; };
或者,如果與內部 DNS 伺服器的連接不穩定,伺服器還可以通過區域傳輸託管內部區域的副本:
zone "example.com" { type slave; file "/etc/bind/db/example.com"; masters { 10.8.8.8; }; };
自然,主伺服器也應該允許傳輸。