我已经安装了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.
这里面出了什么问题。
谢谢
发布于 2020-06-21 17:07:07
我认为701错误是一个更通用的连接错误,Trickle用它来表明它没有得到绑定响应。在www.stunprotocol.org上使用命令行工具运行stunclient your.stun.ip.address
,查看是否可以从外部访问您的STUN服务。
从技术上讲,STUN需要托管在具有两个IP地址和两个端口的设备上。它通常是一个命令行参数,用于指定服务器应该侦听哪些IP地址。但大多数服务器实现都可以在具有单个IP地址的主机上运行。
服务器上的第二个IP地址和端口用于STUN客户端过滤测试,以检测有效的NAT类型。客户机在服务器的主ip和端口上发送绑定请求,但带有更改请求属性,以使服务器从备用IP地址或端口进行响应。由于NAT不会转发来自另一个IP/端口的流量,因此此具有change-request属性的绑定请求通常会失败。
过滤测试对于记录客户端所处的NAT类型非常有用。以便可以调试失败连接,且可以将成功/失败度量与NAT类型相关联。
由于大多数ICE实现将交换所有可用的候选地址(本地、映射和中继),因此过滤测试对建立连接并不是非常有用。
我很惊讶ICE会给你一个错误。我不认为WebRTC使用过changer-request属性。我刚刚在Wireshark上跟踪了一个到stun.stunprotocol.org的ICE会话。我没有看到webrtc客户端在它发出的两个绑定请求中的任何一个中设置change-request属性。
有关更多细节,请参阅RFC 5780 Section 3.2
https://stackoverflow.com/questions/62484280
复制相似问题