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

У нас есть шаг во время уменьшения нашей большой карты, что делает разрешения DNS. Само приложение использует библиотеку c-ares, а также libcurl.

Я замечаю, что с каждым разрешением сначала делается попытка АААА, а затем сразу разрешение. Это хорошо видно по 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

1 ответ

Решение

Знаете, IPv6, а не IPv4, является перспективной версией IP... IPv6 очень жаль, что вы идете:-(Но вы можете отключить его.

Если вы используете libcURL, все, что вам нужно сделать, это:

curl_easy_setopt(easy_handle, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);

Однако вас беспокоит время, которое занимают эти дополнительные запросы AAAA, или дополнительный сетевой трафик? Я надеюсь, что A и AAAA выполняются параллельно, поэтому вам не нужно беспокоиться о задержке.

Другие вопросы по тегам