标签归档:Clash

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,浏览器应该是正常的。如果是用代理模式,那浏览器的代理设置也需要单独配置。手机上的浏览器一般没有那么多扩展插件,问题相对少一些。