Skip to content

在 AI 辅助研发常态化的今天,许多开发者(如使用 Antigravity IDE、Cursor、Copilot 等工具)需要依赖代理工具的 TUN 模式(虚拟网卡) 来保证 AI 流式传输与 Google / OAuth 账号鉴权顺畅无阻。

然而,当开启 TUN 模式后去连接公司的企业级 VPN(如 Windows 原生 IKEv2/L2TP 等)时,常常会遇到非常让人头疼的“双网冲突”现象:

  1. VPN 刚点连接显示“已连接”,但几秒钟内就自动断开(连上即秒断);
  2. 断开问题解决后,连上 VPN 却发现外网和 AI 代理全线瘫痪,只剩公司内网能用;
  3. 内网 IP(如数据库)能连通,但企业内部域名(如 GitLab code.huanyu.com、企业门户 portal.huanyu.com)却全部打不开。

本文以寰宇公司的企业网络环境为例,深入剖析这三大核心冲突的底层技术机制,并提供经实战验证的完整解决方案及一键配置脚本。


一、双网冲突的三大底层根因剖析 ​

1. 冲突一:IKEv2 UDP 心跳报文被劫持(导致“连上即秒断”) ​

企业 IKEv2 VPN 依赖 UDP 500(IKE 协商) 与 UDP 4500(NAT-T / ESP) 端口与公网 VPN 服务器保持通信,并且在握手后会周期性发送 DPD(Dead Peer Detection 心跳保活包)。

当 Clash 开启 TUN 模式且未做特殊排除时,Clash 的虚拟网卡(wintun)会抓取系统发出的出站 UDP 流量。发往企业 VPN 服务器的 UDP 500/4500 心跳包被捕获并进行了 NAT 转发篡改,导致企业 VPN 服务器收不到合法的保活心跳,判定对端异常,从而在数秒内主动挂断连接。

2. 冲突二:默认网关被 VPN 霸占(导致“外网与 AI 瞬间断网”) ​

Windows 自带的 VPN 客户端默认勾选了 “在远程网络上使用默认网关”。 一旦拨通 VPN,Windows 会将系统的全局默认网关(0.0.0.0/0)强制指向 VPN 虚拟网卡,把所有外网流量全部塞给企业内网服务器。由于企业 VPN 无法访问境外网络,导致 Google 认证、AI 助手和常规外网瞬间断网,整台电脑只剩企业内网 IP 能通。

3. 冲突三:内网 DNS 劫持(导致“IP 能通但域名打不开”) ​

企业内部专属域名(如 code.huanyu.com、portal.huanyu.com)只能由企业 VPN 下发的私有 DNS 服务器(如 10.18.x.x)解析。

而 Clash TUN 模式默认接管了系统的全局 DNS 请求,强制向公共 DNS(如 8.8.8.8、223.5.5.5)去查询这些内部域名。公网 DNS 根本不存在这些记录(返回 Non-existent domain),造成了 “直连 IP 正常,但域名和 Git 提交全线瘫痪”。


二、三步落地完整实操 ​

第一步:Clash Verge 配置 TUN 排除(彻底解决 VPN 秒断) ​

核心原理:告诉 Clash TUN 驱动,发往企业 VPN 服务器公网 IP 以及内网网段的数据包一律原样放行,严禁拦截。

  1. 打开 Clash Verge,进入左侧 「设置」。
  2. 找到 「虚拟网卡模式」,点击文字右侧的 设置齿轮 ⚙️。
  3. 在弹出的窗口中配置以下关键参数:
    • 严格路由 (Strict Route):开启(防止 Clash 抢占其他物理/虚拟网卡的专用路由)
    • 自动选择流量出口接口:开启
    • TUN 模式堆栈:推荐选择 System 或 Mixed
    • 排除自定义网段 (Bypass):添加企业 VPN 服务器的真实公网 IP(例如 123.60.100.11/32 等)及内网网段:
      text
      123.60.100.11/32
      123.60.100.12/32
      10.0.0.0/8
      172.16.0.0/12
      192.168.0.0/16
  4. 点击右下角 「保存」。
  5. 在设置页将 「虚拟网卡模式」 开关 先关掉,再重新打开,使排除路由生效。

第二步:启用 VPN 拆分隧道(彻底解决外网与 AI 断网) ​

核心原理:剥夺企业 VPN 对“全局外网网关”的统治权,仅允许 VPN 接管企业内网私有网段(10.x / 172.x)。

方式 A:一键批处理脚本(推荐) ​

在桌面新建文件 一键配置VPN拆分隧道.bat,右键以管理员身份运行(或双击运行):

bat
@echo off
chcp 65001 >nul
title 一键配置 VPN 拆分隧道 (解决内外网冲突)

>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
    "%temp%\getadmin.vbs"
    exit /B
)
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )

