典型现象:握手失败、秒断与内网不可达

Cisco AnyConnect 一类 企业 VPN 往往同时依赖:对网关域名的正确解析到达网关与后续内网网段的路由,以及不被中间人式代理打断的 TLS 握手。当你再开一层 Clash,若流量被错误地送进代理节点、或 DNS 被劫持到 fake-ip、或 TUN 路由抢在 VPN 拆分路由之前生效,就会出现:连接按钮转圈后失败、隧道刚建立就掉线、或显示已连接但 10.x / 172.16–31.x内网地址 ping 不通。这类问题与「机场节点质量」常常无关,而是分流白名单系统栈优先级没对齐。

在动手改配置前,建议先建立心理模型:个人代理公司远程接入争的是同一套路由表与 DNS 解析路径,而不是两个互不相干的 App。关于「通用 VPN」与基于规则的代理在架构上的差异,可先读 Clash 与 VPN 深度对比,再回到本文按步骤收敛冲突面。

排查顺序(浓缩版):先确认当前是仅系统代理还是TUN 接管全局 → 给 VPN 网关域名、证书校验域名、内网 IP-CIDR 与常见 SSO 域名加 DIRECT 并置顶 → 检查 DNS 是否把企业域名解析进 fake-ip → 用 route print / netstat -rn路由度量与接口顺序 → 最后用连接日志对照命中规则。

第 0 步:先分清系统代理与 TUN 谁在前

系统代理主要影响「尊重系统代理」的应用(多数浏览器默认如此);TUN 模式则可能在三层把几乎所有进程的流量导入 Clash 栈,包括 AnyConnect 的某些组件——因此与 SSL VPN 叠加时,TUN 更容易踩雷。若你刚启用 TUN 后立刻出现企业 VPN 异常,而仅开系统代理时问题较轻,这本身就是强信号。TUN 与 DNS 劫持如何协作、为何会影响「看不见域名」的纯 IP 流量,详见 Clash TUN 模式深度解析;若你使用 macOS 且涉及系统扩展授权或「代理与 VPN 抢同一接口」的困惑,可对照 macOS 上 TUN 与系统代理冲突排查

实操上建议做两次对照实验:① 仅开 Clash「系统代理」、关 TUN,重连 AnyConnect;② 仅开 TUN、关系统代理(或按客户端文档的推荐组合),再测。记录哪一档必现故障,可少改十几版订阅。若公司策略要求 VPN 全程在线,部分环境会禁止本地「全局捕获」,此时应优先收窄 Clash 的接管面(规则更细、或改用进程级分流),而不是硬开全局 TUN。

第 1 步:规则与策略组里的 DIRECT 白名单

打开你正在使用的 Clash / Mihomo 图形客户端,找到当前生效配置里的 rules: 段。目标是:凡指向公司 VPN 网关证书 OCSP/CRL身份提供商(IdP)与 SSO、以及明确内网网段的请求,都应落在 DIRECT(或你专门定义的「直连」策略组)上,而不是默认的 PROXY 或「漏网之鱼」规则。常见写法包括:DOMAIN-SUFFIX,corp.example.com,DIRECTDOMAIN-KEYWORD,anyconnect,DIRECT(示例,勿照抄虚构域名)、以及对 RFC1918 私网的 IP-CIDR,10.0.0.0/8,DIRECT 等。顺序上务必把最具体的白名单放在前面,避免被一条过宽的 GEOIP 或「全站 MATCH」提前抢走;规则集合并与优先级细节可参考 Clash 规则分流最佳实践

若你使用策略组 + 规则集,注意「策略组里选中的节点」与「规则里写 DIRECT」并不矛盾:规则先命中,命中 DIRECT 时不会再去问用户选的是哪个机场节点。另一个常见误区是:以为把浏览器设为直连就够了——AnyConnect 的系统服务、守护进程与 DTLS 会话往往不走路径完全相同的 HTTP 代理链,因此仅靠浏览器插件关代理经常无效。若你希望「只有浏览器走 Clash」,更需要在 Clash 侧收窄 TUN 覆盖或改用按进程分流(Windows 可参考 Windows 上 Clash Meta 按进程分流),而不是只改浏览器。

第 2 步:DNS、fake-ip 与企业域名解析

