Miałem ten pomysł i zacząłem go kodować, ale nigdy nie skończyłem, ponieważ potrzeba najpierw wyparowała.
Serwer DNS ma nazwy hostów i adresy MAC wszystkich komputerów w swojej sieci LAN oraz sposób ich uzyskania. Gdy odbierze żądanie maszyny, którą zna, wysyła zwrotny ARP dla adresu IP podanego adresu MAC i wykorzystuje odpowiedź do skonstruowania odpowiedzi DNS.
Nie ma to nic wspólnego z tym, co próbujesz zrobić, ale ilustruje to sens. Serwer DNS można teoretycznie zakodować, aby zrealizować dowolny nowatorski schemat zamiany nazw na adresy IP.
Rzeczywiste pytanie wydaje się, jak uzyskać adres IP klienta, aby zdecydować, gdzie go wysłać. To jest mały problem XY. To, czego naprawdę chcesz, to dostawca usług internetowych klienta do geolokalizacji, a możesz to zrobić, robiąc to bezpośrednio z adresu IP wysyłającego żądanie, zakładając, że nie jest to 8.8.4.4 lub inna usługa przekierowująca DNS. Moim zdaniem najlepszym rozwiązaniem dla readresatorów DNS jest zignorowanie problemu i samodzielna geolokalizacja (to znaczy z serwera DNS spróbuj zlokalizować dzwoniący adres IP) i odpowiednie przekierowanie. Zobacz tutaj, jak geolokalizować: /programming/2574542/location-detecting-techniques-for-ip-addresses
Naprawdę nie chcesz tutaj anycasta, ale coś bardziej rozsądnego. Anycast ma irytującą właściwość, ponieważ może przekierowywać pakiety w środku strumienia TCP, powodując masowe zamieszanie.
Ron Maupin twierdzi, że anycast jest niezawodny dla TCP. Oto traceroute pokazujące inaczej:
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
Jeśli spróbujesz geolokalizować początkowe adresy IP, w oczywisty sposób otrzymasz oba w Wichita. To nie jest poprawne, wystarczy zwykła demonstracja fizyki.
Zasięg do 8.8.4.4 jest mierzony przy 30 ms, z czego pierwsze 18 ms jest karą lokalną (przeskok 3 to lokalny router mojego dostawcy usług internetowych). Moja odległość do Wichita wynosi 1297 mil. Minimalny czas podróży w obie strony wynosi zatem (1297 * 2 mil / 225 000 kilometrów na sekundę (prędkość światła w szkle)), który wynosi 18,55 ms. Dlatego nie powinienem odbierać odpowiedzi szybciej niż 28 ms, ale dostałem odpowiedź w ciągu 25 ms.
Pakiety docierają do Google dwiema różnymi trasami BGP. BGP nie wybrał najbliższego.