Skip to content

代理客户端会修改系统代理、监听本地端口,开启 TUN 模式时还会创建虚拟网卡、接管路由。这些改动和系统、安全软件、其他网络工具之间一旦冲突,就会出现「退出代理上不了网」「端口被占用」「规则不生效」等问题。本页先用「两步速查」表按症状定位冲突类型,简要讲清系统代理与 TUN 模式的工作原理后,按第一步到第十一步的顺序排查:系统代理残留、端口占用、防火墙与权限、应用各自的代理配置、PAC 与单位网络、局域网共享、规则走向,再分系统检查、对照报错、用 netstat 和 lsof 等命令诊断,最后把系统恢复到干净状态并预防冲突再次发生。

两步速查:先定位问题类型 ​

代理冲突的症状看起来都像「上不了网」,但原因分布在系统代理、端口、虚拟网卡、应用配置和规则五个层面。第一步对照下表找到最接近的症状,判断冲突在哪个层面;第二步点「先看哪一节」跳到对应步骤处理。

症状可能原因第一个动作先看哪一节
退出客户端后浏览器打不开,提示代理连接失败系统代理残留关闭系统设置中的手动代理第一步:客户端退出后检查系统代理残留
退出客户端后部分应用能用、浏览器不能用系统代理残留,只影响读取系统代理的应用同上第一步:客户端退出后检查系统代理残留
客户端启动失败,提示端口被占用另一个程序占用端口,或旧进程残留netstat -ano / lsof 查占用第二步:排查端口占用和多个网络软件冲突
Windows 上换了好几个端口都无法监听端口落在系统保留范围内查看保留端口范围第二步:排查端口占用和多个网络软件冲突
TUN 模式开不了或开了就断网权限不足、驱动未安装、安全软件拦截按客户端说明授权或加入信任第三步:检查防火墙、权限和网络接管
开了代理,终端命令仍然连不上终端不读取系统代理设置环境变量第四步:浏览器、终端和应用分别检查代理配置
关了代理,git、npm 仍然报连接本地端口失败工具配置中残留了代理地址查看并删除工具代理配置第四步:浏览器、终端和应用分别检查代理配置
某网站始终不走代理规则判定为直连,或应用不走系统代理看连接日志第七步:规则未生效或流量走向异常
国内网站变慢国内流量被送进了代理检查规则与运行模式第七步:规则未生效或流量走向异常
开代理后公司 VPN、局域网打印机失效TUN 接管路由,与其他网络工具冲突只保留一种接管方式第二步:多个工具争抢路由
手机提示无法建立 VPN 连接另一个 VPN 类应用占用,或设置了始终开启关闭其他 VPN 应用第三步:检查防火墙、权限和网络接管

名词速查

  • 系统代理:操作系统提供的一个公共代理设置,浏览器等应用读取后把请求发给指定地址(通常是客户端监听的本地端口)。
  • 本地端口:客户端在本机上开放的入口,例如 127.0.0.1:7890,应用把流量发到这里,客户端再转发出去。
  • TUN 模式:客户端创建一块虚拟网卡并修改路由,让系统几乎所有流量都先经过客户端,不依赖应用是否支持代理。
  • PAC:代理自动配置脚本,由浏览器执行,按规则决定哪些网址走代理。

核心结论 ​

核心结论

  • 退出后上不了网先查系统代理:客户端异常退出导致的代理残留是最常见原因。
  • 同一时间只跑一个网络工具:多个代理、VPN、加速器同时运行,会争抢端口、系统代理和虚拟网卡。
  • 端口冲突用命令定位:Windows 用 netstat -ano,macOS 用 lsof,找到占用进程再处理。
  • 系统代理不覆盖所有应用:终端、部分游戏和独立设置了代理的应用,需要单独配置或使用 TUN 模式。
  • 看连接日志判断流量走向:客户端连接列表里看不到请求,说明流量根本没进客户端。
  • 改动之前先记录:恢复时有据可依,避免越改越乱。

代理接管原理简述 ​

代理客户端接管流量有两种基本方式:「请应用把流量交过来」的系统代理,和「在网络层把流量截过来」的 TUN 模式。冲突的种类,基本由这两种方式各自修改了哪些系统设置决定。

两种接管方式对比 ​

