我现在使用 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 手册页:
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 包,或者我错过了一些可选的依赖项?
好的,经过大量时间试图解决这个问题,我想为将来遇到这个问题的用户回答这个问题。
根据 StackExchange 用户bk2204对我的问题的看法:
为 Debian 和 Ubuntu 构建的
curl
二进制文件不包含对 libc-ares 的支持。这是因为该库无法在单个响应中同时返回 A (IPv4) 和 AAAA (IPv6) 查询,因此如果您要连接的主机使用 IPv6 但您不支持 IPv6,则连接将失败。由于这是一个相当大的缺陷(因为许多开放的 Wi-Fi 接入点没有 IPv6),Debian 和 Ubuntu 已经编译了它。您可以通过 using
--resolve
手动指定要使用的 IP 地址来解决问题。否则,如果您需要使用此功能,则必须编译自己的 curl。链接到未来更新的问题(如果有):Problem running CURL with the dns option (Unix & Linux community)