P 机场推荐与网络诊断
开发者连接 受控测量实录 可复核·可证伪

实测案例:浏览器与终端访问同一 GitHub 域名时的路由隔离差异

测试目标:彻底复现并查明为什么 Chrome 浏览器能正常秒开 github.com,而系统终端 iTerm2 执行 git clone 或 curl 却无限超时的底层系统机制。

📋 实验环境与受控测量基准

测试目标端点:api.github.com / github.com (Port 443 / 22)
本地宽带环境:上海联通 500M 宽带 (物理直连光猫)
使用客户端版本:Surge Mac v5.8 / Clash Verge Rev (Mihomo Core)
采样时间窗口:2026-11-06 16:30
单轮采样规则:同时发起浏览器 Fetch 请求与命令行 curl / git 操作各 10 次,捕获网卡原始抓包

💡 核心观察与事实发现

浏览器(Chrome/Safari)遵循操作系统图形界面注入的系统代理设置(System Proxy PAC/HTTP),而终端命令行(zsh/bash)进程完全独立于该机制,除非显式设置 all_proxy 环境变量或开启底层 TUN 虚拟网卡,否则所有流量默认强行直连导致 RST 连接重置。

详细数据分析与底层机制拆解

现象对比记录与 Wireshark 抓包比对

  • 浏览器端执行行为:

访问 https://api.github.com/zen,耗时 165ms 正常返回 HTTP 200。Wireshark 抓包显示请求流经本地 127.0.0.1:7897 代理监听端口,随后被客户端以加密协议封装送出,安全无阻。

  • 命令行端执行行为 (未配置环境变量):

执行 curl -v https://api.github.com/zen,Wireshark 捕获到操作系统直接向 GitHub 境外 IP 发送 TCP SYN 握手包。该包在途经国际出口网关时被深度包检测(DPI)识别,返回 TCP RST 阻断报文,命令在 30 秒超时后报错:Failed to connect to api.github.com port 443: Connection refused。

  • 命令行端执行行为 (启用 TUN 虚拟网卡模式):

开启 Clash TUN 模式或 Surge 增强模式后,虚拟网卡驱动接管操作系统所有网络出入接口,命令行未经任何改动即可直接秒开。

终端各工具代理接管差异表

命令行工具 是否自动读取系统图形代理 专属配置参数 / 环境变量 推荐解决方案
curl / wget ❌ 默认完全忽略 export http_proxy=...; export https_proxy=... 配置 zsh 别名或开启 TUN
git clone (HTTPS) ❌ 默认完全忽略 git config --global http.proxy http://127.0.0.1:7890 针对 github.com 域名定向配置代理
git clone (SSH 22) ❌ 默认完全忽略 需要配置 ~/.ssh/config 的 ProxyCommand 优先改用 HTTPS 协议配合代理
Docker pull ❌ 默认完全忽略 需要在 /etc/docker/daemon.json 配置代理 在 Docker Desktop 设置中开启代理
pip / npm / cargo ❌ 默认完全忽略 依赖各个包管理器的专用配置文件或环境变量 开启 TUN 虚拟网卡彻底免配置
🦈 Wireshark 抓包过滤语法 (BPF Filter) 网络工程精准捕获
ip.addr == 20.205.243.166 && (tcp.flags.reset == 1 || tcp.flags.syn == 1)
终端复现复核命令:
# 在 ~/.zshrc 中注入一键终端代理快捷开关
alias proxy="export http_proxy=http://127.0.0.1:7897; export https_proxy=http://127.0.0.1:7897; export all_proxy=socks5://127.0.0.1:7897; echo 'Proxy Environment Enabled'"
alias unproxy="unset http_proxy https_proxy all_proxy; echo 'Proxy Environment Disabled'"

→ 实验室基于该实验的工程落地建议

开发技术人员强烈建议在 Clash Verge Rev 或 sing-box 中启用 TUN 虚拟网卡模式,一劳永逸接管系统所有命令行、后台守护进程与编译器的流量。

如何自行复核本篇实验数据?

科学的精髓在于「可复现、可核验与可证伪」。任何读者均可在自己的本地网络环境中,复现本篇场景笔记的测量过程:

  1. 打开本站「我的连接对照 (A/B)」工具;
  2. 目标端点选择为本实验相同的受控服务地址(api.github.com / github.com (Port 443 / 22));
  3. 单轮采样样本数设定为 15~20 次,确保中位数与四分位距(IQR)具有充分的统计置信度;
  4. 对比记录导出的 JSON 结构化数据,若您的观测与本篇结论有较大偏差,欢迎向编辑部提交原始抓包日志交流。