分类目录归档:故障排查

常见问题、错误代码与解决方案汇总

Clash开启后某些软件不能联网 – 原因与解决办法

不知道大家有没有碰到过这种情况:Clash开着,浏览器上网一切正常,但某个软件就是连不上网,或者更新失败。关了Clash反而好了,一开就不行。

我当初碰到这个问题的时候,特别懵——明明浏览器都能上,凭啥你这个软件就不行?后来折腾了好久才搞明白,不同的软件获取代理的方式不一样,不是所有软件都乖乖走系统代理的。

今天就来唠唠这个问题,为什么有的软件不走路子,以及怎么让它们都用上代理。

先搞清楚:哪些软件容易出问题?

不是所有软件都会碰到这个问题。容易出问题的一般是这几类:

1. UWP应用(微软商店的应用)

比如微软商店、Xbox、Forza、各种UWP版的QQ、微信什么的。这些应用默认是不走系统代理的,或者说走得很别扭。

2. 游戏客户端

Steam、Epic、Origin、各种网游客户端。有些游戏客户端不走系统代理,或者只走部分流量。

3. 命令行工具

pip、npm、git、curl这些命令行工具,很多默认不走系统代理,需要单独配置。

4. 一些比较老的软件

有些老软件根本不支持系统代理,只能直连或者自己配置代理。

5. 企业级软件

比如Outlook、Teams、一些公司内部的软件,可能有自己的网络设置,不理会系统代理。

先看看你出问题的软件属于哪一类,然后我们接着往下看。

原因一:软件不走系统代理

这个是最常见的原因。

Clash开的”系统代理”,只是改了系统的代理设置。但不是所有软件都会去读系统代理设置。有些软件就是头铁,非要直连,你能怎么办。

为什么有的软件不走系统代理

  • 软件自己设计的:有些软件就是不支持系统代理,需要手动在软件里配置
  • UWP应用的限制:微软的UWP应用有网络隔离,默认不能访问本地回环地址,而Clash的代理端口就在本地
  • 服务类程序:以系统服务运行的程序,用的是系统账户的网络设置,不是当前用户的

怎么判断是不是这个原因

很简单:在出问题的软件里,看看有没有代理设置的选项。如果有,手动配置一下Clash的代理地址(一般是127.0.0.1:7890),看看能不能用。

配置了就能用,说明就是这个问题。配置了还是不行,那继续往下排查。

原因二:UWP应用的网络隔离

这个是Windows上特有的问题,坑了不少人。

UWP应用(就是微软商店下载的那些)有个叫”网络隔离”的东西,默认不允许访问localhost(本地回环地址)。而Clash的代理端口就是在localhost上的,所以UWP应用默认是连不上Clash的。

表现就是:桌面版的软件都正常,UWP应用全部上不了网。

怎么解决

方法一:用Clash的UWP工具

Clash for Windows自带了一个UWP工具,在”Tool”页面里,点一下”UWP Loopback”,然后把你要代理的UWP应用打勾,保存就行。

这个工具本质上就是改了Windows的网络隔离设置,允许这些UWP应用访问本地回环地址。

方法二:用命令行工具

如果你用的Clash客户端没有这个功能,可以用微软官方的CheckNetIsolation工具,命令行操作:

# 查看所有UWP应用的SID
CheckNetIsolation.exe LoopbackExempt -s

# 添加豁免(把SID换成你要加的应用的SID)
CheckNetIsolation.exe LoopbackExempt -a -p=SID

不过命令行比较麻烦,还是建议用Clash自带的图形化工具,方便。

方法三:开TUN模式

开了TUN模式之后,所有流量都会被虚拟网卡接管,就不存在UWP不UWP的问题了,所有应用都能走代理。

不过TUN模式配置起来麻烦一点,而且性能上会有点损耗。如果你有很多UWP应用需要代理,TUN模式倒是一劳永逸的办法。

原因三:软件的代理设置不对

有些软件虽然支持代理,但配置得不对,也会连不上。

常见的情况

代理类型不对

Clash的混合端口(mixed-port)支持HTTP、SOCKS5等多种代理协议,但有些软件只支持特定类型的代理。如果软件里选的代理类型不对,就会连不上。

一般来说,HTTP代理兼容性最好,大部分软件都支持。SOCKS5支持的软件少一点,但功能更强(支持UDP)。

代理地址填错了

127.0.0.1写成了localhost,或者端口号填错了,这种低级错误但真的很多人犯。

开了PAC但规则不对

有些软件支持PAC自动代理,但PAC脚本的规则不对,导致该走代理的没走,不该走的走了。

怎么排查

