Я мав цю ідею і почав її кодувати, але так і не закінчив, оскільки потреба спочатку випарувалася.
DNS-сервер має імена хостів та MAC-адреси всіх машин у своїй локальній мережі та спосіб досягти їх. Коли він отримує запит на машину, яку він знає, він надсилає зворотний ARP для IP-адреси з урахуванням MAC-адреси та використовує відповідь для побудови відповіді DNS.
Це не має нічого спільного з тим, що ви намагаєтеся зробити, але це ілюструє суть. Теоретично DNS-сервер може бути кодований для виконання будь-якої нової схеми, яку ви хочете вирішити імена на IP-адреси.
Актуальним питанням є те, як отримати IP-адресу замовника, щоб вирішити, куди його надіслати. Це невелика проблема XY. Те, що ви дійсно хочете, - це провайдер геолокації клієнта, який можна ввімкнути, і ви можете отримати це, зробивши це безпосередньо за IP-адресою, яка робить запит, припускаючи, що це не 8.8.4.4 чи інша послуга переадресації DNS. На мій погляд, найкраще рішення для DNS-перенаправників - ігнорувати проблему та зробити відносну геолокацію (тобто, з сервера DNS намагатись знайти викликову IP-адресу) та перенаправити належним чином. Дивіться тут, як геолокувати: /programming/2574542/location-detecting-techniques-for-ip-addresses
Ви дійсно не хочете тут будь-якого моменту, але щось більш здорове. Anycast має дратівливу властивість - це те, що він може перенаправляти пакети в середині потоку TCP, викликаючи масову плутанину.
Рон Моупін стверджує, що anycast є надійним для маршруту TCP. Ось слідрук, що показує інакше:
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 вимірюється в 30 мс, з яких перші 18 мс - це локальний штраф (хоп 3 - локальний маршрутизатор мого провайдера). Моя відстань до Вічіти - 1297 миль. Таким чином, мінімальний час в обидва кінці (1297 * 2 милі / 225 000 кілометрів в секунду (швидкість світла в склі)), що становить 18,55 мс. Тому я не повинен отримати відповіді швидше, ніж 28 мс, але я повернувся назад за 25 мс.
Пакети прибувають до Google двома різними BGP-маршрутами. BGP не обрав найближчих.