centos webRtc基于coturn搭建STUN/TURN server服务器
微wx笑 2022-11-08【操作系统】 2 0关键字: centos webRtc coturn STUN TURN ICE
基于 peerjs 搭建了一个 webRtc 的聊天室,希望是实现p2p的通信,消息内容不经过服务器。但是测试结果是自己本地网络开两个浏览器窗口没问题;相同路由器的电脑网页和手机微信中
基于 peerjs 搭建了一个 webRtc 的聊天室,希望是实现p2p的通信,消息内容不经过服务器。
但是测试结果是自己本地网络开两个浏览器窗口没问题;
相同路由器的电脑网页和手机微信中打开也没问题,
但是手机用4G就不行了。
经过多番尝试确定是没有 turn 服务器的问题,google 只提供了一个免费的 stun 服务器,却没有提供免费的 turn 服务器。
这是为什么呢?
参考这里:为什么谷歌不提供免费的TURN服务器?
coturn下载地址:http://turnserver.open-sys.org/downloads/
这里有很多个版本,根据自己的需要选择。
我这里遇到的问题是使用最新的版本,编译、安装、运行都没有出错,但是就是不监听 3478端口,配置都是正确的,后来换了
http://turnserver.open-sys.org/downloads/v4.5.0.5/turnserver-4.5.0.5.tar.gz
安装之后配置都没变,运行就可以用了。害我折腾一下午,原来是版本的问题。
各个版本的网址:https://coturn.net/turnserver/
或者
https://github.com/coturn/coturn
安装
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
编辑配置文件
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 // 非必需
运行服务器
可以通过参数配置运行,如果所有参数都在配置文件中配置好了,直接执行 turnserver 就可以了
#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就用几次
我是在阿里云的ECS服务器上安装的,
安装之后,
1、BT面板开放端口;
2、防火墙开放端口:
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服务器的安全组开放对应的端口
测试turn服务,
1、运行成功后直接在浏览器访问 ip:端口
在线监测ICE穿透地址 在线监测ice穿透
网址:https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
3、在代码里使用
configuration: { "iceServers": [ { "url": "stun:xx.com:3478", 'credential': 'password', 'username': 'admin' }, { "url": "turn:xx.com:3478", 'credential': 'password', 'username': 'admin' } ] },
本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/system/2022-11-08/1580.html
下一篇:使用 inf 添加系统右键菜单