在软件的代理设置里,手动配置成127.0.0.1,端口填Clash的混合端口(默认7890),代理类型选HTTP。保存了试试能不能用。

如果手动配置了能用,那就是之前的设置不对。如果手动配置了还是不行,那继续往下看。

原因四:规则匹配错了

这个也挺常见的。Clash的规则没配对,导致某些软件的流量走到了错误的策略上。

比如:
– 该走代理的域名走到直连去了,结果连不上
– 该直连的走到代理去了,结果速度很慢或者连不上

怎么排查

打开Clash的日志面板,然后用出问题的软件发起一个连接,看看日志里匹配到了哪条规则、走了哪个策略。

如果匹配到的规则不对,那就是规则的问题,去调整规则就行。

常见的规则问题

规则顺序不对

Clash的规则是从上往下匹配的,匹配到第一条就停了。如果你把范围大的规则写在前面,可能会把后面更精确的规则覆盖掉。

规则写错了

域名写错了,或者规则类型用错了(比如DOMAIN写成了DOMAIN-SUFFIX),都可能导致匹配不正确。

GEOIP不准确

有些域名的服务器IP在国内,但服务本身是国外的,GEOIP判断成国内走了直连,结果连不上。这种情况需要手动加规则。

原因五:TUN模式的问题

如果你开了TUN模式,某些软件不能联网可能跟TUN的配置有关。

常见的TUN问题

路由表不对

TUN模式需要改系统路由表,如果路由配置不对,有些流量可能不会走到虚拟网卡。

DNS的问题

TUN模式下,如果DNS配置不对,某些软件可能解析不了域名,表现为连不上网。

跟其他软件冲突

如果同时开了别的VPN软件、网游加速器什么的,它们可能会抢路由表,导致冲突。

排查方法

先把TUN模式关了,用系统代理模式试试。如果关了TUN就好了,那就是TUN的问题。再去调整TUN的配置。

原因六:软件本身的问题

有些软件有自己的网络逻辑,可能会绕过系统代理,或者有自己的一套东西。

常见的情况

游戏的反作弊系统

有些游戏的反作弊系统会检测代理、VPN之类的,发现了就不让你连,防止作弊。

企业软件的安全策略

一些公司的内部软件,强制只能用公司网络,检测到代理就断开。

爬虫/下载工具

有些工具自带代理池或者多线程下载,可能部分连接走代理部分不走,表现为时好时坏。

怎么应对

这种情况就比较难办了,因为是软件本身的限制。如果是游戏的话,可以试试用TUN模式,让代理更”透明”一点,说不定能混过去。

但不建议为了玩游戏绕过反作弊,封号了得不偿失。

原因七:端口被软件自己占用了?不对

等等,这里说一个容易搞混的。

不是软件被占用了端口,而是有些软件会自己监听端口,或者有自己的网络栈。不过这个一般不会导致”不能联网”,最多是冲突。

这个不是重点,简单提一下就行。

通用解决方法汇总

说了这么多原因,给大家整理几个通用的解决方法,按顺序试:

方法一:给软件手动配置代理

如果软件有代理设置,直接手动配上Clash的地址:127.0.0.1:7890,类型选HTTP或者SOCKS5。

这是最简单的方法,能用就用。

方法二:开TUN模式

TUN模式是终极解决方案,因为它是在系统层面接管流量,不管软件支不支持代理,只要它走系统网络,就会被TUN模式接管。

如果很多软件都不走系统代理,直接开TUN模式最省心。

但TUN模式配置起来稍微麻烦一点,而且需要管理员权限。

方法三:用代理转换工具

有些软件只支持特定类型的代理,可以用privoxy之类的工具做代理转换,把SOCKS5转成HTTP,或者反过来。

不过这个比较进阶,一般用不上。

方法四:给命令行工具设环境变量

命令行工具一般读环境变量里的代理设置。Windows的话,可以在环境变量里加:

HTTP_PROXY=http://127.0.0.1:7890
HTTPS_PROXY=http://127.0.0.1:7890

或者在PowerShell里临时设置:

$env:HTTP_PROXY="http://127.0.0.1:7890"
$env:HTTPS_PROXY="http://127.0.0.1:7890"

设完了在当前终端里运行的命令就会走代理了。

几个常见软件的具体解决方法

说几个经常被问到的软件怎么处理。

Steam

Steam的话,设置里有个”网页浏览器”的代理设置,但那个只管Steam的内置浏览器,不管下载和游戏连接。

要让Steam完全走代理,最简单的办法是开TUN模式。或者在Steam的快捷方式里加启动参数:-tcp,强制用TCP连接,配合系统代理有时候能行。

各种网游

