WebRTC 连接

WebRTC 的 IPv6 直连:更少 NAT,不代表更少问题

梳理双栈候选、IPv6 防火墙、临时地址、NAT64、Happy Eyeballs 与 TURN IPv6 支持,避免只在 IPv4 环境验证连接。

工程上最危险的不是完全不可用,而是在理想环境里正常、进入真实网络和真实数据量后悄悄失去边界。 IPv6 可能给设备提供全球可路由地址,减少传统端口映射,但操作系统和路由器防火墙仍会阻止未经允许的入站流量。双栈设备还会同时收集 IPv4 与 IPv6 候选,最终路径取决于实际检查而非地址看起来更现代。

WebRTC 的判断依据必须来自两端状态、信令版本和实际选中的候选对。只看某个浏览器回调会遗漏 glare、ICE 切路与对端刷新造成的分叉。

工程边界与取舍

先把下面几项写成可评审的规则,而不是散落在回调和界面判断里。规则越清楚,后续扩容、兼容和排错越少靠猜。

  • 候选模型保存地址族与协议,并允许 IPv4、IPv6 候选对并行检查。
  • TURN 域名发布 A 与 AAAA 记录前,确认服务监听、证书和中继地址都支持 IPv6。
  • 路径 UI 只展示 IPv6 类型和范围,不显示完整临时地址或稳定接口标识。

IPv6 的正确策略是作为一等候选并行验证,而不是强制优先或完全禁用;所有地址解析、日志和中继部署都要真正具备双栈能力。

生产环境会怎样出错

不要把异常路径理解成弹一次提示。它还包括在途工作如何停、对端如何获知、残留数据如何处置,以及下一次操作是否会继承旧状态。

  • 代码用冒号分割 host:port,遇到方括号 IPv6 地址后端口解析完全错误。
  • DNS 返回 AAAA 但服务器没有 IPv6 路由,客户端等待超时后才尝试 IPv4。
  • 只按字符串比较地址去重,IPv6 压缩表示不同导致同一候选重复进入状态机。

把测试跑成闭环

用已知输入和可控故障建立金样本,然后把线上低基数指标与测试结果对齐。只有指标能提前识别同类退化,验证才真正延伸到生产。

  1. 在原生双栈、仅 IPv6+NAT64、仅 IPv4 和 IPv6 入站受限网络分别跑双浏览器测试。
  2. 验证 URL、日志脱敏、candidate 解析和 TURN 下发对方括号地址的处理。
  3. 模拟 AAAA 黑洞,确认连接不会因串行超时显著变慢且最终路径标记准确。

可以上线的标准是:用户知道当前发生了什么,系统在异常后能停止或恢复,资源不会无界增长,运维也能从最小必要证据定位阶段。

把方法变成一次真实连接

打开 uCopy,让两台设备在浏览器里安全连接并开始传输。

开始免费使用