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

时间:2020-06-20 09:57:37

标签: webrtc stun turn coturn

我已经安装了TURN服务器,服务器代码中的所有内容都可以正常工作。日志文件中没有错误。仅警告说明

 0: WARNING: I cannot support STUN CHANGE_REQUEST functionality because only one IP address is provided

但是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

当我在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.

这是怎么回事。

谢谢

1 个答案:

答案 0 :(得分:4)

我认为701错误是Trickle ICE用来表示它未获得绑定响应的更通用的连接错误。使用www.stunprotocol.org上的命令行工具运行stunclient your.stun.ip.address,以查看您的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客户端在它发出的两个绑定请求中的任何一个中都设置了change-request属性。

RFC 5780 Section 3.2

中的更多详细信息