对比项系统代理模式TUN 模式
修改了什么系统代理设置(地址 + 端口)新增虚拟网卡、修改路由表,通常还接管 DNS
哪些应用受影响只有读取系统代理的应用几乎所有应用,包括终端和游戏
需要的权限普通用户权限即可通常需要管理员权限、系统扩展或 VPN 授权
退出时要恢复什么把系统代理关掉删除虚拟网卡、恢复路由和 DNS
典型冲突代理残留、端口被占用、应用不走代理与其他 VPN 争抢路由、被安全软件拦截、权限不足

冲突从哪里来 ​

  • 设置未恢复:客户端崩溃、被强制结束或电脑断电时,来不及恢复它改过的设置;
  • 资源被争抢:两个工具都想监听同一个端口、都想设置系统代理、都想接管路由;
  • 范围不一致:系统代理只覆盖部分应用,用户以为「开了代理」,实际很多程序没走;
  • 第三方拦截:安全软件、防火墙把虚拟网卡或本地端口的流量当作可疑行为拦截。

理解这四类来源后,排查就有了方向:先确认有没有残留,再确认有没有争抢,然后看覆盖范围,最后排除拦截。

第一步:客户端退出后检查系统代理残留 ​

客户端开启「系统代理」时,会把系统的代理服务器设置为本机的某个端口(例如 127.0.0.1:7890)。正常退出时客户端会恢复设置;如果客户端崩溃、被强制结束或电脑直接断电,这个设置就会留在系统里,所有遵循系统代理的应用都会去连接一个已经不存在的端口。

典型症状 ​

  • 退出客户端后,浏览器提示「无法连接到代理服务器」或 ERR_PROXY_CONNECTION_FAILED;
  • 部分应用能上网(不读取系统代理),浏览器却打不开;
  • 重新打开客户端后又恢复正常。

Windows 检查与清除 ​

  1. 打开 设置 → 网络和 Internet → 代理;
  2. 在「手动设置代理」中关闭「使用代理服务器」;
  3. 如果「使用设置脚本」被打开且不是你主动设置的,一并关闭。

也可以用命令确认:

bash
# 查看当前用户的系统代理开关与地址(ProxyEnable 为 0x1 表示开启)
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer

# 查看与重置 WinHTTP 代理(部分系统服务使用,重置需要管理员权限)
netsh winhttp show proxy
netsh winhttp reset proxy

WinHTTP 代理与「设置」里的代理是两套独立的配置:前者主要供系统服务和部分后台程序使用,普通用户很少修改。如果 netsh winhttp show proxy 显示为「直接访问(没有代理服务器)」,说明这一项没有问题。

macOS 检查与清除 ​

  1. 打开 系统设置 → 网络 → 选择当前网络 → 详细信息 → 代理;
  2. 关闭不是你主动开启的网页代理(HTTP)、安全网页代理(HTTPS)、SOCKS 代理和自动代理配置。

命令行方式(把 Wi-Fi 换成你的网络服务名称,可先用第一条命令列出):

bash
# 列出所有网络服务名称
networksetup -listallnetworkservices

# 查看当前生效的代理设置
scutil --proxy

# 分别查看某个网络服务的 HTTP、HTTPS、SOCKS 代理与自动代理配置
networksetup -getwebproxy "Wi-Fi"
networksetup -getsecurewebproxy "Wi-Fi"
networksetup -getsocksfirewallproxy "Wi-Fi"
networksetup -getautoproxyurl "Wi-Fi"

# 关闭 Wi-Fi 上的 HTTP、HTTPS 和 SOCKS 代理
networksetup -setwebproxystate "Wi-Fi" off
networksetup -setsecurewebproxystate "Wi-Fi" off
networksetup -setsocksfirewallproxystate "Wi-Fi" off

scutil --proxy 输出中 HTTPEnable : 1、HTTPSEnable : 1 或 SOCKSEnable : 1 表示对应代理处于开启状态。注意要对正在使用的网络服务操作:插着网线时是以太网,用无线时是 Wi-Fi,两者的代理设置互相独立。

移动设备 ​

系统检查位置
Android设置 → 网络和互联网 → VPN,确认没有残留的「始终开启的 VPN」;在当前 Wi-Fi 的详细设置中,确认代理为「无」(菜单位置因品牌而异)
iOS / iPadOS设置 → 无线局域网 → 点当前网络右侧的 ⓘ → 配置代理,设为「关闭」;设置 → 通用 → VPN 与设备管理,检查 VPN 配置
示例场景:浏览器打不开但聊天软件正常

某用户强制结束了代理客户端,之后浏览器提示无法连接到代理服务器,而部分聊天软件可以正常收发消息。原因是聊天软件不读取系统代理,直接联网;浏览器则仍在把请求发给已经不存在的本地端口。关闭系统设置中的手动代理后,浏览器立即恢复。

