У нас есть шаг во время уменьшения нашей большой карты, который влияет на разрешение DNS. Само приложение использует библиотеку c-ares, а также libcurl.
Я замечаю, что с каждым разрешением сначала выполняется попытка AAAA, а затем сразу разрешение A. Это ясно видно с помощью TCPdump как на нашем именованном сервере, так и на хосте.
Вот образец трафика на S3
$ tcpdump dst port 53
20:28:35.259552 IP x.x.x.x.55271 > ec2-xx.amazonaws.com.domain: 21815+ AAAA? s3.amazonaws.com. (34)
20:28:35.261526 IP x.x.x.x.56058 > ec2-xx.amazonaws.com.domain: 21823+ A? s3.amazonaws.com. (34)
И это повторяется для каждого разрешения. Поскольку в ходе этого процесса мы выполняем более 70 миллионов разрешений, имеет смысл исключить 50% из них как ненужные.
Как отключить поиск IPv6 в Ubuntu?
Я пробовал изменить приоритет в /etc/gai.conf на:
precedence ::ffff:0:0/96 45
Тем не менее, я все еще вижу, как Ubuntu сначала пробует разрешения IPv6. Любая помощь будет принята с благодарностью
Редактировать:
Мой /etc/resolv.conf прост с набором серверов имен:
cat /etc/resolv.conf
nameserver x.x.x.x
IPv6, а не IPv4, является перспективной версией IP, вы знаете ... IPv6 сожалеет, что вы уходите :-( Но вы можете отключить его.
Если вы используете libcURL, то все, что вам нужно сделать, это следующее:
curl_easy_setopt(easy_handle, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
Однако беспокоитесь ли вы о времени, которое потребуется на эти дополнительные запросы AAAA, или о дополнительном сетевом трафике? Я надеюсь, что A и AAAA выполняются параллельно, поэтому вам не нужно беспокоиться о задержке.