为WebRTC应用程序实现我们自己的STUN / TURN服务器

时间:2014-03-06 19:22:03

标签: webrtc stun rfc5766turnserver turn

我正在开发一个webrtc应用程序,必须实现以下TURN服务器。

https://code.google.com/p/rfc5766-turn-server/

我正在学习本教程。

http://www.dialogic.com/den/developer_forums/f/71/t/10238.aspx

它表示在创建RTCPeerConnection的javascript代码中引用TURN服务器如下。

var pc_config = {"iceServers": [{"url": "stun:stun.l.google.com:19302"},
  {"url":"turn:<turn_server_ip_address>", "username":"my_username", "credential":"my_password"}]};

pc_new = new webkitRTCPeerConnection(pc_config);

我有点困惑,为什么我们引用Google的公共STUN服务器。我以为RFC5766 TURN服务器里面有STUN。

RFC5766只是TURN服务器吗?而不是STUN服务器?我们不能实现自己的STUN服务器,而不是使用Google提供的服务器吗?

抱歉这样天真的问题。我是WebRTC的新手。

感谢。

3 个答案:

答案 0 :(得分:32)

只是加入Igor的回答,

coturnrfc5766-turn-server的分支,核心功能相同,具有额外功能并添加了新功能,因此我建议您改用它。

以作者自己的话说:

  

该项目是从rfc5766-turn-server项目(https://code.google.com/p/rfc5766-turn-server/)发展而来的。有许多新的高级TURN规范远远超出了原始的RFC 5766文档。该项目将rfc5766-turn-server的代码作为入门者,并为其添加了新的高级功能。

对于安装,它很容易在linux机器上安装,而不是在其他操作系统中试用。

简单方法:

sudo apt-get install coturn

如果您拒绝,我想要最新的前沿,您可以自己安装downloads page下载源代码,例如:

sudo -i     # ignore if you already in admin mode
apt-get update && apt-get install libssl-dev libevent-dev libhiredis-dev make -y    # install the dependencies
wget -O turn.tar.gz http://turnserver.open-sys.org/downloads/v4.5.0.6/turnserver-4.5.0.6.tar.gz     # Download the source tar
tar -zxvf turn.tar.gz     # unzip
cd turnserver-*
./configure
make && make install 

为了运行TURN,建议将其作为守护程序运行,并且可以使用此wiki作为参考进行配置。

用于运行TURN服务器的示例命令:

sudo turnserver -a -o -v -n  --no-dtls --no-tls -u test:test -r "someRealm"

命令说明:

  • -a - 使用长期凭证机制
  • -o - 将服务器进程作为守护程序运行
  • -v - '中等'详细模式。
  • -n - 没有配置文件
  • - no-dtls - 不要启动DTLS侦听器
  • - no-tls - 不要启动TLS侦听器
  • -u - 要使用的用户凭据
  • -r - 要使用的默认域,需要TURN REST API

现在您可以在WebRTC应用程序中使用TURN服务器:

var peerConnectionConfig = {
  iceServers: [{
    urls: YOUR_IP:3478,
    username: 'test',
    password: 'test'
  }]
}

答案 1 :(得分:16)

转发它是STUN的扩展,因此TURN服务器也具有STUN功能。

https://code.google.com/p/rfc5766-turn-server/也可以作为STUN,所以你可以尝试写这样的东西:

var pc_config = {"iceServers": [{"url":"turn:my_username@<turn_server_ip_address>", "credential":"my_password"}]};

pc_new = new webkitRTCPeerConnection(pc_config);

答案 2 :(得分:0)

最近,我正在捕获我的Kurento WebRTC服务器数据包,并意识到它一直在使用此www.stunprotocol.org域进行STUN请求。名为stuntman的工具可以为您创建一个简单的STUN服务器。

只需在Linux主机上执行以下操作即可:
1。sudo apt-get update
2。sudo apt-get install stuntman-server
3。stunserver --mode full --primaryinterface 100.101.102.103(将100.101.102.103替换为您的IP地址)
4.打开This Link测试您的STUN服务器。
例如 STUN或TURN URI:眩晕:100.101.102.103:3478

一切对我来说都很顺利。