第二步:排查端口占用和多个网络软件冲突 ​

代理客户端需要在本机监听端口,供浏览器和其他应用连接。如果这个端口已被别的程序占用,客户端会启动失败或提示 address already in use、「端口被占用」。

用命令找到占用端口的进程 ​

以下以端口 7890 为例,换成你的客户端实际使用的端口:

bash
# Windows:查找监听该端口的连接,最后一列是进程 PID
netstat -ano | findstr :7890

# Windows:根据 PID 查看进程名称(把 1234 换成上一步查到的 PID)
tasklist /FI "PID eq 1234"

# macOS:查看监听该端口的进程
lsof -nP -iTCP:7890 -sTCP:LISTEN

# Linux:查看监听端口及对应进程
ss -ltnp | grep 7890

PowerShell 中也可以用 Get-NetTCPConnection -LocalPort 7890 -State Listen 查看,OwningProcess 一列即为 PID。

Windows 系统保留端口 ​

在 Windows 上,即使没有任何程序占用,某些端口也可能被系统保留(常见于启用了 Hyper-V、WSL 或 Docker 的电脑),导致客户端无法监听。可用以下命令查看保留范围:

bash
netsh interface ipv4 show excludedportrange protocol=tcp

如果客户端端口落在保留范围内,在客户端设置里换一个不在范围内的端口即可。换端口后,记得同步修改手动写过该端口的地方(终端环境变量、git 配置、浏览器代理扩展等),否则它们仍会连接旧端口。

常见冲突来源 ​

冲突来源表现处理方法
同时运行两个代理客户端端口被占用、系统代理被互相覆盖只保留一个,完全退出另一个
旧进程未退出重新打开客户端时提示端口占用结束残留进程,或重启电脑
游戏加速器、其他 VPN虚拟网卡和路由互相覆盖使用代理时关闭其他网络工具
开发工具(本地服务、容器)恰好使用了相同端口修改客户端或该工具的端口
公司 VPN、远程办公软件与 TUN 模式争抢路由和 DNS二者择一,或按单位规定配置直连
浏览器代理扩展覆盖系统代理,指向错误端口停用扩展或修正其中的地址

结束进程前确认身份

用 PID 结束进程前,先确认它是哪个程序。不认识的系统进程不要随意结束,换一个端口通常是更安全的选择。

多个工具争抢路由的识别方法 ​

TUN 模式和其他 VPN 都通过修改路由表接管流量,后启动的工具通常会覆盖先启动的。可以查看路由表确认当前由谁接管:

bash
# Windows:打印路由表
route print

# macOS / Linux:打印路由表(-n 不解析主机名)
netstat -rn

如果默认路由(0.0.0.0 或 default)指向的接口不是你预期的那块网卡,或者存在多块虚拟网卡同时声明默认路由,就是争抢的迹象。处理方法是完全退出其中一个工具,而不是手动删除路由条目。

第三步:检查防火墙、权限和网络接管 ​

客户端开启 TUN 模式(也常叫增强模式、虚拟网卡模式)时,需要更高的系统权限来创建虚拟网卡、修改路由。权限不足或被安全软件拦截时,会出现模式无法开启、开启后无法上网等问题。

常见情况与处理 ​

现象可能原因处理方向
Windows 上 TUN 模式开不了没有管理员权限,或驱动 / 服务未安装按客户端说明以管理员身份运行或安装其服务组件
macOS 上无法开启增强模式尚未授权系统扩展或网络扩展按系统提示在系统设置中允许,具体位置以客户端文档为准
局域网其他设备连不上本机代理防火墙阻止了入站连接,或未开启「允许局域网连接」在客户端开启局域网访问,并在防火墙中允许该应用
开启后所有流量中断安全软件拦截虚拟网卡流量在安全软件中把客户端加入信任列表
Android 提示无法建立 VPN已有其他应用占用 VPN,或设置了始终开启的 VPN关闭其他 VPN 类应用
iOS 上代理应用连接后立即断开另一个 VPN 配置处于连接状态,或配置已失效在 VPN 与设备管理中只保留需要的配置

Windows 防火墙设置位置 ​

Windows 安全中心 → 防火墙和网络保护 → 允许应用通过防火墙,确认客户端在列表中且勾选了对应的网络类型。客户端首次运行时如果弹出防火墙提示,按你的使用场景选择允许。

公用网络与专用网络

