如何自托管以不依赖于WebRTC STUN服务器stun.l.google.com:19302?

26
我刚刚下载了一个视频聊天项目,它使用了一个 STUN 服务器,并指定了 URL stun:23.21.150.121。我该如何使用自己的服务器代替 STUN 服务器?我需要输入什么 URL?

2
可能是什么是STUN stun.l.google.com:19302用于的重复问题。 - Paul Mougel
4个回答

58
实际上,没有必要设置自己的STUN或TURN服务器,因为有很多公共/半公共服务器可用。来自Google的STUN并不总是运行得非常好。
这是我最新的经过验证的列表(不要忘记在URL中使用stun:/turn:方案):
{url:'stun:stun01.sipphone.com'},
{url:'stun:stun.ekiga.net'},
{url:'stun:stun.fwdnet.net'},
{url:'stun:stun.ideasip.com'},
{url:'stun:stun.iptel.org'},
{url:'stun:stun.rixtelecom.se'},
{url:'stun:stun.schlund.de'},
{url:'stun:stun.l.google.com:19302'},
{url:'stun:stun1.l.google.com:19302'},
{url:'stun:stun2.l.google.com:19302'},
{url:'stun:stun3.l.google.com:19302'},
{url:'stun:stun4.l.google.com:19302'},
{url:'stun:stunserver.org'},
{url:'stun:stun.softjoys.com'},
{url:'stun:stun.voiparound.com'},
{url:'stun:stun.voipbuster.com'},
{url:'stun:stun.voipstunt.com'},
{url:'stun:stun.voxgratia.org'},
{url:'stun:stun.xten.com'},
{
    url: 'turn:numb.viagenie.ca',
    credential: 'muazkh',
    username: 'webrtc@live.com'
},
{
    url: 'turn:192.158.29.39:3478?transport=udp',
    credential: 'JZEOEt2V3Qb0y27GRntt2u2PAYA=',
    username: '28224511:1379330808'
},
{
    url: 'turn:192.158.29.39:3478?transport=tcp',
    credential: 'JZEOEt2V3Qb0y27GRntt2u2PAYA=',
    username: '28224511:1379330808'
}

https://gist.github.com/yetithefoot/7592580

如果您需要自己的STUN服务器,可以使用Node.js编写的这个,或者在这里找到一些。
此外,您可以查看这个这个页面以获得更好的理解。

27
这个回答非常误导人。你实际上找不到任何免费的TURN服务器,而商业产品需要TURN。要么自己运行,要么购买服务。仅在概念验证或业余爱好时使用免费的STUN服务器。 - Tsahi Levent-Levi
1
@TsahiLevent-Levi,这个numb.viagenie.ca有什么问题吗?它已经运行了4年,我使用这个答案进行了测试。 - bugwheels94
2
如果它能以任何合理的方式扩展或提供全球优化路由实际服务所需的话,那我会非常惊讶。它还没有任何SLA或保证,并且你不知道它的停机时间。 如果你认真对待你正在做的事情,只有两个选择:
  1. 部署和维护自己的服务
  2. 支付你正在使用的NAT穿透服务的费用
- Tsahi Levent-Levi
@Vlad Tsepelev 如果我的客户要求使用我们自己的TURN服务器,那么应该将其托管在哪里?在有防火墙的网络上还是在云上?如果在云上,哪种云托管选项最好? - Aakash Patel
5
这个答案被评为-1分,因为它基本上鼓励窃取其他人的TURN凭据。虽然有很多公共免费的STUN服务器(例如谷歌的),但并没有真正免费的TURN服务器。你可以在这篇文章中阅读更多相关信息:https://bloggeek.me/google-free-turn-server/。 - Thomas Orlita
显示剩余3条评论

4

有几种选项可以设置您自己的stun服务器。有rfc5766-turn-server。一旦您在服务器上设置好它,您可以使用该服务器的IP地址和端口来监听。您需要一些基本的Linux系统管理员知识。


1
我们只使用Windows 8。 - Vicky
@Vicky 我认为你可以找一个适用于 Windows 8 的服务器,但我不会这么做。我认为最好使用公共的 stun 服务器,比如 Google 的。 - Munim
1
@Vicky - STUNTMAN(www.stunprotocol.org)通过Cygwin提供了一个Windows版本,可在Windows 8上运行。欢迎尝试使用。 - selbie
restund是另一个不错的选择,但是你需要cygwin。 - ggez44
对于Windows,您可以使用IceLink,他们有一个.NET SDK。 - mark gamache
显示剩余2条评论

4

3
检查 ICE 服务器的工作情况,请访问以下链接:https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ - Devaroop

3

这是在RTCPeerConnection初始化中配置STUN和TURN的新方法。下面是从apprtc.appspot.com的工作模式。

var peerConnectionConfig = {
  iceServers:[
    {urls: ["turn:173.194.72.127:19305?transport=udp",
       "turn:[2404:6800:4008:C01::7F]:19305?transport=udp",
       "turn:173.194.72.127:443?transport=tcp",
       "turn:[2404:6800:4008:C01::7F]:443?transport=tcp"
       ],
     username:"CKjCuLwFEgahxNRjuTAYzc/s6OMT",
     credential:"u1SQDR/SQsPQIxXNWQT7czc/G4c="
    },
    {urls:["stun:stun.l.google.com:19302"]}
  ]};

More info here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接