在执行 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/