使用 TURN 的 WebRTC 路由而不向对等方暴露 IP 地址

WebRTC routing using TURN without exposing IP address to peers

我正在寻找一种方法来实现客户端到客户端的通信,而无需对等方知道彼此的 IP 地址。将 WebRTC 与 TURN 结合使用(查看 coturn) would be ideal, for the clients already supporting the protocol. But reading from the TURN specification 它指出:

the client MUST include an XOR-PEER-ADDRESS attribute and a DATA attribute. The XOR-PEER-ADDRESS attribute contains the transport address of the peer to which the data is to be sent.

所以协议似乎规定了对等 IP。对我来说最理想的是,这个属性可以是一个提供的(匿名)密钥,我可以在路由 table 中将其映射到 TURN 服务器上的 IP。更新路由 table 将由信令服务器处理。

是否有支持此类功能的东西,或者我应该计划自己编写客户端和 TURN 功能?在我的例子中,所有流量当然会通过 TURN 服务器路由。

用户 coTURN 并将 iceTransportPolicy 选项设置为 relay(默认为 all),然后 peerConnection 将仅生成 relay candidates(TURN).
因此媒体将仅通过 TURN 服务器流动。
同行不会知道远程用户 IP(Reflex/Host)。

创建 peerConnection 为 fllowing

var iceServers = [{"urls":["turn:TURN_IP:3478?transport=udp"],"username":"TURN_USERNAME","credential":"TURN_PASWD"}];
var config = {"iceServers": iceServers, "iceTransportPolicy": "relay"};
var constraints = [{"DtlsSrtpKeyAgreement": true}];
pc = new RTCPeerConnection(config, constraints);