我已经安装了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.
这是怎么回事。
谢谢
答案 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属性。
中的更多详细信息