Ubuntu

使用 dns 選項執行 CURL 時出現問題

  • May 25, 2020

我現在使用 curl 來調試我的非產品 Web 服務。

當我使用該--dns-servers選項時,我總是收到一個錯誤,提示找不到此功能:

curl --dns-servers _MY_DNS_SERVER_IP_ https://_MY_DOMAINS_
curl: (4) A requested feature, protocol or option was not found built-in in this libcurl due to a build-time decision.

我的 curl 版本是 7.47.0,在 Ubuntu 16.04 桌面上執行。

從 curl 手冊頁(關於--dns-servers選項):

This option requires that libcurl was built with a resolver backend that supports this operation.
The c-ares backend is the only such one.  (Added in 7.33.0)

是否需要安裝另一個 curl 包,或者我錯過了一些可選的依賴項?

任何提示似乎是什麼問題?

為 Debian 和 Ubuntu 建構的curl二進製文件不包含對 libc-ares 的支持。這是因為該庫無法在單個響應中同時返回 A (IPv4) 和 AAAA (IPv6) 查詢,因此如果您要連接的主機使用 IPv6 但您沒有 IPv6 支持,那麼連接就會失敗。由於這是一個相當大的缺陷(因為許多開放的 Wi-Fi 接入點沒有 IPv6),Debian 和 Ubuntu 已經編譯了它。

您可以通過 using--resolve手動指定要使用的 IP 地址來解決問題。否則,如果您需要使用此功能,則必須編譯自己的 curl。

引用自:https://unix.stackexchange.com/questions/588916