同一套 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 可能是权限、模型、项目、地区或策略问题,和超时不是一类。
✅ 最终排障清单
记录网络
公司网、校园网、家宽、热点分别记录时间、出口 IP、ASN、DNS 结果。
固定测试目标
每次都测 ChatGPT、API、GitHub、NPM、Docker,不要今天测 A 明天测 B。
区分执行位置
本机、WSL、Cursor 终端、Remote SSH、Docker 容器分别执行命令。
查代理残留
系统代理、环境变量、npm、Git、Docker、VS Code 都要单独看。
查 DNS / IPv6
强制 IPv4 / IPv6 对比,确认 DNS 是否被本地网络污染或劫持。
查状态码
timeout 先查网络;401 查 Key;403 查权限;429 查额度和并发;5xx 查服务端和重试。
选长期方案
公司/校园网长期受限时,考虑海外开发机、合规代理或固定出口,而不是每次临时修。
保持脱敏
日志里只保留状态码、域名、时间、request id 和环境,不保留 Key、Cookie、代理账号。
🧭 站内下一步
AI 工具终端网络排查
继续排查 PowerShell、WSL、Remote SSH、Docker、npm、git 和 API 出口。
API 状态码AI API 错误码排查
把超时、401、403、429 和 5xx 分开处理。
长期方案稳定 AI 网络环境指南
从机场、固定 IP、VPS 落地、住宅 IP 和海外开发机里选稳定路线。
账号出口AI 账号与网络出口稳定 FAQ
回答固定 IP、节点切换、DNS/WebRTC、住宅 IP 和 VPS 落地常见问题。
远程开发Codex / Cursor 海外 VPS 开发机
把代码、终端、GitHub、NPM、Docker 和 AI API 放到同一台海外机器。
工具入口VPS 工具箱
测试 IP 质量、网络质量、路由、YABS 和解锁状态。
📚 资料来源
- Visual Studio Code Network Connections:用于核对 VS Code 代理、证书和网络访问配置口径。
- npm config documentation:用于核对 npm 配置、proxy、https-proxy 和 registry 相关排查口径。
- Git config documentation:用于核对 Git `http.proxy` 等代理配置项。
- Docker CLI proxy documentation:用于核对 Docker CLI 和容器代理配置口径。
- Docker daemon proxy documentation:用于核对 Docker daemon 代理配置与 Docker Desktop 差异。
🚀 下一步行动
🚀 下一步行动
如果这篇帮你定位了是哪类网络在出问题,可以继续进入更细的排查路线:
AI 终端网络排查
继续排查 Cursor、Codex、npm、git、Docker 和 OpenAI API 是否走同一出口。
稳定 AI 网络环境指南
把机场、固定 IP、VPS 落地、住宅 IP 和海外开发机方案串起来。
VPS 推荐榜单
查看已测评和待测候选 VPS 商家,先看结论再去官网。
浏览更多教程
继续探索服务器安全、网站搭建、性能优化和 AI 环境主题。
还没有心仪的 VPS?
先看年度精选榜单和真实测评入口,再决定是否下单;还在学习阶段的话,可以继续回到教程索引按主题推进。