跳到主要内容

2 篇博文 含有标签「微信」

查看所有标签

Clash TUN 模式下微信收发图片变慢:一次 IPv6 排查记录

· 阅读需 4 分钟
1adybug
子虚伊人

最近我在 Clash Verge / Mihomo 中开启了 TUN 模式后,发现微信收发图片明显变慢。一开始我怀疑是微信图片流量被代理服务器接管了,导致绕路。

但排查日志后发现,真正的问题并不是“微信走了代理”,而是 Clash 中开启 IPv6 后,让微信尝试了一条当前网络环境不可达的 IPv6 路径。

现象

开启 Clash TUN 模式后:

  • 微信文字消息基本正常
  • 接收和发送图片明显变慢
  • 关闭 Clash 中的 IPv6 后,微信图片恢复正常

排查过程

先查看 Clash / Mihomo 的规则和连接日志。

配置中微信相关进程已经被明确设置为直连:

- PROCESS-NAME,Weixin.exe,DIRECT
- PROCESS-NAME,WeixinUpdate.exe,DIRECT
- PROCESS-NAME,WeChatAppEx.exe,DIRECT
- PROCESS-NAME,WeixinExt.exe,DIRECT

随后在微信接收一张图片时,对比 Mihomo 日志,发现新增记录类似这样:

[TCP] dial DIRECT (match ProcessName/Weixin.exe)
Weixin.exe --> [240e:xxxx:xxxx::xxxx]:443
error: connect failed: dial tcp [240e:xxxx:xxxx::xxxx]:443:
A socket operation was attempted to an unreachable network.

关键信息有三个:

DIRECT
ProcessName/Weixin.exe
IPv6 unreachable network

也就是说,微信并没有走代理,而是命中了 DIRECT 规则。但它尝试访问腾讯/微信的 IPv6 地址时,当前网络环境下这条 IPv6 路径不可达,于是发生反复重试,最终造成图片收发很慢。

真正原因

问题不是:

  • 微信图片走了代理
  • 代理服务器太慢
  • 微信服务器慢

更准确的原因是:

Clash / Mihomo 中开启 IPv6 后,微信拿到了 IPv6 目标地址,并尝试直连;但当前 TUN / 网络环境无法真正访问这些 IPv6 地址,于是连接失败、重试、回落,造成明显延迟。

这是一种“看起来支持 IPv6,但实际路径不可达”的情况。

解决方式

在 Clash / Mihomo 中关闭 IPv6:

ipv6: false

dns:
ipv6: false

然后重启 Clash 内核。

注意,这里说的是关闭 Clash / Mihomo 内部的 IPv6 支持,不是去 Windows 网卡里全局禁用 IPv6。

关闭 Clash IPv6 会有什么影响?

关闭后,Clash 通常不再处理 IPv6 目标地址,也不会主动返回 IPv6 DNS 结果。大多数应用会回落到 IPv4。

影响一般是:

  • IPv4 代理规则仍然正常工作
  • 大多数网站和 App 不受影响
  • 少数 IPv6-only 服务可能无法访问
  • 如果某些服务 IPv6 路径原本更优,可能失去这部分优势
  • 但在当前网络 IPv6 不通的情况下,关闭反而更稳定

代理本身是否支持 IPv6?

不能只看代理节点入口 IP 来判断。

即使代理服务器入口是 IPv4,比如:

104.xxx.xxx.xxx:4431

它也可能支持代理 IPv6 目标地址。是否支持取决于:

  • 节点服务器是否有 IPv6 出站能力
  • 代理协议和服务端配置是否支持
  • Clash/Mihomo 是否开启 IPv6 处理

在这次问题里,微信本身命中的是 DIRECT,所以重点并不是“节点是否支持 IPv6”,而是“微信直连 IPv6 不可达”。

总结

这次微信图片慢的核心链路是:

Clash 开启 IPv6

微信拿到 IPv6 地址

微信按规则 DIRECT 直连

当前网络/TUN 环境 IPv6 不可达

连接失败、重试、回落

收发图片变慢

