curl --resolve 选项不起作用:“DNS 缓存中未找到主机名”

curl --resolve 选项不起作用:“DNS 缓存中未找到主机名”

在执行 HTTP 请求时,我尝试使用 curl 的--resolve选项连接到指定的 IP 地址,但 curl 一直恢复到我的本地 DNS 缓存/解析器检索到的 IP 地址。

命令:

curl -s -S -I -H "Host: example.com" --resolve example.com:80:1.1.1.1 --verbose http://example.com/

(其中example.com替换为我的域名,1.1.1.1替换为所需的目标 IP 地址)

结果:

* Added example.com:80:1.1.1.1 to DNS cache
* Hostname was NOT found in DNS cache
*   Trying 2.2.2.2...
* Connected to example.com (2.2.2.2) port 80 (#0)
> HEAD / HTTP/1.1
> User-Agent: curl/7.35.0
> Accept: */*
> Host: example.com

(其中2.2.2.2替换为我的本地 DNS 解析器中缓存的我的域名的 IP 地址)

因此,看起来 curl 尝试添加1.1.1.1到 DNS 缓存example.com,但不知何故失败并恢复到原始 IP 地址。

关于如何修复此问题或进一步排除故障以找出其不起作用的原因,您有什么想法吗?

答案1

--resolve尝试使用其他域名后,我发现问题是由选项和 URL中的域名不匹配引起的(一个有www,另一个没有)。用户错误!

错误:

curl -s -S -I -H "Host: example.com" --resolve example.com:80:1.1.1.1 --verbose http://www.example.com/

正确的:

curl -s -S -I -H "Host: example.com" --resolve example.com:80:1.1.1.1 --verbose http://example.com/

相关内容