在没有 TURN 服务器的情况下,WebRTC 是否过于侵犯隐私而无法用于视频聊天?
Is WebRTC too privacy invasive to use for video chat without TURN servers?
我想实现一个简单的视频聊天系统,供学生互相辅导。我是一个人秀,我想要一个系统,我可以 运行 以一种经济高效的方式从 10 个用户开始,并希望根据需要扩展。
WebRTC 似乎是构建此功能的绝佳、低延迟且廉价的选择。但是,如果客户端正在通信,那么它们必须知道彼此的 public IP。这是一个重要的隐私或安全问题吗?
有人获取我的 IP 地址的最坏情况是什么?难道任何恶意行为者都必须通过我的 ISP 才能获得我的具体位置吗?
谢谢!
WebRTC 不一定是 P2P。你可以 运行 一个 SFU。每个用户将他们的视频上传到您的服务器,服务器将通过 WebRTC 分发。那么用户永远不会知道彼此的IP。
我没有确切的数字,但也不贵。您最大的开支可能是带宽。存在许多开源 SFU,this 是一个很好的入门列表。
如果你自己托管,WebRTC 可以非常cost-effective。我已经 运行 galene.org 的 SFU(免责声明:我是主要开发人员),它用于多达一百名学生的多个讲座。尽管这是一个 full-fledged SFU(而不仅仅是一个 TURN 服务器),但托管费用仅超过 6 欧元/月。
如果您的辅导课程只涉及两三个人,那么 peer-to-peer WebRTC 可能就足够了,但即便如此,仍然需要 TURN 服务器,尤其是当您的一些用户在大学网络上时。对于较大的群体,您将需要通过 SFU 推动您的流量。
如果你peer-to-peerWebRTC,那么任何用户都可以知道他们正在与之通信的任何用户的IP;这很可能不是问题,因为 IP 地址很可能已经被公开(例如在邮件 headers 中)。如果你通过 SFU,那么 IP 地址不会被故意泄露,但它们仍然可能会泄露;比如上面提到的SFU实现(Galene) discloses IP addresses when a user initiates a file transfer since file transfers happen directly between clients, in a peer-to-peer fashion. (It may be possible to avoid this disclosure by setting the iceTransportPolicy
field to relay
in the PeerConnection
constructor,但是效果如何我还没有测试过)
我想实现一个简单的视频聊天系统,供学生互相辅导。我是一个人秀,我想要一个系统,我可以 运行 以一种经济高效的方式从 10 个用户开始,并希望根据需要扩展。
WebRTC 似乎是构建此功能的绝佳、低延迟且廉价的选择。但是,如果客户端正在通信,那么它们必须知道彼此的 public IP。这是一个重要的隐私或安全问题吗?
有人获取我的 IP 地址的最坏情况是什么?难道任何恶意行为者都必须通过我的 ISP 才能获得我的具体位置吗?
谢谢!
WebRTC 不一定是 P2P。你可以 运行 一个 SFU。每个用户将他们的视频上传到您的服务器,服务器将通过 WebRTC 分发。那么用户永远不会知道彼此的IP。
我没有确切的数字,但也不贵。您最大的开支可能是带宽。存在许多开源 SFU,this 是一个很好的入门列表。
如果你自己托管,WebRTC 可以非常cost-effective。我已经 运行 galene.org 的 SFU(免责声明:我是主要开发人员),它用于多达一百名学生的多个讲座。尽管这是一个 full-fledged SFU(而不仅仅是一个 TURN 服务器),但托管费用仅超过 6 欧元/月。
如果您的辅导课程只涉及两三个人,那么 peer-to-peer WebRTC 可能就足够了,但即便如此,仍然需要 TURN 服务器,尤其是当您的一些用户在大学网络上时。对于较大的群体,您将需要通过 SFU 推动您的流量。
如果你peer-to-peerWebRTC,那么任何用户都可以知道他们正在与之通信的任何用户的IP;这很可能不是问题,因为 IP 地址很可能已经被公开(例如在邮件 headers 中)。如果你通过 SFU,那么 IP 地址不会被故意泄露,但它们仍然可能会泄露;比如上面提到的SFU实现(Galene) discloses IP addresses when a user initiates a file transfer since file transfers happen directly between clients, in a peer-to-peer fashion. (It may be possible to avoid this disclosure by setting the iceTransportPolicy
field to relay
in the PeerConnection
constructor,但是效果如何我还没有测试过)