Назад | Перейти на главную страницу

Отключить поиск AAAA в libcurl

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