搭建STUN/TURN服务器

作者:追风剑情 发布于:2024-7-14 19:54 分类:Unity3d

WebRTC开源社区提供了一个较为成熟的项目coturn来实现STUN/TURN服务。

在coturn项目主页里,可以下载最新源代码,并对源代码进行编译

$ tar xvfz turnserver-<...>.tar.gz
$ ./configure
$ make
$ make install  

在编译过程中,如果当前服务器缺少编译所必须的依赖库,编译可能会失败。可以使用系统自带的包管理器进行安装,包管理器会自动处理包依赖关系。

在ubuntu服务器上,使用apt-get安装coturn服务。

~# apt update
~# apt search coturn
Sorting... Done
coturn/bionic-updates,bionic-security,now 4.5.0.7-1ubuntu2.18.04.1 amd64
   TURN and STUN server for VoIP
~# apt install coturn  

使用coturn时,需要注意以下事项。

  • coturn支持多种数据存储方式,默认采用sqlite,数据库文件地址为/var/lib/turn/turndb。
  • coturn的配置文件默认位于/etc/turnserver.conf下,可以通过命令行-c参数指定配置文件。
  • 由于WebRTC使用long-term的认证机制,所以启动coturn时必须指定-a选项(或者--lt-cred-mech)。
  • WebRTC要求不能使用匿名访问模式,必须通过turnadmin工具创建用户名及密码。
  • 指定-r选项,设置默认域(realm)。
  • 指定-f选项。
  • 使用-v选项可以方便地查看当前连接的客户端信息。
  • 如果你的服务器位于NAT网络中,则需要提供外部IP地址,可以用命令行-X选项指定,也可以在配置文件里指定。大部分云主机都位于NAT网络中,需要指定外部IP。
  • 需要提供HTTPS证书。

启动coturn服务

// 以后台方式运行
~# coturn -afo
// 添加用户
~# turnadmin -a -u liwei -r liweix.com -p password123
// 使用telnet命令查看turnserver的运行状态
~# telnet 127.0.0.1 5766
// 查看客户端连接信息
~# turnserver -v  

turnserver.conf文件

 external-ip=[外部IP地址]
realm=liweix.com
cert=/usr/local/ssl/liweix_com.pem
pkey=/usr/local/ssl/liweix_com.key
cli-password=qwerty  

至此,STUN/TURN服务器搭建完毕。

STUN协议规范定义了一些错误码,当ICE协商失败时,可以使用这些错误码诊断失败原因。

STUN 错误码
错误码 说明
300 将本次请求重定向到另外一个可替代的服务
400 错误请求
401 未授权
403 禁止访问
420 未知属性
437 服务器端已经收到请求,但是配额不匹配
438 NONCE失效
441 credentials错误
442 传输协议不支持
486 用户配额达到上限
500 服务器错误
508 服务器达到了性能瓶颈

标签: Unity3d

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号