一、先了解项目状态:CFW 已停止维护

Clash for Windows 是基于 Clash 内核的图形化代理客户端。它本身不提供代理服务器,也不是匿名网络或完整的 VPN 服务。原版 CFW 在 2023 年 11 月停止维护,最后公开版本为 0.20.39,原始 GitHub 仓库已经下线。

网上所谓“CFW 2026 最新版”“0.20.39.x”“Opt 版”不能视为 Fndroid 的官方后续版本。老版本没有持续的上游安全修复,安装包也难以从原官方渠道核验,因此新部署更适合选择仍在维护的 mihomo 客户端。本文主要服务于已经安装 CFW、需要理解或维护旧配置的用户。

还要区分旧版 CFW 的 Clash/Premium 内核、Clash.Meta、mihomo 和各种第三方修改版。它们的配置字段并不完全兼容,不能直接照搬新教程中的 respect-rules、strict-route 或新协议栈。

二、四个概念不能混为一谈

CFW 的实际路径可以拆成四层:应用通过 System Proxy 或 TUN 进入内核;内核按 Rule、Global 或 Direct 决定出口;DNS 模块另行决定域名如何解析。只打开其中一个开关,并不能证明其他三层也正确。

  • System Proxy 只设置系统代理,遵循它的应用才会把请求交给本机端口;部分终端、游戏、UDP 和商店应用可能忽略。
  • TUN 能接管更多流量,但最终是否代理仍由路由和规则决定,不是打开 TUN 就万事大吉。
  • Global 只能处理已经进入内核的流量,无法捕获绕过 Clash 的应用;还要确认 GLOBAL 选择的是实际节点而非 DIRECT。
  • DNS 泄露与网页出口 IP 是两件事:网页已经走节点,DNS 仍可能发给运营商、路由器或浏览器自己的 DoH。
应用程序
   │
   │  ① System Proxy:应用主动把流量交给本地代理
   │  ② TUN:通过虚拟网卡接管应用流量
   ▼
Clash 内核
   │
   │  ③ Rule / Global / Direct:决定使用哪个出口
   │  ④ DNS:决定域名在哪里、通过什么方式解析
   ▼
DIRECT 直连 / 代理节点 / REJECT 拒绝
   │
   ▼
目标网站或服务

三、隐私边界:能隐藏什么,不能隐藏什么

因此,本文所说的“防泄露”是减少非预期的网络和地址暴露,不是承诺绝对匿名。若需要隐藏精确位置,还要检查系统定位、浏览器权限和账号资料,不能只更换节点。

  • 对目标网站:完整经过代理的请求通常显示节点出口 IP,而不是家庭或公司网络的原始公网 IP。
  • 对代理提供商:节点需要接收你的连接,通常仍能看到原始公网 IP,CFW 无法对节点隐藏它。
  • 对本地网络或运营商:仍可能看到代理服务器地址、连接时间和流量元数据,具体可见内容取决于协议和加密。
  • 对 DNS 服务商:DoH/DoT 加密传输,但直接连接的服务商仍可能看到来源 IP 和查询域名,加密不等于匿名。
  • 对账号和浏览器:Cookie、登录账号、语言、时区、指纹、定位权限和 Wi-Fi 定位仍可能提供身份或位置线索。

四、新手快速入门

远程配置可以定义节点、DIRECT、DNS、最终 MATCH、TUN 和 Fake IP。不可信配置可能主动让部分流量直连,所以配置来源与节点来源同样重要。更新远程配置前,应备份个人修改。

  • 在 Profiles 中通过可信 HTTPS 订阅或本地 YAML 导入配置,订阅 URL 往往含账号令牌,不要放进截图或公开日志。
  • 点击配置卡片使其生效,在 Proxies 中选择 Rule 和实际节点。
  • 打开 General → System Proxy,用浏览器检查连接和出口 IP。
  • 需要覆盖更多桌面软件、命令行或 UDP 时,再安装 Service Mode 并启用 TUN。
  • Allow LAN 默认保持关闭,本机使用 127.0.0.1 不需要开放局域网代理。
  • Start with Windows 只表示开机启动,不代表配置、节点、DNS 和防泄露设置正常。

五、System Proxy 与 TUN 应该如何选择

