名称服务器可以根据某种策略动态解析IP地址吗?


11

我们已经为我们的网站注册了一些用于DNS解析的名称服务器,该服务器已部署在多个数据中心中。

我们当前的DNS解析策略是,基于不同的客户端IP地址,名称服务器将为同一域返回不同的IP地址。例如,如果客户端IP地址来自北美,则名称服务器将返回一个IP地址,该地址是我们北美数据中心的IP地址。

但是客户端IP地址有时不是用户的真实IP地址。它可以是属于ISP或代理服务器的DNS的IP地址。另一方面,如果我们的一个数据中心发生故障,我们希望我们的名称服务器排除属于崩溃数据中心的IP地址。因此,我们希望我们可以为DNS解析获得更动态的策略。有解决方案吗?


这听起来像是任播的情况。
罗恩·莫平

1
@RonMaupin应该指出,要进行任播,必须具有与提供程序无关的地址块分配,更重要的是,运行BGP从每个数据中心播发前缀。这是全新的运营水平,并不是许多“面向内容”的公司所具有的经验。基于DNS的解决方案看起来容易得多。
IPX

@IPX,我想像是一个在世界范围内拥有数据中心的公司,就像在问题中那样,它将拥有独立于提供商的地址和自己的AS编号。这样一来,任意播都是免费且容易的。
罗恩·莫平

1
@RonMaupin,如果OP的公司实际上在世界各地运营着多个数据中心,那么可以,但是在那儿他们可能不会问一个相对简单的问题。我敢打赌,他们只是将自己或雇用的硬件安置在几个商业数据中心中,而实际上并不关心高级网络运营商。这就是我看到的许多中型公司为冗余所做的事情。如果是这样,DNS就是答案,而不是route
IPX

@IPX,我从问题中得出的信息是,该公司在世界各地都有数据中心,如果一个数据中心崩溃,则定向的流量应定向到另一个数据中心(“ 如果我们的一个数据中心关闭了。” 。 “)。我只是按要求回答了问题,而不是尝试猜测第三方托管,我们也做了一些类似的工作,但是仍然有我们自己的提供商独立地址和与ISP对等的AS编号。这样就可以在不中断重新寻址网络中断的情况下协商合同和更改ISP。
罗恩·莫平

Answers:


16

听起来您想要播客。这就是Google等网站使用的东西。您对所有网站都有一个地址(由DNS解析),然后让Internet路由协议(BGP)将用户定向到最近的站点(通过路由协议)。如果站点出现故障,BGP将自动将下一个最近的站点放置在Internet路由表中。

经典示例是8.8.8.8针对DNS的。它解析到全球各地的不同位置,如果一个位置出现故障,则转到下一个最近的位置。

答案不是DNS,而是路由。


2
通常,Anycast对于基于TCP的协议没有用,因为属于同一连接的数据包可以到达不同的服务器。
圣保罗Ebermann

2
@PaŭloEbermann在使用BGP路由时没有问题,因为通常在宣布时路由不会改变(只有微小的改变)
Ferrybig

2
@PaŭloEbermann只要您的所有负载均衡器都同意如何选择后端,就可以在基于DSR的负载均衡器之间进行任何广播。
卡巴斯德

3
@PaŭloEbermann,这是一个误解。来自一台主机的所有流量都将流向一台服务器,除非该服务器发生故障,否则流量将被定向到另一台服务器。是的,那会中断TCP连接,但是只要您所连接的服务器出现故障,情况就是如此。任播不是一回事。路由是确定性的,因此任播都是确定性的。
罗恩·莫平

2
@RonMaupin任播路由并不像您所暗示的那样稳定。Google不会像您所说的那样使用任播。如果您想了解Google的实际操作方式,请参阅Google发布的《网站可靠性工作手册》中的第227页。简而言之,任播路由后面的负载平衡层可以补偿路由中不可避免的变化,否则这些变化会破坏TCP连接。
kasperd

9

您需要的是 究竟什么亚马逊Route53 DNS服务提供:

无需将网站托管在AWS上即可使用Route53,它将很高兴地与跨私有数据中心部署的服务一起使用。

除非您是Facebook或Google,否则价格也不成问题,每百万个请求0.40美元起(请参阅 定价详细信息)。

希望有帮助:)


