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


4

我在尝试--resolve执行HTTP请求时尝试使用curl的选项连接到指定的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地址。

关于如何解决此问题或进一步进行故障排除以找出其无法解决的任何想法?

Answers:


3

在尝试使用其他域名进行此操作后,我发现问题是由与--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/
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.