当 Clash 打开 fake-ip 且配合 DNS 劫持 时,应用层看到的「解析结果」可能与系统 nslookup 不一致:某些客户端会拿到198.18.x.x 段的伪地址,再由内核把连接映射回域名。企业 VPN 若在这一层被「假地址」误导,就会表现为握手超时连上后访问内网 IP 异常。处理思路通常是:为企业相关域名配置 nameserver-policy系统 DNS 或公司指定 DNS、在 fake-ip-filter 中列入 VPN 网关与 SSO 域名、或对该类域名关闭 fake-ip 路径。更完整的 DNS 回落、过滤与 fake-ip-filter 组合示例,见 Clash Meta DNS 与 fake-ip-filter 实测

若你的网络是 IPv6 双栈,还要警惕「解析走了 AAAA、路由却走了代理侧」的割裂,可对照 IPv6 双栈下 DNS 与直连规则 做一次收敛。验证时建议同时看 Clash 连接日志里的「解析到的地址」与系统侧 nslookup vpn.example.com,两边若长期不一致,就应优先修 DNS 策略而不是换节点。

第 3 步:用路由表核对 VPN 与 Clash 的优先级

AnyConnect 连接成功后,操作系统会下发指向隧道接口的主机路由或网段路由;Clash 的 TUN 也可能插入更优先或更具体的默认路由。当两者度量(metric)或前缀长度打架时,就会出现「VPN 显示已连接,但流量没进隧道」或相反「所有流量被 Clash 截胡」。在 Windows 上,用管理员 PowerShell 执行 route print -4,关注目标为 0.0.0.0/0 的几条默认路由各自的接口索引与度量;在 macOS 上,用 netstat -rn -f inet 查看 default 与指向 utun 的条目。对比「仅开 VPN」「仅开 Clash」「两者同开」三份输出,通常一眼能看出是谁抢默认路由

修正策略上,优先在 Clash 配置里用更细的路由绕过(例如仅代理需要翻墙的网段、其余直连),而不是在操作系统里手动 route delete 企业路由——后者容易误伤生产网络。若你曾遇到「关 Clash 后系统代理仍指本地空端口」这类残留型问题,也可顺带阅读 退出 Clash 后的系统代理与 TUN 清理,避免把 VPN 故障与历史残留混在一起误判。

合规提醒:部分雇主禁止在个人代理与企业 VPN并存场景下自行改路由或抓包。请遵守公司信息安全政策;若文档要求「全隧道」或禁止本地分流,应以IT 部门指引为准,本文仅供在被授权的排障范围内使用。

GlobalProtect 与同类 SSL VPN 的顺带对照

Palo Alto GlobalProtect 与 AnyConnect 在「排障维度」上高度相似:同样依赖门户域名解析证书链校验UDP/4500 类端口拆分隧道路由。因此本文的 DIRECT 白名单DNS 过滤路由表对照方法,大多可以原样迁移到 GlobalProtect——差别主要在具体域名与内网段,需要你在连接日志或 IT 文档中替换为自家清单。若握手阶段报 TLS 相关错误,可结合 连接日志与 TLS 排障 区分是「被代理打断」还是「公司网关侧拒绝」。

第 4 步:用连接日志自证命中哪条策略

改完规则后,务必打开客户端的连接日志 / 实时连接,在点击 AnyConnect「连接」的瞬间观察:目标域名或 IP、命中的 rule 名称、走到的 policy 是否为 DIRECT。若仍显示走了某个海外节点,说明白名单仍未命中——回去检查规则顺序、是否被 RULE-SET 合并覆盖、或是否存在大小写与后缀写错。选客户端时,带清晰日志面板的发行版会省大量时间,可对照 如何选择适合自己的 Clash 客户端 评估自己的使用习惯。

结语

ClashCisco AnyConnect 并非天生互斥;真正冲突的,是未收窄的全局接管企业 VPN 对路由/DNS 的刚性假设。把问题拆成「模式 → 规则 DIRECT → DNS → 路由表 → 日志自证」五步,多数「秒断」「内网不可达」都能定位到具体一层。相比反复重装 VPN 客户端,先在 Clash 侧做可回滚的小步修改,通常成本更低、也更易于向 IT 说明。

若你希望长期稳定地在合规前提下使用图形化规则与日志,选择维护积极、对 TUN / DNS / 策略组 文档齐全的 Clash 发行版,会比手工折腾系统路由更省心。

立即免费下载 Clash,开启流畅上网新体验,用清晰的分流与日志面板,把个人代理与企业远程接入尽量「各走各路」。