使用 dns 选项运行 CURL 时出现问题

使用 dns 选项运行 CURL 时出现问题

我现在使用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 包,或者我错过了一些可选的依赖项?

有任何提示似乎是什么问题吗?

答案1

为 Debian 和 Ubuntu 构建的二进制文件curl不包含对 libc-ares 的支持。那是因为那个图书馆无法返回A (IPv4) 和 AAAA (IPv6) 查询都在一个响应中,因此,如果您要连接的主机使用 IPv6,但您没有 IPv6 支持,则连接就会失败。由于这是一个相当大的缺陷(因为许多开放的 Wi-Fi 接入点没有 IPv6),Debian 和 Ubuntu 已经将其编译出来。

您也许可以通过--resolve手动指定要使用的 IP 地址来解决问题。否则,如果您需要使用此功能,则必须编译自己的curl。

相关内容