Такие предпочтения могут быть выражены с использованием записей SRV. К сожалению, те не поддерживаются для HTTP. Таким образом, вы остаетесь в ситуации, когда один клиент делает выбор между IPv4 и IPv6.
Многие клиенты используют время туда-обратно SYN + SYN-ACK, чтобы решить, какой из них использовать. Таким образом, замедляя отправку пакета SYN-ACK по IPv6, вы можете сделать так, чтобы большинство клиентов предпочитали IPv4. Но намеренное замедление вашего сайта - ужасный подход.
Вместо этого я бы сделал шаг назад и посмотрел бы на проблему. Вы хотите лучше геолокационные данные. Каждый раз, когда посетитель посещает ваш сайт, вы сразу узнаете один из его IP-адресов. Будет ли это адрес IPv4 или IPv6, зависит от того, какой браузер предпочитает общаться с вашим сервером.
Внутри вашей страницы вы можете использовать AJAX-запрос, чтобы узнать другой IP-адрес. Для клиентов, использующих IPv4, отправьте запрос AJAX в домен только для IPv6, для клиентов, использующих IPv6, отправьте запрос AJAX в домен только для IPv4.
Как только запрос AJAX поступает на сервер, вы знаете как IPv4, так и IPv6-адреса пользователя. Знание этой переписки позволит вам выполнять геолокацию лучше, чем вы, зная только одну из двух.
Вы часто будете видеть случаи, когда запрос AJAX никогда не поступает на сервер. Для этих пользователей вам придется выполнять геолокацию, как вы можете лучше всего сделать, основываясь только на одном IP-адресе. Но до тех пор, пока ответ на этот запрос AJAX не используется ни для чего на стороне клиента, пользователь даже не будет замечать неудачные запросы AJAX. Таким образом, AJAX-запросы не будут вызывать замедления или ошибочного поведения.