使用TURN的WebRTC路由,而不向对等方公开IP地址

使用TURN的WebRTC路由,而不向对等方公开IP地址,webrtc,turn,coturn,Webrtc,Turn,Coturn,我正在寻找一种方法来实现客户端到客户端的通信,而不让对等方知道彼此的IP地址。对于已经支持该协议的客户机,使用带有TURN(查看)的WebRTC将是理想的。但从报告中可以看出: 客户端必须包括XOR-PEER-ADDRESS属性和数据属性。XOR-PEER-ADDRESS属性包含要向其发送数据的对等方的传输地址 因此,协议似乎要求拥有对等IP。对我来说,这个属性最好是一个提供的(匿名)密钥,我可以将它映射到路由表中TURN服务器上的IP。更新路由表将由信令服务器处理 有没有什么东西支持这样的功能

我正在寻找一种方法来实现客户端到客户端的通信,而不让对等方知道彼此的IP地址。对于已经支持该协议的客户机,使用带有TURN(查看)的WebRTC将是理想的。但从报告中可以看出:

客户端必须包括XOR-PEER-ADDRESS属性和数据属性。XOR-PEER-ADDRESS属性包含要向其发送数据的对等方的传输地址

因此,协议似乎要求拥有对等IP。对我来说,这个属性最好是一个提供的(匿名)密钥,我可以将它映射到路由表中TURN服务器上的IP。更新路由表将由信令服务器处理


有没有什么东西支持这样的功能,或者我应该计划自己编写客户端和TURN功能?在我的情况下,所有流量当然都将通过TURN服务器路由。

用户coTURN并将
iceTransportPolicy
选项设置为
relay
(deafult是
all
),然后peerConnection将只生成
中继候选(TURN)

因此,媒体将仅通过TURN服务器流动。
对等方不会意识到远程用户的IP(反射/主机)

将peerConnection创建为FLOWING

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);

通过使用此选项,我可以通过turn服务器路由所有流量,但例如,发送指示在XOR-peer地址中包含对等ip,因此据我所知,这不起作用。好的,看起来你是对的,当通过turn服务器中继流量时,XOR-peer地址包含turn服务器ip。谢谢你的回答!