网游的话,一般建议用TUN模式,而且要开UDP转发。很多游戏用的是UDP协议,系统代理模式不支持UDP,TUN模式才行。

但注意,有些游戏的反作弊会检测代理,用了可能封号,自己权衡。

微软商店/UWP应用

前面说过了,用Clash的UWP Loopback工具,把需要的应用加到豁免里就行。或者直接开TUN模式,一劳永逸。

Git/Git命令行

git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890

如果是SSH协议的,还要另外配置SSH的代理。

pip/npm

这些可以设环境变量,或者在各自的配置文件里设置代理。

最后说两句

某些软件不能联网这个问题,说穿了就是两个原因:要么软件不走系统代理,要么规则没配对。

大部分情况下,开个TUN模式就能解决。TUN模式虽然配置起来麻烦一点,但真的省心,什么软件都能走代理。

如果不想开TUN,那就根据具体的软件,找到对应的解决方法,手动配置一下。

希望这篇文章能帮到你。如果你碰到的软件不在上面说的里面,欢迎在评论区留言,大家一起讨论。

FAQ

为什么浏览器能上网但其他软件不行?

因为浏览器一般会读取系统代理设置,所以Clash开了系统代理之后浏览器就能用。但很多其他软件不读系统代理,或者有自己的网络设置,所以就上不了网。

开了TUN模式之后所有软件都能走代理吗?

基本上是的。TUN模式是在系统层面创建虚拟网卡,所有网络流量都会经过这个虚拟网卡,不管软件支不支持代理。但也有极少数软件会绕过系统网络栈直接跟网卡交互,这种就没办法了,不过非常少见。

怎么让某个特定的软件不走代理?

在Clash的规则里,可以按进程名来匹配规则,把特定软件的流量设置为直连。Clash Meta支持PROCESS-NAME规则类型,可以精确控制某个程序走不走代理。

手机上Clash也会有这个问题吗?

手机上的情况不太一样。安卓上如果用的是VPN模式(大部分Clash客户端默认都是),那所有流量都会走VPN,不存在这个问题。iOS上也是类似,用VPN配置的话是全局的。但如果是用代理模式,那也会有部分应用不走代理的问题。

为什么有的软件开了代理反而更慢或者连不上?

可能是这些软件的服务器在国内,走代理反而绕远路了。可以在Clash规则里把这些软件的域名或者进程名设置为直连,让它们不走代理,速度反而更快。

Clash导致浏览器打不开网页怎么办 – 原因与解决

这个问题真的太经典了——Clash一开,浏览器就打不开网页,显示”无法访问此网站”或者”连接超时”。把Clash一关,立马就好了。

我刚用Clash的时候,被这个问题折磨了整整两天。一会儿以为是浏览器坏了,一会儿以为是Clash有问题,各种重装,最后发现居然是浏览器代理插件跟系统代理冲突了。

今天就把我踩过的坑都整理出来,帮大家快速定位问题。

先搞清楚是哪种情况

浏览器打不开网页,这个描述太宽泛了。先搞清楚具体是什么情况,排查方向完全不一样。

情况一:所有网站都打不开

开了Clash之后,不管什么网站都打不开,Google、百度全不行。这种一般是代理配置的问题。

情况二:国外网站打不开,国内正常

国内网站能上,Google、YouTube这些上不去。这种是代理没生效或者节点有问题。

情况三:只有某个浏览器不行,其他的可以

比如Chrome打不开,但Edge或者Firefox正常。这种就是单个浏览器的设置问题。

情况四:有时能打开有时打不开

刷新几次,有时候能打开有时候打不开。这种一般是连接不稳定或者DNS的问题。

先对号入座,然后我们接着往下排查。

第一步:先确认Clash是不是真的正常工作

别上来就折腾浏览器,先确认Clash本身是不是好的。

怎么确认

  1. 看看其他软件能不能上网:比如微信、QQ、Steam这些,如果它们也上不了网,那不是浏览器的问题,是Clash整体的问题。
  2. 命令行ping一下:打开命令行,ping一下百度或者Google,看看通不通。
  3. 用Clash内置的测速:测一下节点,看看节点是不是正常的。

如果其他软件也上不了网,那问题在Clash本身,不是浏览器的事。先去把Clash搞定了再说。

如果其他软件都正常,就浏览器不行,那继续往下看。

第二步:检查浏览器的代理设置

这个是最常见的原因。

不同的浏览器,代理设置的方式不一样。有些浏览器用系统代理,有些有自己的代理设置,还有的装了插件。

Chrome/Edge浏览器

Chrome和新版Edge默认是用系统代理的。但如果你装了代理插件(比如SwitchyOmega、Proxy SwitchySharp之类的),插件的优先级更高。