Windows 会把网络分为专用和公用两类。在咖啡店等公共网络中,不建议为代理客户端开放局域网访问。

移动端的 VPN 独占规则 ​

手机系统同一时间只允许一个 VPN 类应用处于连接状态,后连接的会把先连接的断开。Android 的 VPN 设置中还有「始终开启的 VPN」和「屏蔽未使用 VPN 的连接」两类选项:前者会让某个应用在开机后自动占用 VPN,后者会在该 VPN 断开时阻止所有联网。如果你曾为其他应用开启过这两项,代理应用可能无法连接,或在关闭代理后整台手机断网。

第四步:浏览器、终端和应用分别检查代理配置 ​

「系统代理」只是一个公共设置,各个应用是否遵循它由应用自己决定。这就是为什么浏览器能用,终端、某些应用却不行。

各类应用如何获取代理 ​

应用类型代理来源说明
Chrome、Edge、Safari系统代理默认跟随系统设置,代理扩展可覆盖
Firefox自身设置在 设置 → 常规 → 网络设置 中可选择「使用系统代理设置」或手动配置
终端与命令行工具环境变量或自身配置多数不读取系统代理
git、npm 等开发工具自身配置文件可能单独写死了代理地址
游戏和部分客户端软件通常不支持代理需要 TUN 模式才能接管
WSL、虚拟机、容器各自独立的网络环境需要在其内部单独配置,具体以对应软件文档为准

浏览器内的检查 ​

  • Chrome / Edge:地址栏打开 chrome://net-internals/#proxy(Edge 为 edge://net-internals/#proxy),可以看到浏览器当前实际使用的代理设置,并有重新应用设置、清除失败代理记录的按钮;
  • Firefox:设置 → 常规 → 网络设置,确认是否被改成了手动代理;
  • 代理扩展:停用所有代理类扩展后再测,排除扩展覆盖系统代理的情况。

终端代理的检查与设置 ​

bash
# macOS / Linux:查看当前终端的代理环境变量
env | grep -i proxy

# 临时为当前终端设置代理(端口换成客户端实际端口)
export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890

# 不需要走代理的地址(本机与局域网示例)
export no_proxy=localhost,127.0.0.1

# 取消
unset http_proxy https_proxy all_proxy no_proxy

Windows PowerShell 中可用 Get-ChildItem Env:*proxy* 查看,用 $env:HTTPS_PROXY="http://127.0.0.1:7890" 临时设置。上面的设置只对当前窗口有效,关闭终端即失效;如果你把它写进了 ~/.zshrc、~/.bashrc 或 Windows 的用户环境变量,退出代理后它仍然生效,这是「关了代理终端反而连不上」的常见原因。

大小写的差别

不同程序读取的环境变量名称不完全一致:有的只认小写,有的大小写都认。例如 curl 出于安全考虑只读取小写的 http_proxy。为稳妥起见,排查时大小写两种写法都检查一遍。

开发工具的残留代理 ​

退出代理后 git 或 npm 报连接失败,常见原因是之前写入了代理配置:

bash
# 查看 git 全局代理配置,有输出说明设置过
git config --global --get http.proxy
git config --global --get https.proxy

# 删除 git 全局代理配置
git config --global --unset http.proxy
git config --global --unset https.proxy

# 查看 npm 代理配置
npm config get proxy
npm config get https-proxy

# 删除 npm 代理配置
npm config delete proxy
npm config delete https-proxy

第五步:排查 PAC、自动检测与单位网络环境 ​

除了手动代理,系统还支持「自动检测设置」和「使用设置脚本」(PAC)两种自动方式;它们与客户端写入的手动代理叠加时,浏览器的实际行为可能和你在客户端里看到的不一致。排查时要把三种设置一起看,而不是只看手动代理开关。

三种代理设置的关系 ​

设置作用常见问题
自动检测设置浏览器尝试在网络中自动发现代理配置在某些网络中会拖慢首次连接;在单位网络中通常由管理员开启
使用设置脚本(PAC)按脚本中的规则决定哪些网址走哪个代理脚本地址失效时可能导致所有网页打不开,Chrome 报 ERR_MANDATORY_PROXY_CONFIGURATION_FAILED
手动设置代理所有请求都发给指定的地址和端口客户端退出后残留

部分客户端提供以 PAC 方式设置系统代理的选项。如果你曾使用过这种方式,退出客户端后要额外检查「使用设置脚本」是否仍指向本机地址。macOS 上对应的是网络代理设置中的「自动代理配置」,可用 networksetup -getautoproxyurl 查看。

