J'ai eu cette idée et j'ai commencé à la coder mais je n'ai jamais fini car le besoin s'est évaporé en premier.
Le serveur DNS possède les noms d'hôte et les adresses MAC de toutes les machines sur son réseau local et un moyen de les atteindre. Lorsqu'il reçoit une demande pour une machine qu'il connaît, il envoie un ARP inverse pour l'adresse IP en fonction de l'adresse MAC et utilise la réponse pour construire la réponse DNS.
Cela n'a rien à voir avec ce que vous essayez de faire, mais cela illustre le point. Un serveur DNS peut en théorie être codé pour exécuter le nouveau schéma que vous souhaitez résoudre les noms en adresses IP.
La vraie question semble être de savoir comment obtenir l'adresse IP du client pour décider où les envoyer. Il s'agit d'un petit problème XY. Ce que vous voulez vraiment, c'est que le FAI du client se géolocalise, et vous pouvez l'obtenir en le faisant directement à partir de l'adresse IP qui fait la demande, en supposant que ce n'est pas 8.8.4.4 ou un autre service de redirection DNS. À mon avis, la meilleure solution aux redirecteurs DNS est d'ignorer le problème et de faire une géolocalisation auto-relative (c'est-à-dire, à partir du serveur DNS, essayez de localiser l'adresse IP appelante) et de rediriger de manière appropriée. Voir ici pour savoir comment géolocaliser: /programming/2574542/location-detecting-techniques-for-ip-addresses
Vous ne voulez vraiment vraiment aucune diffusion ici, mais quelque chose de plus sain d'esprit. Anycast a la propriété ennuyeuse de pouvoir rediriger les paquets au milieu de votre flux TCP, provoquant une confusion de masse.
Ron Maupin affirme que anycast est fiable pour TCP. Voici le traceroute montrant le contraire:
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
Si vous essayez de géolocaliser les adresses IP en amont de la manière évidente que vous obtenez, elles sont toutes les deux dans Wichita. Ce n'est pas correct par lequel une simple démonstration de physique suffira.
La plage de 8.8.4.4 est mesurée à 30 ms dont les 18 premiers sont la pénalité locale (le saut 3 est le routeur local de mon FAI). Ma distance jusqu'à Wichita est de 1297 miles. Le temps aller-retour minimum est donc (1297 * 2 miles / 225 000 kilomètres par seconde (vitesse de la lumière dans le verre)) qui est de 18,55 ms. Par conséquent, je ne devrais obtenir aucune réponse plus rapidement que 28 ms, mais j'en ai reçu une en 25 ms.
Les paquets arrivent à Google par deux routes BGP différentes. BGP n'a pas choisi le plus proche.