怎么检查
– Chrome:设置 → 系统 → 打开您的计算机的代理设置
– Edge:设置 → 系统和性能 → 打开您的计算机的代理设置

看看是不是指向了Clash的端口(默认7890)。

Firefox浏览器

Firefox比较特殊,它默认有自己的代理设置,不一定用系统代理。

怎么检查
设置 → 常规 → 网络设置 → 设置

看看选的是什么:
– “使用系统代理设置”:跟着系统走,Clash开了系统代理的话应该能用
– “自动检测此网络的代理设置”:不一定靠谱
– “手动代理配置”:需要手动填Clash的地址和端口

如果Firefox打不开网页,先看看这里是不是设对了。建议选”使用系统代理设置”,跟系统保持一致,不容易出问题。

装了代理插件的情况

很多人喜欢用SwitchyOmega之类的插件来管理代理。插件如果配置不对,就算系统代理开了,浏览器也上不了网。

常见的插件问题
– 插件没开,或者选了”直接连接”模式
– 插件里的代理地址或端口写错了
– 规则配置错了,该走代理的没走
– 插件跟其他代理软件冲突了

排查方法:先把插件禁用了,看看能不能上网。如果禁用了就好了,那就是插件的问题,回去重新配。

我当初就是SwitchyOmega里的端口写错了,折腾了好久才发现。

第三步:DNS的问题

这个也是重灾区。很多时候不是连不上,是域名解析不了,看起来就像打不开网页一样。

为什么会有DNS问题

浏览器用了自己的DNS

现在很多浏览器都有”安全DNS”或者”DNS over HTTPS”功能,浏览器自己去解析域名,不走系统的DNS,也不走Clash的DNS。

如果浏览器的DNS被污染了,或者解析不了某些域名,就会表现为打不开网页。

Clash的DNS没配置好

Clash的DNS功能没开,或者配置不对,导致通过代理访问的域名解析失败。

怎么排查

方法一:试试用IP直接访问

比如你知道Google的IP,直接在浏览器里输入IP,看看能不能打开。如果用IP能打开,用域名打不开,那基本就是DNS的问题。

方法二:检查浏览器的安全DNS设置

  • Chrome:设置 → 隐私和安全 → 安全 → 使用安全DNS
  • Edge:设置 → 隐私、搜索和服务 → 安全性 → 使用安全的DNS

把这个功能关掉试试,如果关掉就好了,那就是安全DNS的问题。

方法三:检查Clash的DNS配置

确认Clash的DNS是开启的,而且配置正确。推荐配置参考:

dns:
  enable: true
  enhanced-mode: fake-ip
  nameserver:
    - 223.5.5.5
    - 119.29.29.29
  fallback:
    - https://1.1.1.1/dns-query
    - https://dns.google/dns-query
  fallback-filter:
    geoip: true
    ipcidr:
      - 240.0.0.0/4

第四步:TUN模式的坑

如果你开了TUN模式,浏览器打不开网页可能跟TUN有关。

为什么TUN模式会影响浏览器

TUN模式需要创建虚拟网卡、修改系统路由表,如果配置不对,可能会导致网络异常。

特别是浏览器的一些网络功能,可能跟TUN模式有兼容性问题。

怎么排查

先把TUN模式关了,用系统代理模式试试。如果关了TUN浏览器就正常了,那就是TUN的问题。

常见的TUN问题和解决方法

  • 没开管理员权限:TUN模式需要管理员权限,右键以管理员身份运行Clash
  • auto-detect-interface没开:开了自动检测接口,防止路由表搞错
  • stack选得不对:试试换成gvisor或者system,不同电脑上表现不一样
  • 浏览器的硬件加速冲突:有些显卡驱动跟TUN模式有冲突,关掉浏览器的硬件加速试试

这个说出来可能有人不信,但有时候就是缓存的锅。

为什么缓存会导致打不开

  • DNS缓存:浏览器缓存了错误的DNS解析结果
  • 页面缓存:缓存了错误的页面状态
  • Cookie问题:Cookie过期或者损坏

怎么解决

方法一:强制刷新页面

按Ctrl+F5强制刷新,跳过缓存重新加载。

方法二:清浏览器缓存

  • Chrome:设置 → 隐私和安全 → 清除浏览数据
  • 把”缓存的图片和文件”勾上,时间范围选”所有时间”,然后清除

方法三:用无痕模式试试

打开无痕/隐私窗口,访问同一个网站。如果无痕模式能打开,那就是缓存或者Cookie的问题,清一下就好了。

第六步:浏览器扩展的冲突

除了代理插件,其他扩展也可能跟Clash冲突,导致打不开网页。

