月球上的海豚 · 使用 Visual Studio 发布 ...· 3 月前 · |
喝醉的拖把 · Box.net API V2 PHP ...· 1 年前 · |
玩足球的树叶 · react+ts ...· 1 年前 · |
温柔的金针菇 · 如何将对象序列化为CSV文件?-腾讯云开发者 ...· 1 年前 · |
旅途中的柚子 · CORS 跨域 Cookie 的设置与获取 ...· 1 年前 · |
我正在测试一个WebRTC应用程序,它在数百对对等点上运行得非常好,但在一个特定的对等点上却失败了(下面的
Matt
)。考虑:
Alice
:WebRTC应用程序工作的对等程序(NAT后家庭网络上的笔记本电脑)
Bob
:WebRTC应用程序工作的对等程序(企业网络中的Ubuntu服务器)。
Matt
:WebRTC应用程序不能工作的对等服务器(企业网络中的Ubuntu服务器)
Server
:我用来模拟
STUN
和
TURN
的Ubuntu18.04 EC2实例(下面将详细介绍)
所使用的
STUN
和
TURN
服务器如下:
stun:global.stun.twilio.com:3478
turn:global.turn.twilio.com:3478 (with credentials)
问题
Alice
和
Bob
在0.92s内执行WebRTC信号,
iceConnectionState
变为
connected
。
[0.074] onIceServers: [object Object],[object Object],[object Object],[object Object]
[0.081] createOffer
[0.161] onAnswer
[0.17] ICE STATE: new
[0.171] onTrack
[0.234] addIceCandidate
[0.235] addIceCandidate
[0.73] addIceCandidate
[0.928] ICE Connected
现在,
Alice
和
Matt
尝试信令和
iceConnectionState
在60多年内不改变为
connected
。如果我们等到70年代,状态就会改变为
failed
。
[0.143] onIceServers: [object Object],[object Object],[object Object],[object Object]
[0.147] createOffer
[0.399] onAnswer
[0.408] ICE STATE: new
[0.409] onTrack
[0.541] addIceCandidate
[0.541] addIceCandidate
[15.528] addIceCandidate
[76.77] ICE FAILURE: failed
Alice
和
Bob
分别尝试使用与100个其他对等点相同的代码/堆栈发送信令,在每种情况下,都建立了对等连接,并且
iceConnectionState
在2-3秒内更改为
connected
。
我们在
Matt
上执行以下测试
测试1: IP/端口可达性
以下工作:
telnet global.turn.twilio.com 3478
这证实了发送到端口3478的TCP流量,twilio服务器没有被阻塞。
测试2: UDP流量
我在
netcat
上创建了一个简单的
Server
侦听器,如下所示:
nc -ul 3478
然后,
Matt
能够向该服务器发送数据包,如下所示:
nc -u <SERVER_IP> 3478
这证实了发送到端口3478的UDP通信没有被阻塞。
测试3:特技演员
Alice
和
Bob
都可以成功地执行眩晕绑定:
root@XXXX:/# stunclient --verbosity 9 global.stun.twilio.com 3478
Resolved global.stun.twilio.com to 54.244.51.6:0
config.fBehaviorTest = false
config.fFilteringTest = false
config.timeoutSeconds = 0
config.uMaxAttempts = 0
config.addrServer = 54.244.51.6:3478
socketconfig.addrLocal = 0.0.0.0:0
Sending message to 54.244.51.6:3478
Got response (76 bytes) from 54.244.51.6:3478 on interface 10.1.13.185:47172
Other address is 54.244.51.6:3479
Binding test: success
Local address: 10.1.13.185:47172
Mapped address: 50.209.172.197:47172
但是,
Matt
没有通过绑定测试:
root@YYYYY:/# stunclient --verbosity 9 --mode full global.stun.twilio.com 3478
Resolved global.stun.twilio.com to 34.203.250.156:0
config.fBehaviorTest = true
config.fFilteringTest = true
config.timeoutSeconds = 0
config.uMaxAttempts = 0
config.addrServer = 34.203.250.156:3478
socketconfig.addrLocal = 0.0.0.0:0
Sending message to 34.203.250.156:3478
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Sending message to 34.203.250.156:3478
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Binding test: fail
Behavior test: fail
Filtering test: fail
stunserver --primaryport 8085
在
Server
上也进行了同样的测试。结果是相同的。
==================
有以下关于
Matt
的问题
STUN
服务器的IP和端口是可访问的,并且
UDP
通信没有被阻塞,为什么
stunclient
请求失败?
TURN
服务器建立对等连接?我可以确认Twilio
TURN
服务器正常工作。我看到来自其他同行的流量在我的Twilio帐户和涓滴冰测试
这里
也成功了。当
STUN
无法为对等方找到外部IP/端口时,转不应该中继通信量吗?
谢谢!
发布于 2020-09-23 17:51:06
我有一个WebRTC项目,也有类似的问题。在一个乌本图数字海洋上的同龄人无法连接。我发现
我不得不打开数字海洋防火墙上的港口。这些是我必须启用的端口
#+BEGIN_SRC
旅途中的柚子 · CORS 跨域 Cookie 的设置与获取 - 简书 1 年前 |