您是否曾经为此使用过任何非亚马逊产品?
小鸡

@小妞不,我没有。我总是倾向于使用最好的工具来完成这项工作,而Route53在大多数情况下都符合要求。但是,如果您搜索诸如“ geo dns服务”之类的内容,则会获得一些选择。我迅速查看了一下,但它们似乎相当昂贵(每月约50美元-远远超过您可能在AWS Route53上花费的金额)。
MLu

2
在调用第一个我发现在大多数情况下是最佳工具的工具之前,我会扩大我的视野。Route53可能是每个人的最佳选择,但是您是否还没有尝试过其他方法呢?
小鸡

-1

我有了这个主意,并开始编写它,但是由于需求先消失,所以从未完成。

DNS服务器具有其LAN上所有计算机的主机名和MAC地址以及访问它们的方法。当收到对已知机器的请求时,它将为给定MAC地址的IP地址发送反向ARP,并使用响应来构造DNS应答。

这与您要尝试执行的操作无关,但是它说明了这一点。从理论上讲,可以对DNS服务器进行编码,以执行您想将名称解析为IP地址的任何新颖方案。

实际的问题似乎是如何获取客户的IP地址,以确定将其发送到哪里。这只是XY问题的一小部分。您真正想要的是客户的ISP进行定位,并且可以通过在发出请求的IP地址之外直接进行处理(假设它不是8.8.4.4或其他DNS重定向服务)来实现。在我看来,DNS重定向器的最佳解决方案是忽略该问题并进行自相关的地理位置定位(即从DNS服务器尝试定位调用IP地址)并进行适当的重定向。参见此处了解如何定位:https : //stackoverflow.com/questions/2574542/location-detecting-techniques-for-ip-addresses

您确实真的不想在这里播出任何内容,但更为理智。Anycast具有令人讨厌的属性,因为它可以在TCP流的中间重新路由数据包,从而导致大量混乱。

罗恩·莫平(Ron Maupin)声称,任播对于TCP而言是路由可靠的。以下是显示的traceroute:

 3  cr1-rhe-a-be153.bb.as11404.net (174.127.183.14)  20.657 ms  20.763 ms  19.660 ms
 4  cr1-che-b-be-2.as11404.net (192.175.29.161)  22.550 ms  23.562 ms  23.538 ms
 5  * cr1-9greatoaks-hu-0-6-0-20-0.bb.as11404.net (192.175.28.108)  24.409 ms  38.083 ms
 6  72.14.222.146 (72.14.222.146)  40.038 ms  39.106 ms  39.125 ms
 7  108.170.242.225 (108.170.242.225)  37.930 ms 108.170.243.1 (108.170.243.1)  35.434 ms 108.170.242.225 (108.170.242.225)  33.694 ms
 8  209.85.240.249 (209.85.240.249)  33.476 ms 108.170.232.65 (108.170.232.65)  31.683 ms 108.170.234.155 (108.170.234.155)  30.754 ms
 9  google-public-dns-b.google.com (8.8.4.4)  30.491 ms  28.644 ms  25.718 ms

如果您尝试对上游IP地址进行地理定位,那么显而易见的方式是它们都位于威奇托。通过简单的物理演示就足够了,这是不正确的。

8.8.4.4的范围是在30ms处测量的,其中前18ms是本地惩罚(跳3是我的ISP的本地路由器)。我到威奇托的距离是1297英里。因此,最小往返时间为(1297 * 2英里/ 225,000公里/秒(玻璃中的光速)),即18.55ms。因此,我应该在28ms内没有收到任何响应,但在25ms内得到一个响应。

数据包通过两条不同的BGP路由到达Google。BGP没有选择最接近的。



评论不作进一步讨论;此对话已转移至聊天
病房-恢复莫妮卡

我已将所有评论移到聊天中,但是由于有太多评论,并且有一些评论是自动移到的,因此我不确定以后的聊天是否全部包含了这些评论。无论如何,不​​应在评论中进一步讨论此答案的有效性以及路由器的工作方式等,请将其保留在聊天室之一中。此处的任何其他评论将被删除。
病房-恢复莫妮卡

-2

DNS Anycast和RFC-7871的某种组合可以实现您所需要的。


1
更多细节将改善您的答案
Dave M
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.