单位或学校网络 ​

在公司、学校等由管理员管理的网络和设备上,代理、DNS 和防火墙设置往往由统一策略下发,部分选项会显示为灰色、无法修改,或修改后被自动恢复。这种情况下:

  • 不要尝试绕过或删除单位下发的策略和证书;
  • 系统代理被策略锁定时,个人安装的客户端可能无法写入系统代理,属于预期行为;
  • 有工作需要时,向网络管理员咨询合规的使用方式,并遵守单位规定和所在地法律法规。
示例场景:开启 TUN 后公司 VPN 断开

某用户在家办公时先连接了公司 VPN,又开启了代理客户端的 TUN 模式,随后公司内网系统全部无法访问。查看 route print 发现默认路由被后启动的虚拟网卡接管,公司 VPN 的路由失效。退出代理客户端后重新连接公司 VPN,内网恢复。这类冲突的根本解决方法是同一时间只使用一种接管方式。

第六步:局域网共享与其他设备连接本机代理 ​

让手机、平板或其他电脑通过本机客户端上网时,冲突点从「本机」扩展到了「局域网」:本机客户端要允许局域网连接,本机防火墙要放行入站流量,其他设备要填对本机的局域网 IP 和端口。任何一环不满足,表现都是「其他设备连不上」。

排查步骤 ​

  1. 在客户端中开启「允许局域网连接」类选项(名称以客户端为准);
  2. 在本机运行 ipconfig(Windows)或 ifconfig(macOS)查到本机的局域网 IP,通常为 192.168.x.x;
  3. 确认本机防火墙允许客户端在当前网络类型下接收入站连接;
  4. 在其他设备的 Wi-Fi 代理设置中填写本机局域网 IP 和客户端端口;
  5. 在其他设备上访问网页测试,同时观察本机客户端连接日志中是否出现来自该设备的请求。

常见失败原因 ​

现象原因
其他设备提示无法连接代理未开启局域网连接,或防火墙拦截了入站
本机日志里看不到其他设备的请求填写的 IP 或端口错误,或两台设备不在同一网段
隔一段时间就失效本机局域网 IP 变化(由路由器动态分配)
在公共 Wi-Fi 中无法互通公共网络通常开启了设备隔离

不要在公共网络开放局域网连接

在公共 Wi-Fi 中开放本机代理端口,同一网络中的陌生设备也可能连接并使用你的代理。只在可信的家庭网络中使用此功能,用完及时关闭。

第七步:规则未生效或流量走向异常,看连接日志 ​

客户端运行正常,但某些网站没有走代理,或国内网站被送进了代理,这类问题出在分流规则或代理接管范围上。

排查顺序 ​

  1. 确认运行模式:客户端处于「规则」「全局」还是「直连」模式。切换到全局,如果问题消失,说明是规则匹配问题。
  2. 查看连接日志:大多数客户端有「连接」或「日志」页面,能看到每个请求命中了哪条规则、走了哪个节点。
  3. 确认流量是否经过客户端:连接列表里根本看不到该应用的请求,说明这个应用没有使用系统代理,需要 TUN 模式或单独配置。
  4. 检查浏览器扩展和安全 DNS:代理扩展会绕过系统代理;浏览器的安全 DNS 可能让客户端无法按域名分流。
  5. 检查自定义规则顺序:规则通常从上到下匹配,靠前的宽泛规则会让后面的规则失效。

常见现象对照 ​

现象可能原因
某网站始终直连规则把它判定为直连,或应用不走系统代理
国内网站很慢国内流量被规则送进了代理
全局模式正常、规则模式异常规则缺失或顺序有误,更新订阅或规则集
连接日志中看不到请求流量没有经过客户端
日志里只有 IP 没有域名应用自己完成了解析,客户端只能按 IP 匹配规则

分流规则的基本原理,见 代理与分流;规则配置方法,见 客户端配置教程;与 DNS 相关的分流异常,见 DNS 解析问题。

第八步:分系统排查步骤 ​

下面把前面各节的检查按系统串成一条完整路径,适合「不知道从哪开始」时从头执行。每一步都写明了正常应该看到什么,出现异常就在这一步停下来处理。

