Skip to content

本文基于实际运行环境整理,只描述当前在用的技术方案。整理日期:2026-06-16。

一、要解决的三个问题

核心矛盾

  • Antigravity IDE依赖 Google 网络,必须通过代理/机场访问外网
  • aTrust(公司 VPN)安装后会接管系统路由表
  • Clash TUN同样会创建虚拟网卡接管路由表
  • 两者同时运行 →路由表冲突,内网或外网只能活一个

为什么 Clash 必须用规则模式?

所以 Clash必须开规则模式 + TUN,不能开全局。

解决方案

把 aTrust 塞进 WSL2 Podman 容器,只暴露代理端口,不碰宿主机路由表。Clash TUN 负责规则分流。

二、整体架构

┌─────────────────────── Windows 宿主机 ────────────────────────────┐
│                                                                      │
│  ┌─ 浏览器 ─► ZeroOmega ─► SOCKS5 {WSL_IP}:1080 ─────────┐        │
│  │   (内网OA/Jira)        (自动切换,绕过Clash)             │        │
│  │                                                            │        │
│  ├─ Antigravity IDE ─► Clash TUN ─► 机场节点 ──► Google      │       │
│  │                                                            │        │
│  ├─ Postman/Git ─► Clash 规则分流 ─┬─ 内网IP → aTrust代理   │       │
│  │                                 └─ 外网 → 机场             │       │
│  │                                                            │        │
│  ├─ Vite 本地开发 ► 127.0.0.1:18080 ─┐                      │        │
│  │   (localhost:9999)                  ▼                      │        │
│  │                        wsl-port-forward.py (WSL内)         │        │
│  │                        HTTP CONNECT 隧道                    │        │
│  └─────────────────────────────────────┼──────────────────────┘        │
                                        │                                 │
┌─────────────────── WSL2 Ubuntu ──────┼───────────────────────────────
│                                       ▼                                 │
│                          ┌────────────────────────┐                    │
│                          │  Podman 容器 (atrust)    │                    │
│                          │  内部IP: 10.88.0.2       │                    │
│                          │  SOCKS5 :1080            │                    │
│                          │  HTTP   :8888            │                    │
│                          │  VNC    :5901            │                    │
│                          │  aTrust VPN 隧道          │                    │
│                          └─────────────────────────┘                    │
│                                   ▼                                       │
│                        ┌── 公司内网 ──┐                                  │
│                        │ 10.43.86.213  │                                 │
│                        │ 10.43.86.249  │                                 │
│                        └───────────────┘                                 │
└─────────────────────────────────────────────────────────────────────────┘

三、技术栈

四、完整链路详解

4.1 Antigravity IDE → Google

Antigravity IDE
  → Clash TUN(系统级抓包)
  → Clash 规则匹配:Google AI 域名 → 机场
  → 机场节点 → Google 服务

Clash Merge 中明确指定以下域名走机场:

  • daily-cloudcode-pa.googleapis.com
  • gemini.google.com
  • generativelanguage.googleapis.com
  • ai.google.dev

4.2 浏览器 → 公司内网

浏览器访问 http://10.43.x.x:port/
  → ZeroOmega 自动切换规则匹配:
      10.*  / 172.16-31.*  / 192.168.*  / *.tower.com  / *.chinamobile.com
  → 直走 SOCKS5 {WSL_IP}:1080(Podman 容器端口)
  → aTrust VPN 隧道
  → 公司内网

ZeroOmega 情景配置:

WSL2 重启后 IP 会变,需更新 ZeroOmega 情景中的 server 地址。

4.3 Postman / Git → 公司内网(经 Clash 规则)

Postman / Git
  → Clash TUN 抓包
  → Clash 规则匹配:IP-CIDR 10.0.0.0/8 → 「公司内网」节点
  → 「公司内网」节点 = SOCKS5 127.0.0.1:1080
  → aTrust VPN 隧道 → 公司内网

4.4 Vite 本地开发 → 内网 API

