我有一个特殊的用例,我想单独覆盖特定域的公共 DNS 映射。该域不属于我。
我目前已设置了一个 BIND DNS 服务器,它将除此域之外的所有请求转发到 Google 的公共 DNS (8.8.8.8),并且仅为此域设置 DNS 记录。此解决方案效果很好,但如果请求来自远离 DNS 服务器的位置,则延迟最多可达 350 毫秒。
我想摆脱在不同地区托管 DNS 服务器的麻烦。是否已经存在提供相同服务的托管/云产品 - 快速、安全、可靠的公共 DNS 服务,其中可以覆盖单个 DNS 记录?
答案1
有多个公共递归解析器提供商。其中至少有一个具有一些可配置的 DNS 查询过滤功能。但是,据我所知,特定提供商采取了可疑的措施,默认过滤某些域,因此我不建议使用该特定提供商。
但是,您所要求的东西中存在着技术挑战,而供应商无法消除这些挑战,因此您需要了解这些限制是什么,以及这对您所期望的结果意味着什么。
DNS 协议不包含任何用于识别服务各个用户的信息。因此,客户端和服务器 IP 地址成为区分用户的唯一方式。
如果提供商为此目的使用客户端 IP 地址,他们将面临许多缺点。客户端可能拥有动态 IP 地址,或者可能通过 NAT 连接。此外,他们很难验证客户是否真的拥有他们声称拥有的所有 IP 地址。这不仅仅是两个客户声称拥有相同 IP 空间时需要解决的问题,因为该服务也可能支持未注册的用户。
另一种方法是为每个客户分配不同的服务器 IP 地址。这种方法不会产生同样的缺点。因为一旦将服务器 IP 分配给一个客户,提供商就可以对发送到该 IP 的请求执行该客户想要的任何操作,而不会影响其他用户,因为没有其他用户会向该 IP 发送合法请求。
但是 IPv4 地址短缺。对于 IPv4,典型的任播前缀有 256 个地址。因此,提供商可能需要为没有专用服务器地址的用户保留四个地址,分别用于网络地址、网关地址、广播地址和服务器地址。这样,他们就可以为特定客户分配 252 个其他 IPv4 地址。因此,如果您是该提供商的 252 个最大客户之一,他们很可能会愿意向您出售此类服务,否则您可能不得不处理使用客户端 IP 来识别您所带来的问题。
如果您决定使用 IPv6,那么问题就少得多。我不知道 IPv6 上典型的任播前缀长度是多少,但肯定在 32 到 64 位之间,这意味着将有超过 18 万亿个服务器地址可供选择,这足以为每个客户分配一个。
答案2
是的,它被称为hosts 文件。