webrtc ice服务器搭建

在使用webrtc做语音视频通话的时候,就需要用到ice服务器,接下来我们就讲一下如何搭建ice服务器。

1.安装依赖

yum install -y make gcc cc gcc-c++ wget openssl-devel libevent libevent-devel openssl

2.下载coturn安装包

wget https://github.com/coturn/coturn/archive/refs/tags/4.5.2.tar.gz

3.解压

tar -zxvf 4.5.2.tar.gz

4.进入解压目录下

cd coturn-4.5.2/

5.编译

./configure --prefix=/usr/local/coturn

6.安装

make && make install

7.生成自签名证书

openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes

执行上面这行命令后,会提示让你输入一些信息

信息输入完成之后,自签名证书就生成好了。证书生成的位置是:/etc/turn_server_pkey.pem和/etc/turn_server_cert.pem,后面配置的时候会用到这个证书。

8.配置
切换到coturn的配置目录下

cd /usr/local/coturn/etc

复制一份配置文件

cp turnserver.conf.default turnserver.conf

修改配置文件

vim turnserver.conf

改一下里面的这些配置,我的服务器内网ip是172.25.10.25,外网ip是47.111.188.168,域名是turn.zhiboblog.com,下面配置中的ip和域名需要改成你自己的

# 网卡名
relay-device=eth0
#内网IP
listening-ip=172.25.10.25
listening-port=3478
#内网IP
relay-ip=172.25.10.25
tls-listening-port=5349
# 外网IP
external-ip=47.111.188.168
relay-threads=500
#打开密码验证
lt-cred-mech
cert=/etc/turn_server_cert.pem
pkey=/etc/turn_server_pkey.pem
min-port=40000
max-port=65535
#设置用户名和密码,创建IceServer时使用
user=admin:123456
# 外网IP绑定的域名
realm=turn.zhiboblog.com
# 服务器名称,用于OAuth认证,默认和realm相同,部分浏览器本段不设可能会引发cors错误。
server-name=turn.zhiboblog.com
# 认证密码,和前面设置的密码保持一致
cli-password=123456

9.解析域名

将上面配置中的域名:turn.zhiboblog.com解析到服务器外网ip

10.服务器安全组开放端口(如果是阿里云腾讯云等服务器需要在安全组开放端口)
开放udp的3478端口、tcp的3478端口、udp的40000-65535端口

11.关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

12.启动turnserver

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

这样启动后,终端关闭后,服务就会停止。
为了让服务在后台运行,我们可以在/lib/systemd/system/目录下创建一个turnserver.service文件

vim /lib/systemd/system/turnserver.service

turnserver.service内容如下:

[Unit]
Description=Coturn STUN/TURN Server
After=network.target
   
[Service]
Type=forking
ExecStart=/usr/local/coturn/bin/turnserver -c /usr/local/coturn/etc/turnserver.conf
ExecStop=pkill turnserver
PrivateTmp=true
   
[Install]
WantedBy=multi-user.target

这样就可以使用systemctl命令启动和关闭turnserver服务了

//启动
systemctl start turnserver
//关闭
systemctl stop turnserver

将turnserver服务加入开机启动

//开机启动
systemctl enable turnserver
//关闭开机启动
systemctl disable turnserver

13.ice连通测试

测试网址:https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

先添加服务器

然后点一下"Gather candidates",如果能看到自己的外网ip,说明ice服务器搭建成功

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: