Networking

用於多個連接的 DNS 伺服器

  • July 16, 2013

我有來自多個 ISP 的多個 ADSL 連接的複雜配置,由 Draytek Vigor 3300V+ 進行負載平衡

我的問題是我應該使用什麼 DNS 設置。我應該使用連接 A 的 ISP 設置還是連接 B 的 ISP 設置或不同的設置?

我目前在我的路由器和 draytek 上使用 Google DNS 設置 8.8.8.8 和 8.8.8.4,但我擔心這可能會導致一些問題。任何人都可以建議或指出我正確的方向。

PS 一旦 Fiber 到達我的辦公室,我就可以放棄這個複雜的設置

旁注:我區分轉發/遞歸/解析 DNS 和非轉發/權威 DNS。雖然從技術上講,他們倆都使用相同的協議,但他們的行為確實有很大差異。正如您提到的 8.8.8.8,我確實假設一個轉發 DNS 伺服器。

通常,您的 ISP 會限制可能查詢其 DNS 伺服器的 IP 地址範圍。

因此,如果您遇到 ISP A 的線路停機,您的系統可能會嘗試通過您的線路和來自 ISP B 的 IP 地址查詢 ISP A 的 DNS 伺服器。如果 ISP A 確實管理好他們的系統,他們會拒絕來自任何伺服器的 DNS 請求“外國”IP 地址(不屬於 ISP A)。

可能只有三種解決方案:

  • 您的路由器可以根據連接的線路動態代理 DNS 請求
  • 執行您自己的 DNS 伺服器
  • 查詢公共 DNS 伺服器

許多路由器確實提供了 DNS 代理:您使用路由器的 IP 地址作為“您的 DNS 伺服器”,路由器根據目前連接的線路將 DNS 請求轉發到連接的 ISP。如果您連接到多個 ISP 並且其中一個 ISP 確實遇到了 DNS 停機時間,那麼您的一些 DNS 請求將靜默失敗,您可能會花費大量時間來找出問題所在。如果您的一個 ISP 確實遇到了 DNS 停機時間,但沒有出現線路停機時間,那麼您的所有 DNS 請求都需要轉到另一個 ISP。在這種情況下,您需要兩個 ISP 才能完全訪問 Internet:一個提供線路和 DNS,另一個提供線路。當您使用多條線路時,我不推薦使用這些 DNS 代理。複雜性會殺人。

執行您自己的 DNS 伺服器確實具有以下含義:

  • 您應該限制對您的 DNS 伺服器的訪問。管理不善的轉發 DNS 伺服器確實容易被濫用,例如發起拒絕服務攻擊。
  • 解析 DNS 名稱通常涉及許多步驟,這些步驟確實會收集總體延遲:您的 DNS 伺服器詢問根名稱伺服器,該伺服器指向特定於 tld 的 DNS 伺服器;然後,您的 DNS 伺服器詢問特定於 tld 的 DNS 伺服器,後者又指向某些託管 isp 的某些權威 DNS 伺服器。您的 DNS 伺服器將查詢該 DNS 伺服器並獲得最終結果。當然,這些請求會被記憶體一段時間,但畢竟所有這些請求都會增加一些網路延遲。“自行”完全解析 DNS 記錄可能比詢問公共 DNS 伺服器(可能已經有記憶體結果)花費更多的時間。

因此,僅從性能的角度來看,使用公共 DNS 伺服器可能是一個更明智的主意,例如已經提到的 Google DNS(8.8.8.8 和 8.8.4.4)或 OpenDNS(請參閱 opendns.com)。

引用自:https://serverfault.com/questions/523699