WebRTC服务器Coturn服务器部署
1、概述
作为WebRTC服务器,只需要部署开源的coturn即可,coturn同时实现了STUN和TURN的协议
2、Coturn具体部署
2.1 Coturn简介
coturn是一个开源的STUN/TURN服务器,把STUN服务器跟TURN服务器都整合为一个服务器,主要提供一下几个功能
2.1.1 网络地址转换(NAT)穿越
可以让通话的双方处于不同的NAT网络下,协助实现两者之间的连接
2.1.2 STUN功能
响应客户端的STUN请求,返回客户端的公网地址和端口、映射端口等,使客户端了解自身在网络中的地址映射情况。
2.1.3 中继(TURN)功能
当STUN无法实现NAT穿越时候,作用中继服务器,在通信的两端无法直接建立连接时,充当数据中转的角色
2.2 Coturn的部署
2.2.1 源码仓库信息
开源github仓库: https://github.com/coturn/coturn
2.2.2 部署要求
coturn版本: 无具体要求
服务器硬件要求: 带宽要求较大,当P2P打洞不成功,都会通过这个服务器进行中转数据。
流量估计:在测试两两通话时候,640 X 480P的分辨率,VP8编码, 平均每秒发送和接收流量为74164×2 = 148328(bytes)=144.86KB,可以对这进行预估所需要的带宽
2.2.3 部署方法
2.2.3.1 安装coturn
centos: yum install coturn
ubutu: apt-get install coturn
2.2.3.2 修改配置文件(/etc/coturn/turnserver.conf或者/etc/turnserver.conf)
listening-port=3478 (监听的端口)
tls-listening-port=5349 (TLS监听端口)
cert=/home/webrtc/server.cert (TLS证书路径)
pkey=/home/webrtc/server.key(TLS证书密钥)
external-ip=117.72.111.221/172.16.0.3(根据实际设置外网IP/内网IP)
user=test:123456 (根据实际配置用户名和密码)
min-port=49152 (要求coturn分配的中继端口范围最小值,可以不配置,默认最小是49152)
max-port=65535 (要求coturn分配的中继端口范围最大值,可以不配置,默认最大是65535)
cli-password=test (开启telnet服务器访问,开启telnet功能,必须设置这个密码,方便后续查看)
cli-max-output-sessions=10000(telnet客户端连接上后通过ps查看会话最大显示个数,配置默认值为256个会话,也就是默认配置最多返回256个会话给telnet客户端,这个应根据coturn服务器资源的负载进行设置)
realm=nort.gov (coturn服务器的默认的域)
2.2.3.3 启动coturn服务器
service coturn start 或者利用命令行启动coturn -c -f /etc/coturn/turnserver.conf
coturn的具体参数用法可以看 coturn -h 或者turnserver -h
备注1: coturn会监听上面配置文件打开的端口 ,tcp和udp同时都监听(比如配置文件配置了3478,则udp和tcp的3478端口都会被监听),客户端和coturn服务器会根据情况选择tcp/udp进行通信,需要让udp/tcp的端口3478/5349(TLS加密)都要开放。
备注2: coturn启动时会提供备用端口,比如上面3478,同时也打开3479作为备用端口,上面5349加密端口,同时也打开5350作为加密的备用端口
备注3: 备用端口也可用于支持NAT行为发现和提供备用通信地址的重要属性
备注4:其实我发现无论3478/5349还是3479/5350都是可以正常通信的,也可以加密