当前位置: 首页 > news >正文

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

相关文章:

  • DB-GPT支持mcp协议配置说明
  • 11、Refs:直接操控元素——React 19 DOM操作秘籍
  • Python跨平台桌面应用程序开发
  • Go语言和Python 3的协程对比
  • docker 里面没有 wget 也 install 不了
  • vscode:Live Server Preview插件
  • load_dataset函数
  • 【C++ 类和数据抽象】构造函数
  • react组件之间如何使用接收到的className(封装一个按钮案例)
  • MongoDB 集合名称映射问题
  • MongoDB索引
  • 【算法】BFS-解决FloodFill问题
  • React项目添加react-quill富文本编辑器,遇到的问题,比如hr标签丢失
  • Apache SeaTunnel:新一代开源、高性能数据集成工具
  • QTextDocument 入门
  • 屏幕适配常见BUG与兼容性问题
  • 7N60-ASEMI无人机专用功率器件7N60
  • 低空经济 WebGIS 无人机配送 | 图扑数字孪生
  • Linux嵌入式系统SQlite3数据库学习笔记
  • 【数据可视化-22】脱发因素探索的可视化分析
  • 王珊珊读《吾自绝伦》|摘掉皮普斯的“假发”
  • 《国语汇校集注》:以1900余条注解,揭示隐微,提供思考
  • 智飞生物一季度营收下滑79%,连续三个季度亏损,称业绩波动与行业整体趋势一致
  • 吉祥航空去年净利增超17%,海航实控人方威退出前十大股东
  • 年近九旬的迪图瓦,指挥能量比盛年更为强劲
  • 商务部:服务业扩大开放试点任务多数来源于经营主体实际需要