Windows 10 / 11 ​

  1. 在系统托盘和任务管理器中确认只运行了一个代理类工具,没有残留进程;
  2. 设置 → 网络和 Internet → 代理,确认「使用代理服务器」与客户端状态一致(客户端退出时应为关闭);
  3. 管理员命令提示符运行 netsh winhttp show proxy,正常应为直接访问;
  4. 运行 netstat -ano | findstr :端口号 检查端口占用,必要时查看保留端口范围;
  5. 运行 ipconfig /all,确认物理网卡的 DNS 没有被改成失效地址;
  6. 检查 Windows 安全中心和第三方安全软件,确认客户端未被拦截;
  7. 在终端中用 Get-ChildItem Env:*proxy* 检查环境变量是否有残留;
  8. 启动客户端,先用系统代理模式和默认配置测试。

macOS ​

  1. 在菜单栏和「活动监视器」中确认只运行了一个代理类工具;
  2. 运行 scutil --proxy,确认代理开关状态与客户端一致;
  3. 在 系统设置 → 网络 中逐个检查正在使用的网络服务的代理和 DNS;
  4. 运行 lsof -nP -iTCP:端口号 -sTCP:LISTEN 检查端口;
  5. 运行 scutil --nc list 列出系统中的 VPN 配置,确认没有其他处于连接状态的 VPN;
  6. 在 系统设置 → 通用 → 登录项与扩展(不同系统版本名称和位置可能不同)中检查网络扩展是否已允许;
  7. 检查 ~/.zshrc 等启动文件中是否写死了代理环境变量;
  8. 启动客户端,先用默认配置测试。

Linux ​

  1. 运行 ps aux | grep -i 加客户端名称,确认没有重复进程;
  2. 运行 env | grep -i proxy 检查环境变量,并检查 ~/.bashrc、~/.profile 等文件;
  3. 桌面环境的网络代理设置(如 GNOME 设置中的「网络代理」)与终端环境变量相互独立,两处都要检查;
  4. 运行 ss -ltnp 检查端口占用;
  5. 运行 ip route 查看默认路由是否被其他工具接管。

Android ​

  1. 设置 → 网络和互联网 → VPN,确认只有一个代理应用,关闭其他应用的「始终开启的 VPN」;
  2. 在当前 Wi-Fi 的高级设置中确认代理为「无」;
  3. 检查电池优化设置:系统可能在后台杀掉代理应用,导致 VPN 状态异常,可把代理应用设为不受限制(菜单位置因品牌而异);
  4. 重新连接代理应用测试。

iOS / iPadOS ​

  1. 设置 → 通用 → VPN 与设备管理,确认只有需要的 VPN 配置,且没有其他处于连接状态的配置;
  2. 设置 → 无线局域网 → ⓘ → 配置代理,确认为「关闭」;
  3. 关闭再开启代理应用,必要时删除其 VPN 配置后由应用重新添加。

第九步:对照报错信息 ​

下表集中列出与代理冲突相关的常见报错。Chrome 错误代码取自 Chromium 源码的错误列表,curl 错误号参考 curl 官方文档,其他浏览器和客户端的提示文字因版本和语言而异,以实际显示为准。

浏览器 ​

来源报错代码或提示含义处理方向
Chrome / EdgeERR_PROXY_CONNECTION_FAILED无法连接到代理服务器客户端是否运行、系统代理是否残留、端口是否一致
Chrome / EdgeERR_TUNNEL_CONNECTION_FAILED已连上代理,但无法通过代理建立隧道节点状态、规则,见 节点连接失败
Chrome / EdgeERR_MANDATORY_PROXY_CONFIGURATION_FAILED强制使用的代理配置(如 PAC)失败检查「使用设置脚本」是否指向失效地址
Chrome / EdgeERR_CONNECTION_REFUSED连接被拒绝端口无人监听,或连接被防火墙拒绝
Chrome / EdgeERR_CONNECTION_RESET连接被重置节点、网络干扰或安全软件
Firefox「代理服务器拒绝连接」类提示无法连接到所配置的代理检查 Firefox 自身的网络设置与客户端状态
Safari无法连接服务器类提示可能为系统代理指向失效端口检查系统代理

客户端与命令行 ​

来源报错文本含义
客户端日志address already in use / bind: ...监听端口已被占用
客户端日志权限不足、无法创建 TUN 设备类提示TUN 模式缺少权限、驱动或系统扩展授权
curlcurl: (5) Could not resolve proxy代理地址无法解析,多为环境变量写错
curlcurl: (7) Failed to connect to 127.0.0.1 port ...本地端口无人监听,客户端未运行或端口不一致
curlcurl: (56) ...接收数据失败,常见于代理中途断开
curlcurl: (97) ...与代理握手出错,常见于代理类型写错(如把 SOCKS 端口当 HTTP 用)
git无法连接 127.0.0.1 某端口git 配置中残留了代理地址
Windows 系统端口在保留范围内导致监听失败见 Windows 系统保留端口