常见的冲突扩展

  • 广告拦截插件:AdBlock、uBlock Origin这些,有时候会跟代理冲突,或者误拦截了一些东西
  • VPN扩展:有些VPN也有浏览器插件,会跟Clash抢代理
  • 脚本管理器:Tampermonkey之类的,某些脚本可能会影响网络请求
  • 安全类扩展:一些网页安全、反追踪的扩展,可能会干扰代理连接

怎么排查

最简单的方法——把所有扩展都禁用了,看看能不能上网。如果能上,就一个个启用,启用到哪个出问题了,就是哪个的锅。

嫌麻烦的话,可以先把跟网络、代理、广告、安全相关的扩展禁掉试试。

第七步:系统代理的问题

有时候Clash开了系统代理,但系统代理没设置对,或者被其他软件改了。

怎么检查系统代理

Windows的话:设置 → 网络和Internet → 代理

看看”自动检测设置”、”使用设置脚本”、”使用代理服务器”这几个选项的状态。

Clash的系统代理一般是通过”使用代理服务器”来实现的,地址是127.0.0.1,端口是7890。

常见的问题

  • 代理地址或端口不对:跟Clash里的设置不一致
  • 被其他软件改了:别的代理软件、VPN什么的改了系统代理设置
  • Clash退出时没清干净:Clash崩了或者非正常退出,系统代理没恢复,导致上不了网

如果是Clash退出后上不了网,去系统代理里把”使用代理服务器”关掉就行。

第八步:防火墙或安全软件

这个之前也说过,但针对浏览器的情况稍微有点不一样。

有些安全软件会单独监控浏览器的网络流量,可能会把通过代理的流量当成可疑行为给拦了。

怎么判断

临时关掉防火墙和杀毒软件,试试浏览器能不能上网。如果关掉就好了,那就是它们的问题。

解决方法

  • 把Clash加到白名单里
  • 把浏览器也加到白名单里
  • 关掉一些深度扫描、流量监控之类的功能

快速排查流程

给大家整理了一个排查顺序,照着来,一般很快就能找到问题:

  1. 其他软件能上网吗? → 不能的话先修Clash本身的问题
  2. 换个浏览器试试? → 其他浏览器能上的话就是单个浏览器的问题
  3. 检查浏览器代理设置:是用系统代理还是自己的设置?
  4. 有没有装代理插件? → 先禁用了试试
  5. 关掉浏览器的安全DNS:DoH功能有时候会捣乱
  6. 用无痕模式试试:排除缓存和扩展的问题
  7. 关掉TUN模式试试:排除TUN的影响
  8. 清一下浏览器缓存:死马当活马医
  9. 关了防火墙/杀软试试:最后排查安全软件

一般到第三步第四步就能找到原因了。

我踩过的几个坑

说几个我自己碰到的奇葩案例,大家乐一乐,也参考一下。

坑一:SwitchyOmega端口写错了

刚用Clash的时候,我把端口从7890改成了7891,但SwitchyOmega里还是7890,结果浏览器死活上不了网。其他软件都正常,就浏览器不行,折腾了好久。

所以改了Clash的端口之后,记得把所有地方的代理设置都检查一遍。

坑二:Chrome的安全DNS

Chrome开了安全DNS之后,有些国内网站反而打不开了,解析特别慢。关了之后就好了。

如果你用了Clash的DNS,其实浏览器的安全DNS可以关掉,让Clash来管理DNS就行。

坑三:广告拦截插件的误杀

有一次某个网站突然打不开了,各种排查都没问题。最后发现是uBlock Origin更新了规则,把这个网站误拦了。

最后说两句

Clash导致浏览器打不开网页,这个问题看起来很吓人,但大部分时候都是小问题——要么是代理设置不对,要么是插件冲突,要么是DNS的事。

别一上来就重装浏览器、重装系统。按上面的步骤一步步排查,大部分问题几分钟就能搞定。

还是那句话,遇到问题先看日志,不管是Clash的日志还是浏览器的控制台,都能给你很多信息。别瞎猜,越猜越乱。

希望这篇文章能帮到你。有什么其他的坑,也欢迎在评论区补充。

FAQ

开了Clash之后国内网站也打不开是为什么?

这种一般是代理配置的问题。可能是系统代理开了但Clash没正常工作,或者代理地址端口不对。也有可能是DNS的问题,国内域名解析失败了。先检查一下Clash是不是在正常运行,端口对不对。

为什么关了Clash之后浏览器还是上不了网?

大概率是系统代理没清掉。Clash非正常退出的时候,可能来不及把系统代理恢复原样,导致系统还在走代理但代理已经关了。手动去系统设置里把代理关掉就行,或者重新打开Clash再正常退出。