powershell -NoProfile -ExecutionPolicy Bypass -Command ^
    "Get-VpnConnection | ForEach-Object {" ^
    "    Write-Host ('正在配置: ' + $_.Name) -ForegroundColor Cyan;" ^
    "    Set-VpnConnection -Name $_.Name -SplitTunneling $true;" ^
    "    Add-VpnConnectionRoute -ConnectionName $_.Name -DestinationPrefix '10.0.0.0/8' -ErrorAction SilentlyContinue;" ^
    "    Add-VpnConnectionRoute -ConnectionName $_.Name -DestinationPrefix '172.16.0.0/12' -ErrorAction SilentlyContinue;" ^
    "    Add-VpnConnectionRoute -ConnectionName $_.Name -DestinationPrefix '192.168.0.0/16' -ErrorAction SilentlyContinue;" ^
    "};" ^
    "Write-Host '[成功] VPN 拆分隧道已配置完成!' -ForegroundColor Green;"

pause

方式 B:PowerShell 手动执行 ​

以管理员身份打开 PowerShell 执行:

powershell
Get-VpnConnection | ForEach-Object { 
    Set-VpnConnection -Name $_.Name -SplitTunneling $true
    Add-VpnConnectionRoute -ConnectionName $_.Name -DestinationPrefix "10.0.0.0/8" -ErrorAction SilentlyContinue
    Add-VpnConnectionRoute -ConnectionName $_.Name -DestinationPrefix "172.16.0.0/12" -ErrorAction SilentlyContinue
}

第三步:Clash Verge 配置企业私有 DNS 分流(解决域名打不开) ​

核心原理:通过 Clash Verge 的全局扩展覆写(Merge),让所有包含企业域名的查询强制交由 系统/VPN 下发的内网 DNS(system) 解析。

  1. 打开 Clash Verge,点击左侧菜单的 「订阅」。
  2. 找到 「全局扩展覆写配置」 卡片,鼠标右键 ➔「编辑文件」。
  3. 清空原有内容,写入以下 YAML 配置:
yaml
# 1. 遇到企业内网私有域名,强制使用系统/VPN 下发的内网 DNS 解析
dns:
  nameserver-policy:
    "*.huanyu.com": "system"
    "*.huanyucloud.com": "system"
    "code.huanyu.com": "system"
    "portal.huanyu.com": "system"

# 2. 将企业域名直连规则置顶,避免走代理节点
prepend-rules:
  - DOMAIN-SUFFIX,huanyu.com,DIRECT
  - DOMAIN-SUFFIX,huanyucloud.com,DIRECT
  - DOMAIN-KEYWORD,huanyu,DIRECT
  1. 点击右下角 「保存」。
  2. 回到左侧 「设置」 页面,将 「虚拟网卡模式」 开关 先关后开一次 重新加载生效。

三、日常使用习惯与顺序 ​

  • 初始化阶段(只需做一次): 按照上述三步配置好 Clash Verge 并运行一次批处理脚本。
  • 日常开发阶段(顺序完全随意):
    1. 开机后 Clash Verge 保持常开(TUN 模式开启),顺畅使用 AI 编码。
    2. 需要联调测试、查数据库、推代码时,随时点击连接 VPN。
    3. 联调结束想断开 VPN 就断开,AI 和外网完全不受任何影响,永不掉线。

四、最终效果验证 ​

测试项访问目标路由路径实际表现
AI 编码助力Antigravity IDE / Google 认证Clash TUN ➔ 海外代理节点实时补全、AI 对话秒响应,登录不掉线
VPN 稳定性企业 IKEv2 DPD 链路物理网卡 Bypass 直连VPN 全天稳定连接,永不秒断
外网连通性Google / GitHub / 公网Clash TUN ➔ 代理直连分流连上 VPN 后外网依然高速畅通
Git 代码协同code.huanyu.com内网 DNS ➔ VPN 直连git pull / git push 顺畅拉取推送
内部管理系统https://portal.huanyu.com内网 DNS ➔ VPN 直连企业门户、OA 网页秒开
数据库直连10.88.x.x:3306VPN 拆分隧道直连本地服务测试、Navicat 秒连

五、总结 ​

双网同联的底层逻辑在于 “三大权力明确分治”:

  1. 防秒断:通过 TUN Bypass 排除企业 VPN 服务器公网 IP,保护 UDP 500/4500 心跳报文;
  2. 保外网:通过 Split Tunneling(拆分隧道) 剥夺 VPN 的全局默认网关霸权;
  3. 通域名:通过 Nameserver Policy 将内部域名精准放行给企业专属内网 DNS。

从此告别来回反复开关 VPN 与代理的痛点,打造极致丝滑的现代 AI 研发环境。

基于 VitePress 构建 · 遵循 CC BY-NC-SA 4.0 许可协议