Domain-Name-System

GeoDNS 設置中的 CNAME 問題

  • September 19, 2016

我正在嘗試設置類似於 CDN(內容傳遞網路)設置的東西。我想要做的是使用根據使用者的地理位置返回 A 記錄的 DNS 記錄。我能夠使用 RAGE4 DNS 進行設置。我不能真正將域(我們稱之為 domaina.com)移動到 RAGE4,我只能更改子域。所以,我所做的是註冊一個新域名(我們稱之為 domainb.com),並在 RAGE4 DNS 上使用基於地理的 A 記錄進行設置,並將子域(在 domaina.com 上)更改為指向的 CNAME RAGE4 DNS。這會導致通過訪問子域(在 domainb.com 上)返回的 A 記錄僅返回相同的 IP 地址,因為它使用 domaina.com 的名稱伺服器的位置(而不是執行查詢的原始使用者)。

也許這是一個更好的解釋:

  • 使用者從 ns1.domaina.com 請求 xyz.domaina.com 的 DNS 記錄
  • xyz.domaina.com 是指向 xyz.domainb.com 的 CNAME 記錄
  • xyz.domainb.com 根據使用者的地理位置返回一條A記錄(本例為ns1.domaina.com的地理位置)

有沒有辦法讓它使用原始使用者位置而不是名稱伺服器位置?

你不能。

有一個名為“DNS 請求中的客戶端子網”的 EDNS0 擴展,它已經被Google公共 DNS8.8.8.8和 OpenDNS等一些解析器支持208.67.222.222(但不被 Level3 4.2.2.1、Dyn 216.146.35.35、Hurricane Electric74.82.42.42或大多數其他提供商支持)。上次我檢查時,在任何公開可用的開源軟體中仍然幾乎不支持這樣的事情,因此只有Google和 OpenDNS 解析器支持它。

一些相關的問題:

一些相關的故障排除答案:

簡而言之,嘗試dig -t txt o-o.myaddr.l.google.com +short從您的潛在客戶那裡執行。如果你沒有edns0-client-subnet在輸出中看到,那麼所有的賭注都被取消了。

% dig -t txt o-o.myaddr.l.google.com +short
"188.40.25.3"

% dig @google-public-dns-a.google.com. -t txt o-o.myaddr.l.google.com +short
"74.125.189.17"
"edns0-client-subnet 88.198.54.0/24"

% dig @resolver1.opendns.com. -t txt o-o.myaddr.l.google.com +short
"208.69.33.21"
"edns0-client-subnet 88.198.54.0/24"

% dig @a.resolvers.level3.net. -t txt o-o.myaddr.l.google.com +short
"8.0.18.147"

% dig @resolver1.dyndnsinternetguide.com. -t txt o-o.myaddr.l.google.com +short
"91.198.22.152"

% dig @ordns.he.net -t txt o-o.myaddr.l.google.com +short
"216.66.80.30"

%

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