第十步:进阶诊断命令 ​

前面各节的命令已覆盖常见场景,下面把更细致的检查集中在一起,适合需要精确定位或提交反馈的情况。除特别注明的「重置」类命令外,以下都是只读命令。

验证本地端口与代理链路 ​

bash
# 通过客户端本地端口请求测试地址,返回 204 说明代理链路可用
curl -I -x http://127.0.0.1:7890 https://www.gstatic.com/generate_204

# 显式绕过所有代理,测试直连是否正常
curl -I --noproxy "*" https://www.baidu.com

# 通过 SOCKS5 端口测试(端口换成客户端实际的 SOCKS 端口)
curl -I -x socks5h://127.0.0.1:7890 https://www.gstatic.com/generate_204

Windows 的 PowerShell 中请输入 curl.exe。socks5h 表示由代理端解析域名,socks5 表示由本机解析,两者结果不同可以帮助判断是否与 DNS 有关。很多客户端提供同时支持 HTTP 和 SOCKS 的混合端口,具体以客户端设置为准。

查看虚拟网卡与路由 ​

bash
# Windows PowerShell:列出网卡,查看是否有多块虚拟网卡处于启用状态
Get-NetAdapter

# Windows:打印路由表
route print

# macOS:查看网络接口(TUN 模式常见为 utun 开头的接口)
ifconfig

# macOS / Linux:打印路由表
netstat -rn

系统代理的完整状态 ​

系统命令关注点
Windowsreg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"ProxyEnable、ProxyServer、AutoConfigURL
Windowsnetsh winhttp show proxy是否为直接访问
macOSscutil --proxyHTTPEnable、HTTPSEnable、SOCKSEnable、ProxyAutoConfigEnable
macOSnetworksetup -getautoproxyurl "Wi-Fi"是否设置了不认识的 PAC 地址
Linuxenv | grep -i proxy环境变量

重置网络栈(最后手段) ​

以下 Windows 命令会把 Winsock 目录和 TCP/IP 设置恢复为默认,需要管理员权限,执行后必须重启。它可能影响依赖网络组件的其他软件(如部分 VPN、安全软件),只有在常规恢复步骤都无效时才使用,执行前先记录手动配置过的 IP 和 DNS:

bash
netsh winsock reset
netsh int ip reset

macOS 没有对应的一键命令,通常通过删除并重新添加网络服务、或重启设备来达到类似效果。

第十一步:恢复原配置并验证正常连接 ​

当你改了很多地方、已经说不清哪里出了问题时,最有效的方法是把系统恢复到干净状态,再一步一步重新开启代理。

恢复步骤 ​

  1. 完全退出所有代理、VPN 和加速器,必要时在任务管理器或活动监视器中确认没有残留进程;
  2. 关闭系统代理:按本页「系统代理残留」一节的方法检查并清除;
  3. 恢复 DNS 为自动获取:见 DNS 解析问题;
  4. 清理终端和开发工具的代理配置;
  5. 重启设备,让虚拟网卡和路由表恢复默认;
  6. 验证直连正常:不开任何代理,确认国内网站能正常访问;
  7. 重新开启一个客户端,先用默认配置和系统代理模式测试,正常后再按需开启 TUN 模式或自定义规则。

验证代理是否正常 ​

bash
# 通过客户端本地端口请求测试地址,返回 204 说明代理链路可用
curl -I -x http://127.0.0.1:7890 https://www.gstatic.com/generate_204

Windows 的 PowerShell 中请输入 curl.exe。命令成功而浏览器失败,问题在浏览器或系统代理;命令失败,问题在客户端、节点或订阅,可参考 节点连接失败。

不要从来源不明的地方下载「一键修复」工具

网上流传的网络修复脚本和工具可能修改系统设置或捆绑恶意程序。本页列出的都是系统自带命令,优先使用系统设置和官方客户端提供的功能。

预防冲突的习惯 ​

  • 用菜单正常退出客户端:不要直接在任务管理器结束进程,关机前先退出客户端;
  • 只安装一个代理客户端:需要切换时先完全卸载或退出另一个;
  • 固定一个不在保留范围内的端口,并在一个地方记录它被写进了哪些配置;
  • 终端代理按需临时设置:尽量用 export 临时设置,而不是写进启动文件;
  • TUN 模式与其他 VPN 不同时开启:公司 VPN、加速器、远程办公工具使用时先关代理;
  • 只从官方渠道下载客户端,见 客户端下载,并请遵守所在地法律法规与单位网络规定。

