书瑜网

webRTC中继服务(音视频通话服务)

2022/11/07
70
0

概要

音视频通话主要使用webrtc服务 提供转发,在 WebRTC 网络传输模块中,当遇到 NAT 之间无法打通的情况下,会使用 TURN 协议通过中转的方式实现端与端之间的通信。Coturn 就是一种开源的 STUN/TURN 服务器,它可以让你轻松地搭建一个能够在 NAT 防火墙和代理服务器背后运行的实时通信系统。Coturn 支持各种协议和技术,包括 STUN(Session Traversal Utilities for NAT)、TURN(Traversal Using Relays around NAT)和 ICE(Interactive Connectivity Establishment)。Coturn 可以用于向 WebRTC 应用程序提供 TURN 服务器,这些应用程序需要在 P2P 通信中转储流量。本文主要介绍 Coturn 在 Linux、Windows 系统下部署的步骤。

下载 libevent2,因为 Coturn 编译的时候会用到 libevent2,可以只复制URL链接到浏览器下载后直接上传到服务器,并解压。(可能需要科学上网才能下载,如果没法下载,底部有已下载的文件,包含了视频教程和源码文件,购买任意一个产品可以获得口令)

wget https://github.com/libevent/libevent/releases/download/release-2.1.10-stable/libevent-2.1.10-stable.tar.gz

解压 libevent-2.1.10-stable.tar.gz

tar -zxvf libevent-2.1.10-stable.tar.gz

编译并安装 libevent2

cd libevent-2.1.10-stable && ./configure && make && make install

通过 wget 命令下载 Coturn 安装包(新版本可能会产生未知的编译问题,所以这里下载的是 4.5.1.1 老版本)。

依次执行以下Shell命令:

wget https://github.com/coturn/coturn/archive/4.5.1.1.tar.gz
tar -zxvf 4.5.1.1.tar.gz
cd coturn-4.5.1.1 
./configure --prefix=/usr/local/coturn
make && make install

配置 Coturn

切换到 coturn 的 etc 目录,拷贝一份 turnserver.conf.default 再进行修改。宝塔面板可以直接进入 /usr/local/coturn/etc 这个目录去复制,并修改文件。

进入目录

cd /usr/local/coturn/etc

复制文件

cp ./turnserver.conf.default ./turnserver.conf

编辑新复制的文件

vi ./turnserver.conf

(终端编辑文件时先输入 i 进入编辑模式,编辑好后,按 esc 退出编辑模式,输:wq 保存文件)

修改 turnserver.conf 文件配置内容,realm 需要指定 IP 或域名,否则无法在 WebRTC 本地库中使用,虽然使用 trickle-ice 可以正常访问,但是在 WebRTC 本地库中是没法正常使用的。将下方的代码直接复制到 turnserver.conf 文件最后去,保存。

# 指定侦听的端口。
listening-port=3478
# 云主机内网 IP 地址,如果没有内网IP就直接用公网IP,有内网没法用公网IP。
listening-ip=xxx.xxx.xxx.xxx
# 云主机的公网 IP 地址。
external-ip=xxx.xxx.xxx.xxx
# 这个很重要,如果没有配置这个就服务使用中转服务。云主机的公网 IP 地址或域名。
realm=xxx.xxx.xxx.xxx
# 访问 STUN/TURN 服务的用户名和密码。
user=admin:123456

云主机端口配置

如果是阿里云、腾讯云的云主机,需要到控制中的安全策略组或者防火墙中允许 3478、49152-65535 端口 UDP/TCP 通行。

启动 Coturn

添加环境变量,编辑环境文件

vi ~/.bashrc

将一下配置信息复制到环境文件的最后

export PATH=$PATH:/usr/local/coturn/bin

执行以下代码让环境变量文件生效

source ~/.bashrc

通过配置文件启动Coturn

turnserver -c /usr/local/coturn/etc/turnserver.conf

测试 STUN/TURN 服务,使用谷歌浏览器打开以下连接

[Trickle ICE]出现 relay 说明配置成功。

测试的时候,STUN or TURN URI 需要加入协议头和端口号,如turn:143.163.245.191:3478

将 Coturn 设置为系统服务

把 Coturn 设置成系统服务,便于开机自动启动,就不用手动启动了。

执行以下命令:

touch /usr/lib/systemd/system/coturn.service

然后编辑 coturn.service 文件

vi /usr/lib/systemd/system/coturn.service

设置 coturn.service 文件内容,将下面内容复制到文件中。

[Unit]
Description=Coturn Server
After=network.target

[Install]
WantedBy=multi-user.target

[Service]
User=root
Group=root
ExecStart=/usr/local/coturn/bin/turnserver -c /usr/local/coturn/etc/turnserver.conf
LimitNOFILE = 5000

将 coturn 设置开机启动

systemctl enable coturn

启动 coturn 服务

systemctl start coturn

视频教程&文件下载