直接答案
Windows 上“开了代理却不生效”,要先分清是哪一类程序不生效:浏览器打不开,多数是系统代理没写入、端口不对,或浏览器扩展覆盖了系统设置;微软商店(UWP)应用不走代理,是因为系统默认禁止它们访问本机回环地址;命令行不走代理,是因为终端工具本来就不读取系统代理,需要单独设置环境变量。如果不想逐个程序处理,可以考虑客户端的 TUN 模式。
Windows 系统代理的工作方式
客户端开启“系统代理”后,会把 Windows 的代理设置改为本机地址 127.0.0.1 加上客户端的监听端口。之后,愿意读取系统代理设置的程序会把请求交给这个端口,再由客户端转发到节点。
关键在于“愿意读取”:主流浏览器默认读取系统代理,但很多程序并不读取,例如命令行工具、部分游戏和开发工具。它们不会自动走代理,这不是客户端故障,而是系统代理机制本身的局限。TUN 模式通过虚拟网卡在更底层接管流量,可以覆盖这些程序。
Windows 代理不生效的常见原因
- 系统代理没有写入或被改回:客户端开启失败,或其他软件(加速器、安全软件、另一个代理客户端)把系统代理改回了关闭状态。
- 端口不一致:系统代理里的端口与客户端实际监听的端口不同,或端口被其他程序占用导致客户端无法监听。
- 浏览器使用自己的代理设置:安装了代理切换类扩展,或浏览器被设置为不使用系统代理。
- UWP 回环限制:微软商店应用默认不能访问 127.0.0.1,因此无法使用本机代理。
- 命令行不读系统代理:CMD、PowerShell 以及大多数命令行工具需要通过环境变量或工具自己的配置指定代理。
- 防火墙拦截:Windows 防火墙或第三方安全软件阻止了客户端联网。
- 系统服务走 WinHTTP:部分系统服务使用独立的 WinHTTP 代理设置,与用户层面的代理设置不同。
判断标准:从现象判断原因
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 开了代理浏览器打不开任何网页 | 端口不一致或客户端未正常运行 | 核对系统代理端口与客户端端口是否一致 |
| 系统代理过一会儿自动关闭 | 其他软件改写了代理设置 | 关闭冲突软件,或改用 TUN 模式 |
| 一个浏览器能用,另一个不行 | 浏览器扩展或独立代理设置 | 检查该浏览器的代理扩展和网络设置 |
| 微软商店应用不走代理 | UWP 回环限制 | 为该应用解除回环限制,或使用 TUN 模式 |
| 命令行不走代理 | 终端不读取系统代理 | 设置代理环境变量,或使用 TUN 模式 |
| 客户端显示节点全部超时 | 防火墙拦截或网络问题 | 在防火墙中允许客户端联网后重试 |
| 提示端口被占用 | 另一个程序占用了监听端口 | 在客户端中更换端口,并同步修改系统代理 |
逐步排查
- 核对系统代理设置:打开“设置 > 网络和 Internet > 代理”,查看“手动设置代理服务器”是否开启,地址是否为 127.0.0.1,端口是否与客户端显示的一致。
- 确认客户端端口可用:在客户端设置中查看监听端口,如果提示端口被占用,换一个未被使用的端口,系统代理会随之更新。
- 排除软件冲突:同一时间只运行一个代理客户端,暂时关闭游戏加速器等会修改网络设置的软件。
- 检查浏览器:暂时停用代理切换类扩展,确认浏览器设置为使用系统代理;个别浏览器有独立的网络代理设置,需要单独确认。
- 处理 UWP 应用:Windows 自带的 CheckNetIsolation 工具可以为指定应用添加回环例外,部分客户端也内置了“UWP 回环解除”的图形化工具,入口以客户端实际界面为准。
- 设置终端代理:在当前终端窗口中设置 HTTP_PROXY 和 HTTPS_PROXY 两个环境变量,值为 http 协议前缀加 127.0.0.1 和客户端端口。这种设置只对当前窗口有效,关闭后失效;Git、包管理器等工具还可能有自己的代理配置项。
- 检查防火墙:在“Windows 安全中心 > 防火墙和网络保护 > 允许应用通过防火墙”中确认客户端被允许,第三方安全软件需要在其界面中单独放行。
- 考虑 TUN 模式:如果需要让所有程序都走代理,可以在客户端中开启 TUN 模式,通常需要以管理员身份运行客户端并安装虚拟网卡驱动。
以上菜单名称会随 Windows 版本变化,以系统实际界面为准。
关闭客户端后上不了网
如果客户端异常退出,系统代理可能仍然指向 127.0.0.1,而此时已经没有程序在该端口监听,结果就是所有网页都打不开。处理方法是回到“设置 > 网络和 Internet > 代理”,手动关闭“使用代理服务器”。这也是“关掉代理反而没网”的常见原因。
注意事项
- TUN 模式需要管理员权限,只对你信任的客户端授予。
- 解除 UWP 回环限制会降低该应用的网络隔离程度,只对确实需要的应用操作。
- 环境变量里的代理设置如果写入系统级别,会影响所有命令行程序,排查结束后记得清理不需要的设置。
- 不要同时开启系统代理和 TUN 模式后再叠加其他代理软件,多层代理会让排查变得困难。
- 公司电脑可能由管理员统一下发代理策略,个人修改可能被覆盖,请遵守单位的网络管理规定。