只有Chrome打不开,其他浏览器正常是怎么回事?

那就是Chrome自己的问题了。检查一下Chrome的代理设置、有没有装代理插件、安全DNS开了没有。也可以试试禁用所有扩展,或者重置Chrome设置。

浏览器显示”您的连接不是私密连接”是怎么回事?

这个一般是证书的问题。如果开了抓包工具或者某些杀毒软件的SSL扫描功能,它们会替换证书,导致浏览器认为连接不安全。也有可能是节点的证书有问题。看看是不是开了什么安全软件,或者检查节点的TLS配置。

手机上的浏览器也会碰到这种问题吗?

手机上的情况不太一样。如果是用VPN模式的Clash客户端,那所有流量都走VPN,浏览器应该是正常的。如果是用代理模式,那浏览器的代理设置也需要单独配置。手机上的浏览器一般没有那么多扩展插件,问题相对少一些。

Clash闪退怎么办 – Windows/Mac/手机闪退解决方案

闪退这个问题,说大不大说小不小。有时候刚打开就崩,有时候用着用着突然就退了,正在下的东西、看的视频直接断了,特别烦。

我当初换了个新电脑,装了Clash之后老是闪退,一天崩个三五次是常事。各种百度、各种试,最后发现是我电脑上的某个杀毒软件跟Clash冲突了。今天就把我踩过的坑和总结的解决方法整理出来,Windows、Mac、手机端都说说。

先搞清楚是哪种闪退

闪退的类型不一样,原因也不一样。先搞清楚你是哪种情况:

类型一:启动就闪退

刚点开图标,还没看到界面就退了,或者闪一下就没了。这种一般是启动失败,问题比较严重。

类型二:打开一会儿就闪退

能打开,能用几分钟,但过一会儿就自己退了。这种一般是运行时的问题,比如内存泄漏、冲突什么的。

类型三:特定操作后闪退

一点某个按钮、一切换某个功能就崩。比如一开TUN就退,一点测速就崩。这种是特定功能的bug。

类型四:偶尔闪退,没规律

不知道什么时候就退了,完全没规律。这种最难排查,可能是系统兼容性问题。

先对号入座,然后我们接着往下看。

Windows平台闪退

Windows是Clash用户最多的平台,闪退问题也最多。一个个说。

原因一:杀毒软件/防火墙拦截

这个是Windows上最常见的闪退原因,没有之一。

Windows Defender、360、火绒、各种管家……它们有时候会把Clash当成可疑程序,直接杀掉。或者是Clash要改系统设置(比如系统代理、TUN模式)的时候,被安全软件拦了,然后就崩了。

怎么判断
– 刚装完Clash第一次打开就闪退
– 打开的时候安全软件弹了提示
– 看安全软件的隔离区,有没有把Clash的文件隔离了

解决方法
1. 把Clash整个文件夹加到杀毒软件的白名单/信任区
2. 把Clash的主程序(Clash for Windows.exe或者clash-verge.exe)也加进去
3. Windows Defender的话,去”病毒和威胁防护”→”排除项”里加

我自己之前就是火绒跟Clash冲突,加了白名单之后就好了。

原因二:没有管理员权限

有些功能,特别是TUN模式,需要管理员权限才能运行。如果没有权限,可能启动失败或者一开TUN就崩。

解决方法
– 右键Clash图标 → 以管理员身份运行
– 想一直用管理员的话:右键→属性→兼容性→勾选”以管理员身份运行此程序”

原因三:配置文件损坏

配置文件损坏或者格式不对,也可能导致Clash启动的时候解析失败,直接崩了。

怎么判断
– 之前好好的,改了配置之后就开始闪退
– 导入了某个订阅之后就崩了

解决方法
1. 找到Clash的配置文件目录
– Clash for Windows:C:\Users\用户名\.config\clash
– Clash Verge:C:\Users\用户名\.config\clash-verge
2. 把配置文件备份一下,然后删掉或者改名
3. 重新启动Clash,它会生成默认的配置
4. 如果默认配置能正常启动,说明就是配置文件的问题

原因四:TUN模式驱动问题

开了TUN模式之后闪退,大概率是TUN的驱动或者虚拟网卡有问题。

解决方法
1. 先想办法关掉TUN模式(能打开的话在设置里关,打不开就去改配置文件)
2. 关掉TUN之后如果不闪退了,那就是TUN的问题
3. 试试更新Clash到最新版
4. 试试换TUN的stack(gvisor/system)
5. 看看设备管理器里的虚拟网卡有没有异常

原因五:端口冲突

