强健的回锅肉 · 新华三集团助力拉曼大学打造智慧校园,引领教育 ...· 4 月前 · |
有爱心的海龟 · _鸟哥笔记_互联网广告|营销|推广|运营|品 ...· 1 年前 · |
俊逸的铅笔 · 2023届秋招,求职应届生速看,各城市互联网 ...· 1 年前 · |
彷徨的熊猫 · 小绿和小蓝的故事:你有遇见未来的超能力,他却 ...· 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