只使用浏览器且更重视兼容性时,System Proxy + Rule 通常足够。需要让命令行、游戏、聊天软件或不读系统代理的程序进入 Clash 时,才使用 TUN。同时打开两者不会产生“双重加密”,反而可能增加排查难度。

  • 在 General → Service Mode → Manage 安装服务并完成 Windows 授权。
  • 确认 Service Mode 状态正常后打开 TUN Mode;旧版文档常用 gVisor 作为兼容方案。
  • 不要同时折腾旧 TAP 与 TUN;出现冲突时先恢复已知可用配置,不要直接关闭整个 Windows 防火墙。
  • 在 Rule 下检查目标是否命中 DIRECT、最终 MATCH 是否直连,以及系统代理 Bypass 是否加入公网域名。
  • 需要验证统一出口时可暂时使用 Global 并选择真实节点;测试后再决定是否恢复 Rule。

六、旧版 CFW 的 DNS/TUN 示例与注意事项

下面是旧版 CFW 的 Mixin 结构示例,仅用于说明字段。应先备份并合并到现有配置,不要直接覆盖成熟订阅,也不要复制到当前 mihomo 中。CFW 的覆盖优先级为 Mixin > TUN Mode 设置 > Profile,不要在三个地方重复维护同一字段。

  • fake-ip 向应用返回保留地址,由内核维护域名映射;它不是加密或匿名技术。
  • fake-ip-filter 用于需要真实 IP 的局域网或系统服务,应与原有过滤列表合并。
  • dns.ipv6: false 只控制 AAAA 解析,不会关闭 Windows 的 IPv6。
  • dns-hijack 将匹配的 DNS 请求导入内部 DNS 模块;示例地址是旧 CFW 写法,不是所有客户端通用。
  • DoH/DoT 只说明上游传输加密,不能保证旧 CFW 的上游 DNS 请求一定经过节点。若要求 DNS 服务商也看不到原 IP,旧 CFW 不是可靠的单工具方案。
mixin:
  dns:
    enable: true
    enhanced-mode: fake-ip
    fake-ip-range: 198.18.0.1/16
    fake-ip-filter:
      - "*.lan"
      - "localhost"
      - "dns.msftncsi.com"
      - "www.msftncsi.com"
      - "www.msftconnecttest.com"
    nameserver:
      - "https://1.1.1.1/dns-query"
      - "tls://1.0.0.1:853"
    ipv6: false
  tun:
    enable: true
    stack: gvisor
    dns-hijack:
      - "198.18.0.2:53"
    auto-route: true
    auto-detect-interface: true

七、浏览器 DoH、IPv6、WebRTC、QUIC 与故障断网

  • 浏览器安全 DNS:只有确认 TUN 和 DNS Hijack 正常后,才考虑暂时关闭浏览器自己的安全 DNS,让 Clash 统一解析;没有接管时不要机械关闭 DoH。
  • IPv6:CFW 的 IPv6 开关不是系统总开关。若物理网络有公网 IPv6,而 TUN 只处理 IPv4,IPv6 网站仍可能显示原始地址。应完整接管或有意识地限制并复测。
  • WebRTC:STUN 可能绕过普通应用代理并暴露额外地址。严格场景可评估 Chromium 的 disable_non_proxied_udp,但可能影响语音和视频通话。
  • QUIC/HTTP3 使用 UDP。不要假定 UDP 不可用时一定安全回退到 TCP,应验证路径或暂时通过浏览器策略禁用 QUIC。
  • Kill Switch:CFW 的 TUN 开关不是可靠的故障断网保证。崩溃、睡眠唤醒、网络切换、订阅更新和其他 VPN 都可能导致非预期路径。
  • 现代浏览器显示 .local 的 mDNS 候选地址,不一定意味着公网 IP 泄露;应重点检查原始公网 IPv4/IPv6。

八、General 与 Proxies 各项功能

  • Port:本地 Mixed 代理端口,手动配置软件时以实际显示为准,不要固定认为一定是 7890。
  • Allow LAN:允许其他局域网设备使用本机代理;隐私基线下关闭。
  • Log Level:日常 Info 即可,Debug 用于排错,公开日志前删除域名、IP、进程路径和订阅信息。
  • IPv6:控制内核相关行为,不等于操作系统 IPv6 开关。
  • Home Directory:配置、日志和缓存所在目录,分享前先检查敏感信息。
  • GeoIP Database:供 GEOIP 规则使用,更新它不会更新节点或内核。
  • UWP Loopback:解除特定商店应用的本地回环限制,只对确有需要的应用逐项使用。
  • Service Mode:为 TUN 提供系统服务支持,不是代理节点服务。
  • Mixin:向所有配置注入公共字段,适合保留个人 DNS 等修改。
  • 策略组 select 手动选择,url-test 自动测速,fallback 故障切换,load-balance 分配连接;延迟低不等于带宽高。

