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服务
// 以后台方式运行
~# 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 | 服务器达到了性能瓶颈 |