开代理后,最常见的怪现象之一:本机跑着的服务(localhost、127.0.0.1)打不开了,内网系统也连不上,但外网一切正常。不少人第一反应是服务坏了,折腾半天才发现是代理在捣乱。其实原因并不复杂:本该直连本机网络的地址,被代理规则一并接管送进了代理通道。弄懂原理,几步就能解决。
为什么开了代理,本机服务反而访问不了
开代理后,系统会按规则把流量送向代理服务器。如果规则把所有地址都交给了代理,本机回环地址(localhost、127.0.0.1)和局域网内网地址(192.168.x.x 等)也会被一起送过去。代理服务器拿到这些请求,自然找不到对应的目标,于是出现本机服务明明在跑、却打不开的怪现象。本质是:本不该走代理的地址,被规则误送进了代理通道。
内网系统连不上,是代理的问题还是系统的问题
先做隔离判断:临时关闭代理,直接访问内网地址。能访问,说明是代理规则把内网地址也接管了;还是不能访问,说明问题在系统或网络本身,与代理无关。常见的内网访问异常,多数是第一种:代理规则没有给内网地址留直连例外,所有流量一股脑进了代理。少数情况是代理服务器自身路由能力有限,转发内网请求失败。
正确的配置方式是什么
两个动作。一是在代理规则里设置直连例外:把本机回环地址(localhost、127.0.0.1)、内网网段(如 192.168.x.x、10.x.x.x)加入例外列表,让这类流量直接走本机网络,不进代理。二是注意环境变量:命令行程序读的是环境变量中的代理设置,如果变量里写了通配规则,一样会把内网地址带走;把内网地址从变量中排除即可。做完这两步,绝大多数”开了代理就访问不了本机”的问题都能解决。
| 症状 | 最可能的原因 | 处理方式 |
|---|---|---|
| localhost 打不开 | 回环地址被代理接管 | 例外列表加入本机地址 |
| 内网系统连不上 | 内网网段走了代理 | 例外列表加入内网网段 |
| 命令行程序访问异常 | 环境变量覆盖了内网 | 变量中排除内网地址 |
| 代理服务器在内网 | 其路由能力有限 | 内网目标改走直连 |
- 先确认症状范围:只有本机或内网受影响,还是所有网站都不行
- 临时关代理对照:判断问题是否与代理相关
- 配置直连例外:把本机回环地址与内网网段加入例外列表
- 修正环境变量:检查并排除变量中的内网地址
- 逐个验证:本机服务、内网系统、外网访问依次确认
代理是给外出流量服务的,本不该出门的流量,别硬塞给它。
与 IP 代理的关系:代理IP解决的是外网访问的出口问题,本机回环地址与内网地址本就不该走代理通道——配置代理IP时,把 localhost、127.0.0.1 与内网网段加入直连例外,并同步修正环境变量,才能让外网走代理、内网走直连各归其位,避免开了代理反而连不上自己服务的尴尬。
