问题标签 [coturn]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
webrtc - coturn:需要帮助正确配置我的服务器
我正在尝试在本地计算机上为我的 webrtc 应用程序设置 STUN/TURN 服务器。我决定使用coturn。请注意,我的服务器在 NAT 后面运行。
所以我启动了我的 Ubuntu VM 并安装了它。在阅读完 wiki 之后,我得到了它的工作,至少在我的本地网络上。出于测试目的,我使用此站点。因此,当我在 192.168.178.25:3478 那里尝试时,它可以工作。当我尝试使用“public-ip”:3478 时,它没有。
这告诉我,它在本地工作,应该是端口/NAT 问题。我做了什么:
1)我将虚拟机设置为桥接
2) 我在路由器上打开了 3478 端口。为了测试这是否真的有效,我在远程机器上使用了 telnet 并且它有效。另一个测试是我在本地机器上的 3478 端口上设置了一个快速的 apache 服务器,并且可以从外部访问它。这告诉我存在或应该不是端口/NAT 问题,我的轮到服务器应该可以工作。
有任何想法吗?
我正在使用以下命令运行我的服务器:
"sudo turnserver -X "public-ip" -listening-port=3478 -v
turnserver.conf 看起来像这样:
指纹
领域=“我的领域”
lt-cred-机械
用户=测试:测试
由于 telnet 和 apache 服务器都在工作,我很确定我有配置问题。我基本上整个周末都在尝试,我真的迷失了可能出了什么问题。
谢谢你的帮助!
docker - Docker Swarm 中的 coturn 无法连接 (kurento)
当我尝试连接到我的应用程序时,我可以连接并开始发送和接收 ICE 候选人。但是协商没有完成 rtc 连接状态最终进入“Checking”,然后在大约 30 秒后下降到“Failed”
我使用本地设置进行此操作,但是一旦我部署到 AWS,它就会开始失败。我去 bjorked AWS 中的设置并打开所有端口,现在我可以访问 coturn 服务(通过 http 请求时返回 200),这里的 Trickle 服务工作正常。
我正在使用 Kurento 媒体服务器并希望与该服务建立 websocket 连接。正如我所提到的,这在本地工作,所以我相当确定我提出请求的方式没有任何问题,而是它是 AWS 或我的 docker compose 文件的配置选项。
我有一个 docker compose 文件,其中包含三个应用程序:
coturn 的 /etc/turnserver.conf
涓流冰候选的输出:
azure - AZURE VM(Ubuntu Server 16.04 LTS)上的 Coturn WebRTC 问题
我使用 webRTC 与其他浏览器建立 web 浏览器实时通信。为了确保这种连接始终稳固,我想建立自己的 STUN/TURN 服务器。我决定在 Azure VM(Ubuntu 服务器)上使用 coturn。我按照此文档在 Azure https://www.microsoft.com/developerblog/2018/01/29/orchestrating-turn-servers-cloud-deployment/上设置了 coturn 。
根据 [Trickele ICE][1] [1]:https ://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/我的 STUN 服务器工作正常,我得到了积极的结果。
每当我尝试使用我的 STUN/TURN 服务器建立网络摄像头连接时,它都不起作用。
webRTC 协议会话统计:
webRTC协议连接日志:
如果有人可以帮助我,那将不胜感激。谢谢。
google-chrome - 浏览器中的 STUN 身份验证和 DTLS 支持
我正在使用 janus 和 coturn 设置 webRTC 环境。尽管 STUN 是一个非常轻量级的协议,但如果可能的话,我想对其进行身份验证,并且根据 STUN 规范就是这种情况。
Coturn 还支持 STUN 和 TURN 的身份验证,我将它与--use-auth-secret
and--secure-stun
标志一起使用。
很难获得有关 ICE 交换的可靠信息,因为我无法在等中找到有用的信息,chrome://webrtc-internals
但onicestatechange
使用 WireShark 我能够自己检查 STUN 请求,结果发现 Chrome 完全忽略了服务器
的username
和credential
字段。stun:...
编辑:我现在意识到这已记录在 MDN 上。
Chrome 似乎也不支持 DTLS 安全stuns:...
协议,turns:...
仅支持 TLS/通过 TCP 传输。
是否有计划支持这些功能?我在哪里可以找到它们,或者为什么不呢?支持的功能(仅 stun auth...)对我来说似乎很随意。
webrtc - WebRTC 冰连接失败
我正在尝试在不同的网络中远程连接两个客户端,并且我的 IceCandidateConnection 状态为失败。我正在使用 coturn 服务器作为仅接受 UDP 和 stun 服务器的轮流。以下是我得到的日志:firefox的webrtc:
候选人日志:
PeerConnection ID:1523297273518693(id=2147483737 url= https://eskns.com/virtualchat)
冰统计
ICE 重启:0
ICE 回滚:0
所有原始候选人
SDP 本地 SDP(优惠)
远程 SDP(答案)
RTP 统计
outbound_rtcp_video_1
本地:10:26:31 GMT-0600 (CST) inbound-rtp SSRC:3732981129
inbound_rtp_audio_2
本地:13:08:37 GMT-0500 (CDT) inbound-rtp SSRC:0
inbound_rtp_video_3
本地:13:08:37 GMT-0500 (CDT) inbound-rtp SSRC:553664470
outbound_rtp_audio_0
本地:13:08:37 GMT-0500 (CDT) outbound-rtp SSRC:2797382455
outbound_rtp_video_1
本地:13:08:37 GMT-0500 (CDT) outbound-rtp SSRC:3732981129
远程:10:26:31 GMT-0600 (CST) 入站-rtp SSRC:3732981129
turn - coturn 找不到用户的凭据
我试图使用coturn部署一个简单的 TURN 服务器。当我在Trickle ICE ( turn:rtc.jackxujh.me:3478 [webrtc:mighty]
) 上测试它时,Trickle ICE 说“身份验证失败?” . coturn服务器一直报这个错误:
错误:check_stun_auth:找不到用户的凭据
这是turnserver.conf
我正在使用的完整内容(通过取消注释coturn示例 conf 的行):
我在GitHub 上找到了相关的讨论,但我觉得最后没有解决方案。
事实上,我很困惑我的 conf 文件是否使用了 TURN REST API。
同时,我尝试通过 using检查turndb中是否有名为webrtc的用户,但输出什么也没有。(这个命令正确吗?)# turnadmin -l
kurento - Coturn 服务器不完整的日志
我安装了 Corturn 服务器,并且在大多数情况下都可以正常工作。但是,我需要通过日志调查一些错误情况。但是,它不会在启动日志后打印日志文件中的任何日志。您的建议非常感谢。以下是我在日志文件中获得的所有日志。
ubuntu - coTurn 在 ubuntu 上运行,但在tricleICE 上没有中继候选
我已经实现了在类似网络上工作的 webrtc。在不同的网络上,远程流显示为黑屏。据我了解,我需要配置转服务器,我选择在 ubuntu 上使用 coturn。我已经配置了它,它显示正在运行。 在此处输入图像描述
我的转向服务器无花果看起来像这样
我正在尝试使用以下选项来涓流冰(https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/),但它们都没有给我中继候选人。
转:PUBLICIP?:3478transport=udp[用户:密码]
转:PUBLICIP:3478?transport=tcp[用户:密码]
转:PUBLICIP:3478[用户:密码]
我假设它是阻止连接的我的防火墙。我使用以下 IPTABLE 规则打开端口:
-A 输入 -i docker0 -j 接受
-A 输入 -p udp -m udp --dport 3478 -j 接受
-A 输入 -p udp -m udp --dport 5349 -j 接受
-A 输入 -p udp -m udp --dport 49152:65535 -j 接受
-A 输入 -p tcp -m tcp --dport 49152:65535 -j 接受
-A 输入 -i docker0 -j 接受
任何人都可以指导我如何访问我的 coturn 服务以获取接力候选人。了解如何为 coturn 配置 iptables /firewall 会很有帮助。
webrtc - WebRTC 总是在我们的局域网外使用 TURN
我的问题:
我写了一个基于 WebRTC 的视频聊天应用程序。当两个客户端在我们的 LAN 中连接时,它们总是获得对等连接。但是,当我们 LAN 的客户端与 LAN 外部的客户端连接时,它始终是对等连接。当移动设备相互连接时,通常是 TURN-to-TURN。
我的期望:
我知道对称 NAT 问题,预计 20% 到 30% 的连接需要 TURN 连接。但到目前为止,我从未在我们的局域网之外找到任何两个客户端来获得对等连接——这似乎是错误的。
我的设置:
我在 Chrome、Firefox、Electron、Android 和 iOS 设备上进行了测试。
我使用Coturn服务器作为 STUN/TURN 服务器。该服务器可通过互联网访问。
我通过检查peerConnection.getStats()
一个项目
item.type === 'googCandidatePair' && item.googActiveConnection === 'true'
并查看它的
item.googLocalCandidateType
和item.googRemoteCandidateType
。如果类型类似于relay
,则它是 TURN 连接。
我的分析:
当我的系统说涉及 TURN 服务器并且我停止Coturn时,视频会冻结 - 所以我猜我的应用程序反馈是真实的。
我看到了host
,srflx
双方relay
都有 ICE 候选人。所以我的应用程序的 STUN/TURN 配置似乎是正确的。
我什至在我的应用程序中构建了一个测试设置,它尝试连接到指定的机器人对等体,禁用视频和音频,并尝试通过peerConnection
数据通道来回发送数据。然后我检查上述统计数据,但它的行为相同:我们局域网中的点对点。总是转身参与到外面。
在我的测试中,我发现peerConnection.oniceconnectionstatechange
需要很长时间(大约 12 秒)才能
connected
从completed
. 但同样只适用于局域网外的对等方,而不是局域网内的对等方。但是,数据通道较早打开并且可以正常工作。completed
在调用之前等待getStats()
不会改变我的结果。AFAIK 只有调用者有completed
状态。
我的希望:
有没有人暗示我可以改变什么或如何改进或扩展我的检查?哪个组件可能是问题(应用程序代码、网络、STUN 服务器、TURN 服务器)?