curl 选项中的 CURLOPT_DNS_SERVERS 和 CURLOPT_DNS_LOCAL_IP4 有什么不同

What is different between CURLOPT_DNS_SERVERS and CURLOPT_DNS_LOCAL_IP4 in curl option

下面两个代码具体有什么区别?

CURL *curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin");
  curl_easy_setopt(curl, CURLOPT_DNS_SERVERS, "192.168.0.100");
  ret = curl_easy_perform(curl);
  curl_easy_cleanup(curl);
}
CURL *curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin");
  curl_easy_setopt(curl, CURLOPT_DNS_LOCAL_IP4, "192.168.0.100");
  ret = curl_easy_perform(curl);
  curl_easy_cleanup(curl);
}

主要是CURLOPT_DNS_SERVERSCURLOPT_DNS_LOCAL_IP4相关的问题。

对比https://curl.se/libcurl/c/CURLOPT_DNS_SERVERS.html and https://curl.se/libcurl/c/CURLOPT_DNS_LOCAL_IP4.html看区别,主要是:

  • “传递一个字符 *,它是要使用的 DNS 服务器列表,而不是系统默认值”for CURLOPT_DNS_SERVERS
  • “设置解析器应绑定到的本地 IPv4 地址。” CURLOPT_DNS_LOCAL_IP4

第二种情况应该很少需要,它会为任何传出 DNS 查询强制使用特定的本地 IPv4 地址(如果盒子有多个)。

第一个选项设置要联系的服务器。