我正在尝试设置类似于 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 扩展,它已经被谷歌公共 DNS
8.8.8.8
和 OpenDNS等一些解析器支持208.67.222.222
(但不被 Level34.2.2.1
、Dyn216.146.35.35
、Hurricane Electric74.82.42.42
或大多数其他提供商支持)。上次我检查时,在任何公开可用的开源软件中仍然几乎不支持这样的事情,因此只有谷歌和 OpenDNS 解析器支持它。一些相关的问题:
一些相关的故障排除答案:
简而言之,尝试
dig -t txt o-o.myaddr.l.google.com +short
从您的潜在客户那里运行。如果你没有edns0-client-subnet
在输出中看到,那么所有的赌注都被取消了。