У меня была эта идея, и я начал ее кодировать, но так и не закончил, так как потребность исчезла первой.
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 не выбрал ближайший.