我正在尝试设置类似于CDN (内容传递网络)的设置。我想要做的是使用DNS记录,根据用户的地理位置返回一个A记录。我能够使用RAGE4 DNS来设置它。我不能将域(让我们称之为domaina.com)移动到RAGE4,我只能更改子域。因此,我所做的是注册一个新的域名(让我们称之为domainb.com),并在RAGE4 DNS上使用基于地理的A记录进行设置,并将子域(在domaina.com上)更改为指向RAGE4 DNS的CNAME。这导致通过访问子域(在domainb.com上)返回的A记录只返回相同的IP地址,因为它使用domaina.com名称服务器的位置(而不是执行查询的原始用户)。
也许这是一个更好的解释:
是否有任何方法可以让它使用原始用户位置而不是名称服务器位置?
发布于 2014-04-22 02:10:58
你不能这么做。
有名为EDNS0 0的扩展“DNS请求中的客户端子网”,一些解析器已经支持它,比如Google 8.8.8.8和OpenDNS 208.67.222.222 (但Level3 4.2.2.1、Dyn 216.146.35.35、飓风电气74.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
复制相似问题