公司网、校园网、对称 NAT 传不了文件怎么办
在公司、学校或者部分移动网络里,点对点传输经常失败。原因通常不是浏览器或网站,而是网络本身不允许「陌生地址主动打进来」。
怎么判断是不是对称 NAT
失败页会给出候选统计,例如 host 2 / srflx 4 / relay 0:host 是本机地址,srflx 是通过 STUN 拿到的公网映射,relay 是中继。
如果 srflx 有值但连通性检查全失败,基本就是对称 NAT 或防火墙拦截;如果 srflx 都是 0,说明 STUN 都没出去,网络限制更严格。
三条路,按顺序试
| 顺序 | 做法 | 说明 |
|---|---|---|
| 1 | 换网络 | 手机热点通常最快:换一个出口,NAT 类型往往就变了 |
| 2 | 用同一个码重连 | 点「重新尝试」,房间和已选文件都还在,不用重新发码 |
| 3 | 改用中转 | 打不通时的兜底:文件经服务器转一趟,能传但更慢更费流量,传完可删 |
预防:先确认环境
- 关掉 VPN / 代理再试,它们会改写路由,干扰打洞。
- 双方尽量连同一个 Wi-Fi;手机热点是很好的验证手段。
- 如果一方在海外,双方都被 NAT 挡住时,优先考虑中转。
为什么不做「自动中转」
自动中转会在用户不知情的情况下把文件传到服务器,这既影响隐私预期,也让「直连」这件事失去意义。所以这里选择:打不通就明确失败,把选择权交给用户。
一分钟判断是不是网络的问题
用手机开热点,把其中一台设备切到热点上,再试一次。如果立刻能通,说明原来的网络就是对称 NAT 或防火墙限制;如果还是不行,问题可能在设备或浏览器(比如装了会拦截 WebRTC 的扩展)。
企业网常见的额外限制
- 防火墙只放行 80/443,UDP 高端口被拦,STUN 直接失败。
- HTTP 代理强制所有流量走代理,打洞无从谈起。
- 深度包检测识别 WebRTC 流量并阻断。
- 终端安全软件禁用浏览器的 WebRTC 组件。
用中转的步骤与善后
失败页点「改用中转」→ 文件上传到 Cloudflare R2 → 得到一个下载链接,发给对方 → 对方下载。
中转文件最多保留 24 小时;传完可以在页面上点删除,立即移除服务器上的副本。
为什么手机热点常常能通
热点相当于换了一个出口:原来公司网把你藏在对称 NAT 后面,热点通常给你一个运营商侧的锥形 NAT(或可用的 CGNAT),打洞就有机会成功。
但热点不是万能:如果双方都在运营商 CGNAT 后面,仍然可能失败。这时候就别跟网络较劲了,用中转更省时间。
常见问题
- 手机热点能解决吗?
- 大多数情况下能。热点相当于换了一个 NAT,双方都在运营商 CGNAT 时仍有失败可能。
- 开了 VPN 会怎样?
- 常见结果是所有候选都走 VPN 出口,打洞失败或绕远;先关掉再试。
- 中转的文件安全吗?
- 只在你主动选择时上传,最多 24 小时自动删除,也可以立即手动删除。