禁用libcurl中的AAAA查找

在我们的大型地图缩减过程中,我们有一个步骤来执行DNSparsing。 应用程序本身使用c-ares库以及libcurl。

我注意到,每个决议,首先是一个AAAA的尝试,然后立即一个A决议。 在我们的命名服务器和主机上都可以清楚地看到TCPdump。

以下是S3的stream量示例

$ tcpdump dst port 53 20:28:35.259552 IP xxxx55271 > ec2-xx.amazonaws.com.domain: 21815+ AAAA? s3.amazonaws.com. (34) 20:28:35.261526 IP xxxx56058 > ec2-xx.amazonaws.com.domain: 21823+ A? s3.amazonaws.com. (34) 

它重复每个决议。 由于我们在这个过程中做了超过7000万的解决scheme,所以想要把这个中的50%作为浪费是有道理的。

我如何禁用Ubuntu中的IPv6查找?

我已经尝试将/etc/gai.conf中的优先级更改为:

 precedence ::ffff:0:0/96 45 

但是我仍然看到Ubuntu首先尝试了IPv6解决scheme。 任何帮助将不胜感激

编辑:

我的/etc/resolv.conf很简单,只有一个名称服务器:

 cat /etc/resolv.conf nameserver xxxx 

IPv6,而不是IPv4,是知识产权的前瞻性版本,你知道… IPv6很遗憾地看到你去:-(但你可以禁用它。

如果你正在使用libcURL,那么你所要做的就是:

 curl_easy_setopt(easy_handle, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); 

但是,您担心这些额外的AAAA请求所花费的时间,还是额外的networkingstream量? 我希望A和AAAA是平行的,所以你不需要担心延迟。