如果Clash要用的端口被别的软件占了,也可能启动失败闪退。不过这个一般会有错误提示,不会直接闪退,但也不排除。

解决方法
– 用netstat -ano | findstr "7890"看看端口有没有被占
– 如果被占了,要么关掉占用的程序,要么改Clash的端口
– 改端口的话,去配置文件里改mixed-port的值

原因六:系统兼容性问题

有些系统版本或者运行库不全,也可能导致闪退。

解决方法
1. 确认你的系统是64位的,现在Clash基本都只有64位版本
2. 安装最新的VC++运行库(微软常用运行库合集了解一下)
3. 更新系统补丁,Windows 10/11保持较新的版本
4. 试试兼容模式运行:右键→属性→兼容性→勾选”以兼容模式运行”,选个Win7或者Win8试试

原因七:软件本身的bug

新版本有bug,或者某个特定版本不稳定,也会闪退。

解决方法
– 如果是刚更新完就开始闪退,换回上一个版本试试
– 用稳定版,别用测试版/预览版
– Clash for Windows有问题的话,可以试试Clash Verge,反之亦然

Mac平台闪退

Mac上的闪退问题比Windows少一些,但也不是没有。

原因一:应用未被验证/来自不明开发者

Mac的安全机制,第一次打开不是从App Store下载的软件,会提示”无法打开,因为无法验证开发者”。有些人不知道怎么处理,以为是闪退。

解决方法
– 方法一:右键应用 → 打开 → 弹窗里再点打开
– 方法二:系统设置 → 隐私与安全性 → 往下拉,看到”已阻止使用”的提示,点”仍要打开”
– 方法三:终端执行 sudo spctl --master-disable(不推荐,降低安全性)

原因二:没有授权辅助功能/完全磁盘访问

Clash X或者Stash这些Mac客户端,有些功能需要系统权限,没有的话可能崩。

解决方法
– 系统设置 → 隐私与安全性 → 辅助功能 → 把Clash加进去
– 系统设置 → 隐私与安全性 → 完全磁盘访问权限 → 把Clash加进去

原因三:TUN模式/系统扩展问题

Mac上开TUN模式需要安装系统扩展或者网络扩展,没装好的话可能闪退。

解决方法
1. 先别开TUN模式,看看能不能正常运行
2. 如果不开TUN就好,那就是TUN的问题
3. 去系统设置 → 网络 → VPN与设备管理,看看有没有Clash的系统扩展
4. 系统设置 → 隐私与安全性 → 往下拉,看看有没有”已阻止的系统软件”的提示,点允许
5. 重装一下Clash的系统扩展

原因四:M1/M2芯片兼容性

苹果硅芯片的Mac,如果用的是x86版本的Clash,通过Rosetta转译运行,可能会有兼容性问题导致闪退。

解决方法
– 下载ARM64版本的Clash客户端,原生支持苹果硅
– 现在主流的Clash Mac客户端基本都有原生ARM版本了

安卓平台闪退

安卓上的Clash客户端(比如Clash Meta for Android、FlClash之类的)也会有闪退的问题。

原因一:版本不兼容

安卓版本太多了,不同品牌、不同系统版本,兼容性差异很大。

解决方法
– 试试不同版本的客户端,找一个在你手机上稳定的
– 如果最新版闪退,试试旧版本
– 反之,如果旧版本有问题,升级到最新版试试

原因二:VPN权限没给

Clash安卓版一般是用VPN模式运行的,需要VPN权限。第一次打开没给权限的话,可能会崩。

解决方法
– 第一次打开的时候,弹出VPN请求点”确定”
– 如果之前拒绝了,去设置 → 应用 → 找到Clash → 权限管理,把相关权限都给了

原因三:配置文件太大/规则太多

有些朋友喜欢加几十个规则集,几万条规则,配置文件特别大。手机性能不够的话,解析配置的时候内存不够,就闪退了。

解决方法
– 精简一下配置,没用的规则集就别加了
– 少加点节点,几百个节点真的用不上
– 试试其他轻量一点的客户端

原因四:系统优化/电池优化杀后台

有些安卓手机的系统优化特别狠,会把后台的Clash给杀掉,看起来就像闪退一样。

解决方法
– 把Clash加到电池优化的白名单里
– 锁定后台(最近任务里往下滑一下,出现小锁头)
– 关闭系统的省电模式、超级省电什么的

不同品牌的手机设置方法不一样,自己研究一下。

iOS平台闪退

iOS上的Clash客户端(比如Shadowrocket、Stash、Clash Party这些)闪退问题相对少一些,但也有。

原因一:证书过期/掉签

如果你是用企业证书或者自签安装的,证书过期了之后APP就会闪退,根本打不开。