一页排查清单 ​

按顺序逐项核对,每一项都能对应到本页的某一节;全部核对完仍然异常,问题大概率不在本机系统,而在客户端本身、节点或订阅:

  • 只运行了一个代理、VPN 或加速器类工具,没有残留进程;
  • 客户端退出状态下,系统手动代理、设置脚本、自动代理配置均已关闭;
  • WinHTTP 代理为直接访问(Windows);
  • 客户端监听端口没有被占用,也不在系统保留范围内;
  • 物理网卡的 DNS 为自动获取,没有指向失效的本地地址;
  • TUN 模式所需的管理员权限、驱动或系统扩展已授权,安全软件未拦截;
  • 终端环境变量、shell 启动文件、git 与 npm 配置中没有残留代理地址;
  • 浏览器没有启用会覆盖系统代理的扩展;
  • 客户端连接日志中能看到目标应用的请求,并命中了预期的规则;
  • 用 curl 通过本地端口访问测试地址能得到正常响应。

清单中的每一项都只需要一两条命令或一次设置查看,完整走一遍通常只要十几分钟,比反复重装客户端更高效。

何时联系服务商或客户端开发者 ​

  • 恢复干净环境后,只运行一个客户端、使用默认配置仍然异常:如果是节点或订阅问题,联系服务商;
  • 客户端本身无法启动、TUN 模式反复失败:查看客户端的官方文档或问题反馈渠道。

反馈时附上这些信息

系统版本类别(如 Windows 11、macOS)、客户端名称、运行模式(系统代理或 TUN)、完整报错或日志原文、netstat / lsof 的端口检查结果,以及你已经做过的恢复步骤。注意遮挡订阅链接和账号信息。

常见问题 ​

退出代理客户端后电脑上不了网怎么办?

多数是系统代理残留:客户端异常退出时没有把系统代理关掉,所有请求仍被发往已经不存在的本地端口。到系统的代理设置里关闭手动代理,或重新打开客户端再正常退出即可。

客户端提示端口被占用是什么意思?

说明另一个程序已经在使用客户端想监听的本地端口,常见于同时运行了两个代理工具或旧进程没有完全退出。用 netstat 或 lsof 找到占用端口的进程,结束它或在客户端里换一个端口。

为什么浏览器能走代理,终端里的命令却不行?

大多数命令行工具不读取系统代理设置,而是读取 http_proxy、https_proxy 等环境变量或自身的配置。需要单独为终端设置环境变量,或使用客户端的 TUN 模式。

可以同时开两个代理或 VPN 软件吗?

不建议。多个软件会争抢系统代理设置、本地端口和虚拟网卡,手机上同一时间也只能有一个 VPN 生效。排查问题时只保留一个网络工具运行。

Chrome 提示 ERR_PROXY_CONNECTION_FAILED 和 ERR_TUNNEL_CONNECTION_FAILED 有什么区别?

前者表示浏览器连不上设置的代理服务器本身,多为客户端没运行或系统代理残留;后者表示已经连上代理,但代理没能建立到目标网站的隧道,问题多在节点或规则。

明明没开代理,为什么 git 或 npm 还在连 127.0.0.1?

这些工具有自己的配置文件,之前写入的代理地址不会随客户端退出而消失。用 git config --global --get http.proxy 和 npm config get proxy 查看,有输出就删除对应配置。

开启 TUN 模式后公司 VPN 或局域网访问失效怎么办?

TUN 模式会接管路由,可能与其他 VPN 或内网路由冲突。同一时间只使用一种接管方式,确需同时使用时,应在客户端中把内网地址段和公司域名设为直连,具体以客户端文档和单位网络规定为准。

网上的一键网络修复工具能用吗?

不建议使用来源不明的工具,它们可能修改系统设置或捆绑恶意程序。本页列出的系统自带命令和设置已能覆盖常见问题,重置网络栈前还应先记录现有配置。

延伸阅读 ​

更新记录 ​

日期变更
2026-10-07首次发布完整内容
2026-10-07扩写为深度指南
2026-10-08按搜索结果页结构调整:开头加「两步速查:先定位问题类型」表,正文小标题改为第一步到第十一步的排查顺序

本专题文章 ​

暂无文章,敬请期待。