Domain-Name-System
GeoDNS 設置中的 CNAME 問題
我正在嘗試設置類似於 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公共 DNS
8.8.8.8
和 OpenDNS等一些解析器支持208.67.222.222
(但不被 Level34.2.2.1
、Dyn216.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" %