VPSKnow

AI 工具在公司网、校园网、家庭宽带、手机热点之间切换时怎么排障?

初级-中级
30分钟

同一套 AI 工具,在公司网、校园网、家里宽带和手机热点下表现完全不同,很正常。真正要做的不是凭感觉换节点,而是把网络环境、执行位置、代理配置、DNS / TLS、状态码逐层拆开。

公司和学校网络通常有明确安全策略。本文只讨论正常办公、学习和开发排障,不建议绕过单位规则、关闭 TLS 校验、共享账号凭据或把 API Key / Cookie / 代理账号发给别人。

先给结论

  • 先拿家庭宽带或手机热点做对照,证明代码、Key、账号本身是否正常。
  • 公司网和校园网优先查代理、证书、DNS、IPv6、域名白名单和端口限制。
  • 浏览器能打开,不代表 Cursor 终端、Codex CLI、npm、Git、Docker 能打开。
  • 长期开发不要依赖临时热点,优先考虑海外开发机、稳定机场节点或合规代理。

🧭 四种网络环境差异

网络 常见变量 典型表现
公司网络 代理、TLS 检查、防火墙、域名白名单、扩展市场限制 最容易出现浏览器能开、终端 / npm / Docker 不通。
校园网 认证门户、DNS 劫持、IPv6、晚高峰拥塞、端口限制 经常表现为部分网站可用、API 或 Docker 超时。
家庭宽带 路由器 DNS、IPv6 优先、运营商国际出口、透明代理 问题通常更稳定,适合做基准对照。
手机热点 移动网络 NAT、信号波动、省电策略、流量限制 适合临时验证,不适合作长期开发主力。

🧪 第一步:固定一个基准测试

每换一种网络,都用同一组命令测试。不要今天只测 ChatGPT,明天只测 npm;测试目标不一致,结论就会乱。

  # 先在每一种网络下都执行一遍,保存结果
hostname
date
curl ipinfo.io
curl -4 ipinfo.io
curl -6 ipinfo.io

# AI / 开发常用入口
curl -I https://chatgpt.com
curl -I https://api.openai.com/v1/models
curl -I https://api.anthropic.com/v1/models
curl -I https://github.com
curl -I https://registry.npmjs.org

# DNS
nslookup chatgpt.com
nslookup api.openai.com
nslookup github.com
nslookup registry.npmjs.org

Windows PowerShell 可以先用这组轻量命令:

  # Windows PowerShell
hostname
Get-Date
curl ipinfo.io
curl -I https://api.openai.com/v1/models
curl -I https://github.com
Resolve-DnsName api.openai.com
Resolve-DnsName registry.npmjs.org
Get-ChildItem Env: | Where-Object { $_.Name -match 'proxy' }

🏢 公司网络:代理、证书和策略

公司网络最常见的问题是“浏览器自动走了公司代理,但终端和开发工具没有走”。另一个高频点是 HTTPS 证书被公司安全网关检查,导致 npm、Git、Docker 或 API SDK 报证书错误。

代理是否只对浏览器生效

公司代理可能只写进浏览器或系统 PAC,终端、npm、Git、Docker 不一定自动读取。

TLS 证书是否被检查

公司安全网关可能替换证书链。正式项目不要通过关闭 TLS 校验来绕过问题。

域名是否被白名单限制

OpenAI、Anthropic、GitHub、npm、Docker Hub、VS Code 扩展市场可能需要分别放行。

本地安全软件是否拦截

EDR、防病毒、代理客户端和公司 VPN 可能改写流量。排查时要记录是否开启。

  # Linux / macOS / WSL / VPS
env | grep -i proxy

# Windows PowerShell
Get-ChildItem Env: | Where-Object { $_.Name -match 'proxy' }

# Git 代理
git config --global --get http.proxy
git config --global --get https.proxy
git config --show-origin --get-regexp "http.*proxy|https.*proxy"

# npm 代理
npm config get proxy
npm config get https-proxy
npm config get registry

🎓 校园网:认证、DNS 和 IPv6

校园网的变量更多:认证门户、宿舍网、教学楼网、图书馆网、IPv6、晚高峰出口都可能不同。最实用的做法是把校园网和手机热点对照起来测。

是否需要网页认证

校园网掉线或认证过期时,浏览器可能跳登录页,终端只看到超时或 HTML。

IPv6 是否优先但不可用

很多校园网 IPv6 表现和 IPv4 不一致,要分别 `curl -4` 与 `curl -6`。

DNS 是否被劫持

解析结果异常时,先换受信 DNS 或使用代理客户端的远端 DNS。

晚高峰是否拥塞

晚上 API、GitHub、NPM、Docker 慢,不一定是账号问题,可能是出口拥堵。

🏠 家庭宽带:路由器、运营商 DNS 和 IPv6

