2

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

我已经设置了一个似乎可以完成他的工作的转向服务器。但现在只有大约 50% 的连接成功。我已经知道他们什么时候成功,什么时候失败:

成功时的SDP中继信息:
Offer Client A

a=candidate:3 2 UDP 92217086 172.31.16.8 59986 typ relay raddr 172.31.16.8 rport 59986

响应客户端 B

a=candidate:11 1 UDP 92086015 172.31.16.8 49910 typ relay raddr 172.31.16.8 rport 49910

发生故障时的SDP中继信息:
Offer Client A

a=candidate:7 1 UDP 92151551 172.31.16.8 49871 typ relay raddr 172.31.16.8 rport 49871

响应客户端 B

a=candidate:5820bb1602563a80c76891a80be14933 1 udp 16777215 18.185.84.96 53279 typ relay raddr 172.31.1.103 rport 49244

重要的区别是客户端 B 的响应中显示的 IP 地址,在成功的情况下,它是客户端 B 所在网络的 IP 地址,在失败的情况下,它是转向服务器的 IP 地址(18.185.84.96) .

其实我不明白为什么它有时会给出turnserver的IP而其他时候没有,这意味着turnserver的IP地址无法使用......

任何人有任何想法,从哪里开始寻找问题?

4

1 回答 1

1

看来我们的回合服务器配置错误。
我不知道是什么配置错误,因为遗憾的是我无法访问转向服务器的配置。
但是我通过在我的本地机器上部署一些转向服务器进行了测试,当它们配置不正确时它们的行为相似。通过查看 thos turn 服务器的日志,我看到401 Unauthorized一直在弹出。所以我改变了配置,直到授权工作。有了这个配置,我们部署了一个新的服务器,它现在正在工作。

/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>

在进行该配置之前,我们犯了一些错误,也许他们对有经验的人很敏感,但对我们却不是:

  1. 我们use-auth-secret在配置文件中有,使用时不应该启用user
  2. 我们遇到的问题是转服务器可在 Firefox 中使用,但不能在 chrome 或其他中使用,(无法收集中继候选者),这是因为realm未在配置中配置
于 2020-01-28T08:32:58.240 回答