关闭 Clash 中的 IPv6 后,微信更早走 IPv4,绕过不可达的 IPv6 路径,问题解决。

如果你也遇到 Clash TUN 模式下微信、QQ、国内 App 图片或资源加载很慢,可以优先检查 Mihomo 日志中是否存在类似:

DIRECT
IPv6
unreachable network

如果有,那么关闭 Clash / Mihomo 的 IPv6 很可能就是最直接的解决办法。

让应用程序绕过 Clash Verge 代理(TUN / 系统代理通用方案)

· 阅读需 2 分钟
1adybug
子虚伊人

背景

在开启 TUN 模式或系统代理模式时,部分应用(如微信、Radmin VPN)可能出现:

  • 文件传输缓慢或失败
  • 局域网通信异常
  • VPN 无法建立连接

本文提供一套通用方案,使指定应用绕过 Clash Verge 代理。


步骤 1:配置 TUN 排除进程

打开「订阅」→「全局扩展覆写配置」,覆盖粘贴:

# Profile Enhancement Merge Template for Clash Verge

profile:
store-selected: true

# ✅ 关键:让 Radmin VPN 不被 TUN 接管
tun:
exclude-process:
- AnyDesk.exe
- WeChatAppEx.exe
- WeixinUpdate.exe
- Weixin.exe
- WetypeInstaller.exe
- WeixinExt.exe
- RvRvpnGui.exe
- RvControlSvc.exe
- Radmin.exe
- drvinst.exe
- RvFwHelper.exe
- RvGuiStarter.exe

👉 作用:这些进程不会被 TUN 模式接管


步骤 2:添加规则强制直连

打开「全局扩展脚本」,覆盖粘贴:

// Define main function (script entry)

function main(config, profileName) {
// 为所有代理节点添加或设置 'udp: true'
if (config.proxies) config.proxies.forEach(proxy => (proxy.udp = true))

config.rules ??= []

// 保留原有的添加域名规则的逻辑
const name = config["proxy-groups"]?.at(0)?.name

const excludeProcesses = [
"AnyDesk.exe",
"WeChatAppEx.exe",
"WeixinUpdate.exe",
"Weixin.exe",
"WetypeInstaller.exe",
"WeixinExt.exe",
"RvRvpnGui.exe",
"RvControlSvc.exe",
"Radmin.exe",
"drvinst.exe",
"RvFwHelper.exe",
"RvGuiStarter.exe",
]

if (name) {
config.rules.unshift(`DOMAIN-SUFFIX,claude.ai,${name}`)
config.rules.unshift(`DOMAIN-SUFFIX,claude.com,${name}`)
config.rules.unshift(`IP-CIDR,26.0.0.0/8,DIRECT`)
excludeProcesses.forEach(item => config.rules.unshift(`PROCESS-NAME,${item},DIRECT`))
}

return config
}

👉 作用:

  • 强制指定进程走直连
  • 即使切换到“代理模式”仍然生效

步骤 3(可选):调整 DNS 模式

打开「设置」→「DNS 覆写」,将:

  • fake-ipredir-host

👉 适用于以下情况:

  • 微信传文件异常
  • 局域网通信不稳定

⚠️ 注意:

  • 此步骤为可选项
  • 如果修改后出现网络异常,可以恢复为 fake-ip

验证是否生效

可以通过以下方式确认:

1. 测试 Radmin VPN

ping 26.x.x.x

应正常通信。


2. 查看 Clash 日志

在日志中应看到:

26.x.x.x → DIRECT

原理说明

本方案基于三点:

  1. tun.exclude-process

    • 控制流量是否进入 Clash(入口)
  2. PROCESS-NAME,...,DIRECT

    • 控制流量走直连(出口)
  3. IP-CIDR,26.0.0.0/8,DIRECT

    • 确保 Radmin VPN 内网流量不被代理

总结

  • TUN 排除:避免应用被接管
  • 规则直连:保证任何模式下都不走代理
  • DNS 调整:作为兼容性优化手段

通过以上配置,可以实现 Clash Verge 与微信、Radmin VPN 等应用的稳定共存。