浏览器 localhost:9999
  → Vite 代理 (target: http://127.0.0.1:18080)
  → WSL 端口穿透
  → wsl-port-forward.py 监听 18080
  → HTTP CONNECT 隧道 → 容器 HTTP 代理 127.0.0.1:8888
  → aTrust VPN 隧道
  → 内网 API

端口映射表:

所有 Vite 代理 target 必须写127.0.0.1,不能写localhost。Node.js v17+ 会把 localhost 解析为 IPv6::1,WSL 端口映射只支持 IPv4。

4.5 Git 提交

Clash TUN 模式下 git 流量已被系统级接管,通常不需要额外配置。

保底方案(关闭 TUN 时):

# 设置 git 全局代理
git config --global http.proxy socks5://{WSL_IP}:1080

# 移除代理
git config --global --unset http.proxy

五、Clash Verge Rev 配置

必备设置

Merge 配置

mode: rule

prepend-proxies:
  - name: 公司内网
    type: socks5
    server: 127.0.0.1
    port: 1080
    udp: true

prepend-rules:
  # 公司内网网段
  - IP-CIDR,10.0.0.0/8,公司内网
  - IP-CIDR,172.16.0.0/12,公司内网
  - IP-CIDR,192.168.0.0/16,公司内网

  # 钉钉直连
  - DOMAIN-SUFFIX,dingtalk.com,DIRECT
  - DOMAIN-SUFFIX,ddurl.to,DIRECT
  - DOMAIN-SUFFIX,alicdn.com,DIRECT

  # 微信直连
  - DOMAIN-SUFFIX,weixin.qq.com,DIRECT
  - DOMAIN-SUFFIX,wechat.com,DIRECT
  - DOMAIN-SUFFIX,qpic.cn,DIRECT
  - DOMAIN-SUFFIX,qlogo.cn,DIRECT

  # DeepSeek 直连
  - DOMAIN-SUFFIX,deepseek.com,DIRECT
  - DOMAIN-SUFFIX,deepseek.io,DIRECT

  # Antigravity / Google AI 走机场
  - DOMAIN,daily-cloudcode-pa.googleapis.com,机场
  - DOMAIN-SUFFIX,gemini.google.com,机场
  - DOMAIN-SUFFIX,generativelanguage.googleapis.com,机场
  - DOMAIN-SUFFIX,ai.google.dev,机场

delete-rules:
  - GEOSITE,private,DIRECT
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
  - IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve

tun:
  enable: true
  stack: mixed
  auto-route: true
  auto-detect-interface: true
  strict-route: true
  dns-hijack:
    - 0.0.0.0:53

dns:
  enable: true
  listen: 0.0.0.0:53
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 223.5.5.5
    - 8.8.8.8
  fallback:
    - tls://8.8.8.8:853
    - tls://1.1.1.1:853

关键点:必须用prepend-proxies(不能用proxies:,会覆盖机场节点);必须用delete-rules删掉订阅自带的10.x → DIRECT规则。

六、Podman aTrust 部署

podman-compose.yml

version: "3"
services:
  atrust:
    image: hagb/docker-atrust:latest
    container_name: atrust
    privileged: true
    devices:
      - /dev/net/tun:/dev/net/tun
    ports:
      - "5901:5901"     # VNC 端口
      - "1080:1080"     # SOCKS5 代理
      - "8888:8888"     # HTTP 代理
    environment:
      - PASSWORD=123456
    volumes:
      - ./data:/root/.config
    restart: unless-stopped

启动 & VNC 登录

# 启动容器
wsl -d Ubuntu -u root -e bash -lc "podman start atrust"

# VNC 登录(TightVNC Viewer)
# 地址:127.0.0.1::5901(双冒号)
# 密码:123456
# 在 VNC 窗口完成 aTrust 登录

拉取镜像(国内加速)

wsl -d Ubuntu -u root -e bash -lc "podman pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/hagb/docker-atrust:latest"

七、日常启动流程

每次开机

1. podman start atrust       → 启动 aTrust 容器
2. VNC 127.0.0.1::5901       → 若 aTrust 未连接则重新登录
3. 打开 Clash Verge           → 规则模式 + TUN 开启
4. ZeroOmega → 公司内网自动切换
5. wsl-port-forward.py (WSL内) → 本地开发时启动
6. pnpm dev                   → 启动开发服务

首次部署

1. 卸载 Windows 原生 aTrust(控制面板 → 程序和功能)
2. WSL 内安装 Podman
3. 拉取 aTrust 镜像(华为云加速)
4. 运行 podman-compose.yml 创建容器
5. VNC 登录 aTrust
6. 配置 Clash Verge Rev(Merge + TUN + 规则模式)
7. 安装 ZeroOmega,导入 zeroomega-config.json
8. 准备 wsl-port-forward.py

八、故障排查

内网打不开

1. podman ps    → 容器在跑?
2. VNC 看 aTrust 连接状态  → VPN 隧道建了?
3. curl -x socks5://127.0.0.1:1080  → 代理可达?
4. ZeroOmega 是否选了「公司内网自动切换」 → 不是「直接连接」
5. Clash 是否是规则模式  → 不是「全局」

Antigravity 无法连接 Google

1. Clash TUN 是否开启?
2. 是否规则模式?
3. 机场订阅是否正常?

Vite 代理报 500 / ECONNREFUSED

1. wsl-port-forward.py 是否在 WSL 内运行?
2. target 是否写的 127.0.0.1(不是 localhost)?
3. .env.development 中地址是否指向本地映射端口?

SOCKS5 卡死

# 重启容器(重启后需等 50s 让 SDP 同步)
wsl -d Ubuntu -u root -e bash -lc "podman restart atrust"

# 临时方案:ZeroOmega 切到「公司内网HTTP」(8888)

九、安全注意事项

附录:常用命令

# 容器状态
wsl -d Ubuntu -u root -e podman ps --filter name=atrust

# 内网连通性测试
curl.exe -x socks5://127.0.0.1:1080 -s -o NUL -w "%{http_code}" http://10.43.86.213

# WSL IP
wsl -d Ubuntu -- bash -c "hostname -I"

Powered by Horizon & VitePress