家庭宽带适合作基准环境。它通常没有公司网那种复杂代理策略,但会遇到路由器 DNS、运营商国际出口、IPv6 优先和代理客户端模式不一致的问题。

路由器 DNS

家里路由器可能缓存旧 DNS 或强制运营商 DNS,重启路由器和改 DNS 可作为对照。

IPv6 优先

如果 IPv6 出口差,浏览器和终端可能表现不同,先用 `curl -4` 验证。

代理客户端模式

只开浏览器插件不够,Cursor、Codex CLI、npm、git、Docker 往往需要 TUN 或系统代理。

多设备对照

同一网络下手机、电脑、远程 VPS 表现不同,说明问题可能在设备或客户端配置。

📱 手机热点:NAT、流量和不稳定链路

手机热点最大的价值是做临时对照:如果公司网不通、热点能通,代码、Key 和账号大概率没坏。但热点不适合长期拉 Docker 镜像、跑大依赖安装或做稳定 API 开发。

信号和省电

手机热点会受信号、省电、锁屏和运营商策略影响,长时间 Docker / npm 容易断。

NAT 和 IPv6

移动网络可能给你不同 NAT、不同 IPv6,排查时要记录出口 IP 和 ASN。

流量限制

热点适合临时验证 AI 网页和 API,不适合作大规模依赖安装和镜像拉取。

作为对照网络

如果公司网不通、热点能通,基本可以证明代码和 Key 大概率没坏。

🛠️ VS Code、npm、Git、Docker 分开查

AI 开发链路里,最容易被混在一起的是工具配置。一个工具能通,不代表另一个工具能通。

工具 常见误区 检查动作
VS Code / Cursor 界面能联网不代表内置终端联网;Remote SSH 终端是在远程机执行。 分别在本地终端、内置终端、Remote SSH 终端执行 `curl ipinfo.io`。
npm npm 有自己的 registry、proxy、https-proxy 配置,旧代理会残留。 执行 `npm ping`、`npm config get proxy`、`npm config get registry`。
Git HTTPS clone 和 SSH clone 是两条路径;公司网可能拦 22 端口。 执行 `git ls-remote https://github.com/openai/openai-node.git HEAD`。
Docker Docker Desktop、daemon、build、容器运行时代理并不是同一层。 分别测试宿主机、Docker daemon、一次性容器的网络。
API SDK SDK 报错要区分 timeout、401、403、429、5xx,不要混成网络问题。 先用最小 `curl -I`,再看 SDK 错误码和 request id。

Docker 需要额外注意:宿主机能联网,不代表容器和 build 阶段能联网。

  # 宿主机能通,不代表容器能通
docker run --rm curlimages/curl:latest https://ipinfo.io
docker run --rm curlimages/curl:latest -I https://api.openai.com/v1/models
docker run --rm curlimages/curl:latest -I https://registry.npmjs.org

# 如需给一次性容器传代理
docker run --rm \
  -e HTTP_PROXY=http://host.docker.internal:7890 \
  -e HTTPS_PROXY=http://host.docker.internal:7890 \
  curlimages/curl:latest -I https://api.openai.com/v1/models

🚫 不要这样修

不要关闭 TLS 校验

`npm strict-ssl false`、忽略证书错误、关闭验证只会把安全问题藏起来。

不要绕过单位网络策略

公司和学校网络有合规要求,正式项目优先走批准的代理、VPN 或远程开发机。

不要把 Key 发给网管或同事

排查网络只需要状态码、域名、时间、request id 和脱敏日志。

不要盲目换节点

先固定一个网络和一个出口,做对照测试;否则你不知道到底修好了什么。

不要把热点当长期方案

热点适合证明问题层级,不适合长期编译、拉镜像、跑 API。

不要把所有 403 都当网络故障

403 可能是权限、模型、项目、地区或策略问题,和超时不是一类。

最终排障清单

1

记录网络

公司网、校园网、家宽、热点分别记录时间、出口 IP、ASN、DNS 结果。

2

固定测试目标

每次都测 ChatGPT、API、GitHub、NPM、Docker,不要今天测 A 明天测 B。

3

区分执行位置

本机、WSL、Cursor 终端、Remote SSH、Docker 容器分别执行命令。

4

查代理残留

系统代理、环境变量、npm、Git、Docker、VS Code 都要单独看。

5

查 DNS / IPv6

强制 IPv4 / IPv6 对比,确认 DNS 是否被本地网络污染或劫持。

6

查状态码

timeout 先查网络;401 查 Key;403 查权限;429 查额度和并发;5xx 查服务端和重试。

7

选长期方案

公司/校园网长期受限时,考虑海外开发机、合规代理或固定出口,而不是每次临时修。

8

保持脱敏

日志里只保留状态码、域名、时间、request id 和环境,不保留 Key、Cookie、代理账号。

🧭 站内下一步

📚 资料来源

🚀 下一步行动