九、Profiles、Mixin 与规则语法

Profiles 是节点、策略组和规则的集合。远程配置更新可能覆盖手动修改,因此长期自定义应使用 Mixin、Diff 或本地副本。Mixin 的 JavaScript 和 Parser 也具有主动执行能力,只运行可信内容。

  • 规则通常从上到下匹配,先命中先生效,MATCH 应放在最后。
  • Proxy 必须替换为配置中真实存在、名称完全一致的策略组。
  • PROCESS-NAME 在 Windows 通常需要完整进程名,包括 .exe。
  • no-resolve 只是避免为了规则判断额外触发 DNS 解析,不是隐私开关。
  • REJECT 表示拒绝连接,不代表通过代理隐藏地址。
rules:
  - DOMAIN-SUFFIX,example.com,Proxy
  - PROCESS-NAME,git.exe,Proxy
  - IP-CIDR,203.0.113.0/24,Proxy,no-resolve
  - MATCH,DIRECT

十、Logs、Connections 与 Settings 的实战价值

  • Logs 用于检查配置加载、DNS、节点握手和 TUN 启动错误。
  • Connections 中的 Process Path 显示发起进程,Rule 显示命中规则,Chains 显示实际策略链;以 DIRECT 结尾表示未走节点。
  • 连接类型可区分 HTTP、SOCKS5 或 TUN,Network 可确认 TCP/UDP。
  • 切换节点、模式或配置后关闭旧连接再测试,避免旧 TCP 连接继续走原出口。
  • Settings 的 Break When Proxy Change / Profile Change / Mode Change 可按需开启,减少界面已切换但旧连接未切换的误判。
  • Core Secret 和随机 Controller Port 用于保护本机控制 API,不要把无认证 API 暴露到 0.0.0.0。

十一、不同软件怎样设置才真正有效

Chrome、Edge 通常遵循系统代理,但要排查代理扩展、浏览器 DoH、WebRTC 和 QUIC。Firefox 可使用系统代理,也可手动配置 SOCKS v5 并启用“使用 SOCKS v5 时代理 DNS”。IDE 主程序、插件、语言服务器和内置终端可能分别维护代理设置。

Windows 商店应用可优先验证 TUN,确有需要时再使用 UWP Loopback 单项豁免。游戏、语音和模拟器通常需要 TUN 加 UDP 支持,启动器能打开不代表游戏流量已代理。WSL、Docker 和虚拟机有独立网络栈,容器内的 127.0.0.1 通常不是 Windows 上的 CFW。

# 当前 PowerShell 会话临时设置(端口以 CFW 实际显示为准)
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"

# curl 显式使用 HTTP 代理
curl.exe --proxy http://127.0.0.1:7890 https://example.com/

# 使用 SOCKS 并让代理解析域名
curl.exe --proxy socks5h://127.0.0.1:7890 https://example.com/

# Git 仅对 HTTP(S) 设置与撤销
git config --global http.proxy http://127.0.0.1:7890
git config --global --unset http.proxy

# 清除当前会话的代理环境变量
Remove-Item Env:HTTP_PROXY -ErrorAction SilentlyContinue
Remove-Item Env:HTTPS_PROXY -ErrorAction SilentlyContinue

十二、验证与故障排查清单

  • 分别测试 IPv4 和 IPv6,使用两个独立 IP 查询服务交叉验证;节点城市数据库不准确不等于泄露。
  • 在 Connections 中确认目标进程、规则、策略链和 UDP 记录;完全没有记录通常说明应用没有经过 Clash。
  • 进行标准和 Extended DNS 测试,重点看是否出现运营商、路由器或预期之外的本地解析器。公共 DNS 的解析器 IP 不必等于节点 IP。
  • 检查 WebRTC 是否出现原始公网地址,不要把 .local mDNS 直接当成公网泄露。
  • 在节点切换、订阅更新、睡眠唤醒、Wi-Fi 切换、CFW 重启和 TUN 异常关闭后重新测试。
  • 如果停止 CFW 后应用仍能直接访问公网,说明当前方案不是故障关闭的。
  • TUN 后无法联网时检查 Service Mode、防火墙、DNS、多个 VPN/TUN 冲突和协议栈;先恢复备份,不要关闭整个防火墙。