Webrtc连接翻转异常行为与中继候选者

Webrtc连接翻转异常行为与中继候选者,webrtc,nat,rfc5766turnserver,Webrtc,Nat,Rfc5766turnserver,我有两个客户端通过webrtc进行通信。(客户端A用js编写,客户端B用带aiortc的Python编写)。现在,客户端A希望从移动网络连接,因此需要一个转向中继连接 我已经设置了一个回合服务器,似乎做他的工作。但现在只有大约50%的连接成功。我已经知道他们何时成功,何时失败: 成功情况下的SDP中继信息: 向客户提供 a=candidate:3 2 UDP 92217086 172.31.16.8 59986 typ relay raddr 172.31.16.8 rport 59986 a

我有两个客户端通过webrtc进行通信。(客户端A用js编写,客户端B用带aiortc的Python编写)。现在,客户端A希望从移动网络连接,因此需要一个转向中继连接

我已经设置了一个回合服务器,似乎做他的工作。但现在只有大约50%的连接成功。我已经知道他们何时成功,何时失败:

成功情况下的SDP中继信息:
向客户提供

a=candidate:3 2 UDP 92217086 172.31.16.8 59986 typ relay raddr 172.31.16.8 rport 59986
a=candidate:7 1 UDP 92151551 172.31.16.8 49871 typ relay raddr 172.31.16.8 rport 49871
响应客户端B

a=candidate:11 1 UDP 92086015 172.31.16.8 49910 typ relay raddr 172.31.16.8 rport 49910
a=candidate:5820bb1602563a80c76891a80be14933 1 udp 16777215 18.185.84.96 53279 typ relay raddr 172.31.1.103 rport 49244
发生故障时的SDP继电器信息:
向客户提供

a=candidate:3 2 UDP 92217086 172.31.16.8 59986 typ relay raddr 172.31.16.8 rport 59986
a=candidate:7 1 UDP 92151551 172.31.16.8 49871 typ relay raddr 172.31.16.8 rport 49871
响应客户端B

a=candidate:11 1 UDP 92086015 172.31.16.8 49910 typ relay raddr 172.31.16.8 rport 49910
a=candidate:5820bb1602563a80c76891a80be14933 1 udp 16777215 18.185.84.96 53279 typ relay raddr 172.31.1.103 rport 49244
重要的区别是客户端B的响应中显示的IP地址,在成功的情况下是客户端B所在网络的IP地址,在失败的情况下是turnserver的IP地址(18.185.84.96)

事实上,我不明白为什么它有时给出turnserver的IP,而另一些时候不给出,这意味着turnserver的IP地址无法使用


有人知道从哪里开始查找问题吗?

看来我们的回合服务器配置错误。
我无法说出错误配置的内容,因为很遗憾,我无法访问turn服务器的配置。
但我通过在本地机器上部署一些turn服务器进行了测试,当它们没有正确配置时,表现类似。通过查看thos turn服务器的日志,我看到401个未经授权的服务器一直在弹出。所以我改变了配置,直到授权生效。通过这个配置,我们部署了一个新的服务器,它现在正在工作

在第一次运行时,关于配置的一些文字也有问题,这些是我们放入
/etc/turnserver.conf
中的配置,并在使用
turnserver-v-c/etc/turnserver.conf
启动服务器时传递的配置:

listening-port=<port>
alt-listening-port=<port>
listening-ip=<listening-ip>
external-ip=<external-ip>
realm=<realm>
fingerprint
lt-cred-mech
user=<user:pw>
侦听端口=
alt侦听端口=
监听ip=
外部ip=
王国=
指纹
中尉信用机械师
使用者=
在进行该配置之前,我们犯了一些错误,可能是有经验的人对这些错误感到厌恶,但对我们来说并非如此:

  • 我们在配置文件中有
    use auth secret
    ,在使用
    user
  • 我们有一个问题,turn服务器在firefox中可用,但在chrome或其他浏览器中不可用(不可能收集中继候选服务器),这是为了
    realm
    未在配置中配置

  • 使用公共IP配置TURN服务器是否会改变结果?当iceTransportPolicy在JS RTPeerConnection构造函数中“中继”时,成功案例是否仍然有效?成功/失败是否取决于谁发送报价?