问题描述
我正在使用 xirsys 转服务器。
现在我想将位于对称 NAT 后面的客户端 A 与同样位于对称 NAT 后面的客户端 B 连接起来。
在客户端 A 我想运行这个命令,但我不知道我应该使用哪个端口:
sudo tcpdump -ni any port ???
在客户端 B 上我想运行这个命令,但我不知道我应该使用哪个 ip 和端口:
echo "Hello from B" | netcat ip??? port???
附注。 执行此命令后的 xirsys:
curl -s -H "Content-type: application/json" -XPUT "https://name:pass@global.xirsys.net/_turn/app" -d '{"format": "urls"}'
返回这样的东西
{
"s" : "ok","v" : {
"iceServers" : {
"credential" : "123","urls" : [
"stun:eu-turn4.xirsys.com","turn:eu-turn4.xirsys.com:80?transport=udp","turn:eu-turn4.xirsys.com:3478?transport=udp","turn:eu-turn4.xirsys.com:80?transport=tcp","turn:eu-turn4.xirsys.com:3478?transport=tcp","turns:eu-turn4.xirsys.com:443?transport=tcp","turns:eu-turn4.xirsys.com:5349?transport=tcp"
],"username" : "123"
}
}
}
解决方法
在 TURN 场景中,两个对等方通常标记为 Client 和 Peer,其中 Client 是连接的发起者,Peer 服从 Client 提供的数据。
连接时,所有数据都通过主端口从客户端通过 TURN 服务器发送。因此,例如,如果客户端使用 turn:eu-turn4.xirsys.com:3478?transport=udp
作为其选择路由,那么所有客户端数据包都将通过端口 3478 发送。
为了与 Peer 建立连接,客户端将在 TURN 服务器上请求端口 Allocation
。来自 TURN 服务器的 Allocation
响应将包含服务器上新创建的端口(通常大于 16k),称为映射中继地址。然后,客户端应将此端口与 Peer 通信(通常通过 WebSocket 信令),以便 Peer 可以连接到 TURN 服务器并开始接收/发送数据包。 Peers 连接始终通过 UDP。
至于TURN IP;你为什么需要这个?您的用例是什么?