You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

curl为何尝试连接localhost而非访问公网?问题排查与解决

解决 curl 强制连接 localhost 而非目标地址的问题

问题现象

你已经确认网络连接正常(ifconfig输出显示无线网卡wlp3s0获取到有效IP,且有正常的数据包收发),但执行curl命令时却出现连接127.0.0.1:8888被拒绝的错误:

user5@system5:~$ curl -L https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (7) Failed to connect to 127.0.0.1 port 8888: Connection refused
gpg: no valid OpenPGP data found.

而之前curl是可以正常使用的,说明问题出在后续的配置变更上。

排查过程

  1. 排除hosts解析问题:检查/etc/hosts内容,配置正常,没有把目标域名错误指向localhost:
127.0.0.1 localhost
127.0.1.1 system5.
  1. 排除DNS配置问题/etc/network/interfaces仅包含本地回环配置,无异常DNS设置,排除解析失败的可能。
  2. 检查系统代理配置:执行env命令后发现http_proxy环境变量被设置为127.0.0.1——这就是核心问题:系统全局启用了HTTP代理,curl默认会遵循这个配置,尝试通过localhost的代理服务发起请求。

问题根源

你之前安装了Fiddler,虽然仅为Firefox单独配置了代理,但Fiddler同时修改了系统级的代理设置。当代理服务未运行或配置异常时,curl就会出现连接localhost被拒绝的错误。

解决方法

通过GNOME图形界面重置系统代理为无代理模式:

  • 打开系统设置,进入网络选项下的网络代理页面
  • 选择模式,点击应用到系统全局
  • 重启电脑后,curl即可恢复正常直接请求目标地址。

内容的提问来源于stack exchange,提问作者SeaDude

火山引擎 最新活动