我有了这个主意,并开始编写它,但是由于需求先消失,所以从未完成。
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没有选择最接近的。