操作系统您现在的位置是:首页 > 博客日志 > 操作系统

centos webRtc基于coturn搭建STUN/TURN server服务器

<a href='mailto:'>微wx笑</a>的头像微wx笑 2022-11-08操作系统 0 0关键字: centos  webRtc  coturn  STUN  TURN   ICE  

基于 peerjs 搭建了一个 webRtc 的聊天室,希望是实现p2p的通信,消息内容不经过服务器。但是测试结果是自己本地网络开两个浏览器窗口没问题;相同路由器的电脑网页和手机微信中

基于 peerjs  搭建了一个 webRtc 的聊天室,希望是实现p2p的通信,消息内容不经过服务器。Kjh无知

但是测试结果是自己本地网络开两个浏览器窗口没问题;Kjh无知

相同路由器的电脑网页和手机微信中打开也没问题,Kjh无知

但是手机用4G就不行了。Kjh无知

经过多番尝试确定是没有 turn 服务器的问题,google 只提供了一个免费的 stun 服务器,却没有提供免费的 turn 服务器。Kjh无知

这是为什么呢?Kjh无知

参考这里:为什么谷歌不提供免费的TURN服务器?Kjh无知


Kjh无知

coturn下载地址:http://turnserver.open-sys.org/downloads/ Kjh无知

这里有很多个版本,根据自己的需要选择。Kjh无知


Kjh无知

我这里遇到的问题是使用最新的版本,编译、安装、运行都没有出错,但是就是不监听 3478端口,配置都是正确的,后来换了Kjh无知

http://turnserver.open-sys.org/downloads/v4.5.0.5/turnserver-4.5.0.5.tar.gz Kjh无知

安装之后配置都没变,运行就可以用了。害我折腾一下午,原来是版本的问题。Kjh无知


Kjh无知

各个版本的网址:https://coturn.net/turnserver/Kjh无知

或者Kjh无知

https://github.com/coturn/coturn Kjh无知

安装
Kjh无知

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
make & make install

编辑配置文件Kjh无知


Kjh无知

listening-port=3478
relay-device=eth0     // 使用ifconfig查看
listening-ip=内网ip   // 使用ifconfig查看
external-ip=外网ip    // 必须    
user=用户名:密码       // 非必须
realm=域名            // 必须
cert=/etc/turn_server_cert.pem  // 非必须
pkey=/etc/turn_server_pkey.pem  // 非必需


Kjh无知

运行服务器Kjh无知

可以通过参数配置运行,如果所有参数都在配置文件中配置好了,直接执行  turnserver 就可以了Kjh无知

#turnserver  --min-port 40000 --max-port 60000 -v -r rilxx.top:3478 -a -o -c /etc/turnserver/turnserver.conf
 
部分参数说明:
-o 以守护进程模式运行(后台运行)
-v 日志会以“适度详细”的程度来记录
-f  增加指纹机制。
-a 长期验证机制
-m 以x个进程来处理中继请求
--max-bps 带宽
--min-port   起始用的最小端口
--max-port   最大端口号
--user=帐号:密码    (随便写啥都行,记得住就行,turn服务的用户验证机制要用)
-r  领域(随便写啥都行)。如果turn服务器没有使用任何数据库/命令行/conf文件进行配置,就需要加这个选项,并且要配合long-term  credentials(-a选项)使用
-L 监听IP(turn服务器的ip)这个ip是你ifconfig查到的ip,不是你的公网ip
-X   后面加 public ip/ private ip       多IP情况下使用,有几个ip就用几次


Kjh无知


Kjh无知

我是在阿里云的ECS服务器上安装的,Kjh无知

安装之后,Kjh无知

1、BT面板开放端口;Kjh无知

2、防火墙开放端口:Kjh无知

iptables -I INPUT -p tcp --dport 3478 -j ACCEPT
iptables -I INPUT -p udp --dport 3478 -j ACCEPT
sudo /sbin/iptables -I INPUT 1 -p TCP --dport 40001:60000 -j ACCEPT

3、ECS服务器的安全组开放对应的端口Kjh无知


Kjh无知

测试turn服务,Kjh无知

1、运行成功后直接在浏览器访问 ip:端口Kjh无知

image.pngKjh无知

在线监测ICE穿透地址  在线监测ice穿透Kjh无知

网址:https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/Kjh无知


Kjh无知

3、在代码里使用Kjh无知

     configuration: {
                    "iceServers": [
                        {
                            "url": "stun:xx.com:3478", 'credential': 'password',
                            'username': 'admin'
                        },
                        {
                            "url": "turn:xx.com:3478", 'credential': 'password',
                            'username': 'admin'
                        }
                    ]
                },


Kjh无知

 参考:webrtc-centos下安装turn服务Kjh无知


Kjh无知

本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.com/blog/system/2022-11-08/1580.html

很赞哦! () 有话说 ()