A-Record
在 libcurl 中禁用 AAAA 查找
在我們的大地圖減少過程中,我們有一個步驟來進行 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)
它對每個解析度重複。由於我們在此過程中進行了超過 7000 萬次解析度,因此希望將其中的 50% 視為浪費是有意義的。
如何在 Ubuntu 中禁用 IPv6 查找?
我嘗試將 /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 是並行完成的,所以您不必擔心延遲。