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都是可以正常通信的,也可以加密

2.2.4 测试验证

通过开源测试网站Trickle ICE,进行测试,可以验证coturn服务器是否部署成功

相关推荐
shermerL1 天前
超简单!WebRTC源码编译教程释出!
webrtc
FinelyYang1 天前
uniapp+unipush2.0+WebRTC实现h5一对一视频通话
uni-app·音视频·webrtc
赖small强2 天前
【ZeroRang WebRTC】WebRTC 信令与传输的安全层解析:WSS、DTLS、SRTP
webrtc·sctp·wss·dtls·srtp
qq_310658513 天前
webrtc代码走读(十七)-音频QOS-NetEQ
服务器·网络·c++·音视频·webrtc
txp玩Linux4 天前
rk3568上解析webrtc音频降噪算法处理流程
算法·音视频·webrtc
RTC老炮5 天前
webrtc降噪-WienerFilter源码分析与算法原理
算法·webrtc
赖small强5 天前
【ZeroRange WebRTC】Amazon Kinesis Video Streams WebRTC initSignaling() 技术深度解析
websocket·webrtc·stun·kinesis·initsignaling
红米饭配南瓜汤5 天前
WebRTC 码率预估(1) - 接收端 TransportFeedback 生成和发送流程指南
网络·音视频·webrtc·媒体
metaRTC5 天前
webRTC IPC客户端Flutter版编程指南
flutter·webrtc·ipc
ZEGO即构开发者6 天前
WebRTC 实战:用即构 SDK 搭建 Web 端 1v1 视频通话(含完整流程与 Demo)
前端·音视频·webrtc