STUN 服务器地址不兼容 | 错误代码=701:

asi*_*dev 3 stun webrtc turn coturn

我已经安装了 TURN 服务器,服务器代码中的一切工作正常。日志文件中没有错误。只是一个警告说明

 0: WARNING: I cannot support STUN CHANGE_REQUEST functionality because only one IP address is provided
Run Code Online (Sandbox Code Playgroud)

但是TURN服务器运行在服务器上。

这是我检查时显示的内容 lsof -i :3478

turnserve 999 root   15u  IPv4 446811411      0t0  TCP domain.com:stun (LISTEN)
turnserve 999 root   23u  IPv4 446811417      0t0  TCP domain:stun (LISTEN)
turnserve 999 root   24u  IPv4 446810998      0t0  UDP domain.com:stun
turnserve 999 root   25u  IPv4 446810999      0t0  UDP domain.com:stun
Run Code Online (Sandbox Code Playgroud)

当我在Trickle ICE 中检查 STUN 时,它会引发错误

The server stun:xxx.xxx.xxx.xxx:3478 returned an error with code=701:
STUN server address is incompatible.
The server stun:xxx.xxx.xxx.xxx:3478 returned an error with code=701:
STUN allocate request timed out.
Run Code Online (Sandbox Code Playgroud)

这有什么问题。

谢谢

sel*_*bie 8

我认为 701 错误是一种更通用的连接错误,Trickle ICE 用它来表示它没有得到绑定响应。运行stunclient your.stun.ip.address与命令行工具www.stunprotocol.org,看看你的STUN服务是从外部世界访问。

STUN 技术上要求托管在具有两个 IP 地址和两个端口的设备上。它通常是一个命令行参数,用于指定服务器应该侦听哪些 IP 地址。但是大多数服务器实现可以在具有单个 IP 地址的主机上运行。

服务器上的第二个 IP 地址和端口用于 STUN 客户端过滤测试,以检测有效的 NAT 类型。客户端在服务器的主 IP 和端口上发送绑定请求,但具有更改请求属性,以使服务器从备用 IP 地址或端口进行响应。通常情况下,这个带有更改请求属性的绑定请求会失败,因为 NAT 不会转发来自其他 IP/端口的流量。

过滤测试对于记录客户端所在的 NAT 类型很有用。这样可以调试失败的连接,并且可以将成功/失败指标与 NAT 类型相关联。

由于大多数 ICE 实现将交换所有可用的候选地址(本地、映射和中继),因此过滤测试对连接建立不是非常有用。

我很惊讶 Trickle ICE 给你一个错误。我不认为 WebRTC 曾经使用过 changer-request 属性。我刚刚对 stun.stunprotocol.org 的 Trickle ICE 会话进行了 Wireshark 跟踪。我没有看到 webrtc 客户端在它发出的两个绑定请求中的任何一个中设置更改请求属性。

RFC 5780 第 3.2 节中的更多详细信息