解决方法
– 重新签名安装
– 或者用TestFlight版本(如果有的话)
– 最稳的还是App Store下载的正版

原因二:配置有问题

配置文件格式不对、规则太多,也可能导致iOS端的客户端闪退。

解决方法
– 删掉有问题的配置,重新导入
– 精简配置,别加太多没用的规则

原因三:系统版本不兼容

iOS大版本更新之后,有些旧版本的APP可能不兼容,出现闪退。

解决方法
– 更新APP到最新版
– 或者等APP更新适配新系统

通用排查方法

不管什么平台,这些方法都可以试试:

方法一:重启软件和设备

重启大法好,很多莫名其妙的问题重启一下就好了。

先重启Clash试试,不行就重启手机/电脑。有时候就是系统抽风了,重启就正常了。

方法二:更新到最新版

闪退很多时候是已知的bug,新版本可能已经修复了。去官网下载最新版试试。

当然,也有可能是新版本引入了新bug。如果是刚更完就开始闪退,换回旧版本。

方法三:用默认配置/干净配置

把配置文件备份一下,然后删掉,让Clash用默认配置启动。如果默认配置不闪退了,那就是你配置的问题,慢慢排查是哪条配置引起的。

方法四:看日志/崩溃报告

闪退的时候一般会生成日志或者崩溃报告,里面会有崩溃的原因。如果你看得懂的话,能精准定位问题。

  • Windows:一般在程序目录或者用户目录的logs文件夹里
  • Mac:控制台(Console)应用里能看到崩溃报告
  • 安卓:有些客户端有日志导出功能
  • iOS:设置 → 隐私与安全性 → 分析与改进 → 分析数据

看不懂也没关系,可以把日志发给开发者或者在群里问,比只说”闪退了”有用多了。

方法五:重装

最后实在不行了,就重装吧。注意把配置文件也清干净,不然有时候配置的问题重装也没用。

我自己的闪退经历

说几个我自己碰到的闪退案例,给大家参考。

案例一:火绒拦截导致闪退

刚装完Clash for Windows,一打开就闪退,连界面都看不到。折腾了半天,最后发现是火绒把Clash的核心程序当病毒给杀了。

加到白名单之后就好了。

案例二:TUN模式一开就崩

有一次开了TUN模式之后,Clash直接崩了,而且之后每次打开都崩,因为默认就开着TUN。

最后去配置文件里手动把TUN关了才打开。然后更新了一下Clash版本,再开TUN就没事了。

案例三:手机端配置太大闪退

安卓手机上导入了一个特别大的配置,几百个节点加几十个规则集。一点导入就闪退。

后来精简了配置,只留了常用的节点和规则,就正常了。

最后说几句

闪退这个问题,原因太多了,从软件本身到系统环境到第三方冲突,都有可能。

碰到闪退别慌,也别上来就到处问”为什么闪退”。先自己排查一下:什么时候闪退、做了什么操作之后开始的、换版本能不能解决、用默认配置行不行。把这些信息搞清楚了,再去问别人,别人也好帮你。

大部分闪退问题,要么是安全软件拦截,要么是配置问题,要么是版本不兼容。按上面的方法一步步来,基本都能解决。

希望这篇文章能帮到你。如果你碰到过什么奇葩的闪退原因,欢迎在评论区分享出来。

FAQ

Clash闪退之后上不了网怎么办?

大概率是系统代理没清掉。Clash闪退的时候来不及把系统代理恢复原样,导致系统还在走代理但代理已经关了。手动去系统设置里把代理关掉就行,或者重新打开Clash再正常退出。

为什么有时候闪退有时候不闪退?

间歇性闪退一般是运行时的问题,比如内存泄漏、跟其他软件冲突、特定条件触发的bug。可以试试更新版本,或者看看闪退前你都做了什么操作,能不能稳定复现。能稳定复现的问题就好排查。

一开TUN就闪退是怎么回事?

基本就是TUN模式的问题。可能是驱动没装好、权限不够、跟其他VPN软件冲突。先想办法关掉TUN,确认不开TUN是正常的,然后再慢慢排查TUN的问题。更新版本、重装驱动、关其他VPN软件,这些都试试。

怎么防止Clash后台被杀?

手机上的话,加到电池优化白名单、锁定后台、关省电模式。电脑上的话,一般不会被系统杀,除非是安全软件给杀了,那就要加白名单。

有没有什么办法自动重启闪退的Clash?

Windows上可以写个脚本,检测Clash进程不在了就自动启动。或者有些第三方工具能实现进程守护。不过这都是治标不治本,最好还是找到闪退的原因解决掉。