centos7搭建stun/turn服务器

1.安装依赖

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

2.安装coturn

yum install coturn -y

如果yum源中没有coturn,可以看一下这篇文章:centos7更换yum源
看看是否安装成功

which turnserver


看到"/usr/bin/turnserver"说明安装成功了

3.用openssl生成自签名证书

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,后面配置的时候会用到这个证书。

4.配置

vim /etc/coturn/turnserver.conf

改一下里面的这些配置,我的服务器内网ip是172.25.10.25,外网ip是47.111.188.168,域名是turn.zhiboblog.com,下面配置中的ip和域名需要改成你自己的(经过我的实际测试,阿里云服务器按照下面的配置是可以成功搭建的,而有些服务器不行,如果不行的话可以把内网ip都改成公网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

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

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

7.服务器防火墙开放端口
服务器如果开启了防火墙需要开放端口,如果防护墙关闭了则不需要

#开放端口
firewall-cmd --zone=public --add-port=3478/udp --permanent
firewall-cmd --zone=public --add-port=3478/tcp --permanent
#重启防火墙
firewall-cmd --reload

8.启动coturn
有两种启动方法:

(1).通过turnserver命令来启动

turnserver -o -a -f

(2).通过systemctl命令来启动(比较推荐这种方法,启动和关闭都比较方便)

//启动
systemctl start coturn
//关闭
systemctl stop coturn
//设置开机启动
systemctl enable coturn

查看是否启动成功

netstat -nltp


看到3478端口启动了,说明cotrun启动成功了。

9.ICE测试

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

先添加服务器

然后点一下"Gather candidates",如果能看到自己的外网ip,说明穿透成功

以上就是centos7搭建stun/turn服务器的全过程

发表评论

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