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