为什么WebRTC需要本地IP?

信息安全 网络RTC
2021-08-24 13:16:46

这个问题为什么我的内部 IP 地址(私有)在 Internet 上是可见的?强调可以从网站访问本地 IP,因为 WebRTC 需要它。

然而,它并没有回答为什么WebRTC 需要它。STUN协议的 wiki 页面:

当客户端评估了它的外部地址时,它可以通过共享外部 NAT 地址而不是私有地址,将其用作与对等方通信的候选地址,私有地址无法从公共网络上的对等方访问

它没有说需要披露本地 IP。实际上,如果两个对等点都已将其各自 NAT 的公共 IP 与分配给它们的相应端口交换,那么它们现在可以通信并且不涉及本地 IP。

有人可以提供一个简单的解释或合法需要本地 IP 的情况吗?

1个回答

WebRTC 不需要内部 IP 地址来进行P2P通信。检索它的是STUN服务器webRTC 的目的是让客户端发现它的公共 IP 地址。

云端,STUN 服务器有以下工作要做:

  • 发现客户的私有和公共 IP 地址

  • 发现内部和外部端口

  • 背后是什么类型的 NAT 客户端

除非 STUN 服务器知道您的Int IP:int Ports,否则 STUN 服务器无法发现您所在的 NAT 类型

您可能会觉得发现 NAT 的类型是不必要的,但对于 STUN 协议来说这很重要。如果 STUN 发现您在对称 NAT之后,则无法启动 P2P 会话。

STUN 服务器将此报告给 webRTC,并且 webRTC使用RTC Peer Connection Object API从 STUN 切换到TURN 。它发生在对称 NAT 的情况下。

所以,基本上它是一个 STUN 服务器想知道你的内部 IP 而不是 P2P 协议。您的内部 IP 仅对运行 STUN 服务器的站点可见。