论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
前端开发
›
webrtc终极版(二)搭建本身的iceserver服务,并用到RTC ...
webrtc终极版(二)搭建本身的iceserver服务,并用到RTCMultiConnection的d ...
卖不甜枣
金牌会员
|
2024-7-16 15:07:53
|
显示全部楼层
|
阅读模式
楼主
主题
912
|
帖子
912
|
积分
2736
webrtc终极版(二)搭建本身的iceserver服务,并用到RTCMultiConnection的demo中
前言
第一篇文章,写了怎样再5分钟之内搭建一个webrtc服务,并运行起来,这固然不够,turn-server以及stun-server都把握在别人手中,实际上,连socket服务,也在别人手中,正常情况下,RTCMultiConnection官方不会停止服务的,但是咱们也不敢保证不是,所以本篇文章,我们就用最具体的方式,来手把手教会大家在centos上搭建本身的stun-server以及turn-server。
看到这里,大概有人要懵了,怎么一会儿是iceserver,一会儿是stunserver,一会儿又是turnserver,下面我们先讲解下三者的定义以及作用,然后再直接进行实操,实际上,你可以如许理stunserver+turnserver构成iceserver。
整个webrtc系列,其实搭建iceserver是最为贫苦的,为什么这么说呢,其实怎样搭建,网上一搜一大把,你根据文章去实操,也没有问题,但是实际应用起来,就是不能用,我就是如许的,找了很多问题都找不到,折腾了两天才算搞定,这篇文章除了提醒大家再搭建iceserver的最重要的留意事项外,还有个目的是为了防止我本身时间长了也别忘了,下面我们就开始步入正题
一、stunserver,turnserver,iceserver是什么?
ICE:
(Interactive Connectivity Establishment)是一种框架和协议,用于在网络中创建可靠的及时通信毗连。ICE并不是单独的服务器,而是一种方法,它可以利用STUN(Session Traversal Utilities for NAT)和TURN(Traversal Using Relays around NAT)服务器来实现其目标。实际上ice是一个综合解决方案,它整合了STUN和TURN的功能。ICE通过在不同网络条件下选择最佳的毗连路径,以确保最可靠和高效的通信。
STUN服务器:
用于解决NAT(网络地址转换)引起的毗连问题。STUN协议允许客户端发现其在NAT后的公共地址和端口,从而直接通信成为大概。
TURN服务器:
用于在两个端点无法直接通信时提供中继服务。TURN服务器充当一个中继,将数据传输给两个端点,以解决NAT等问题。
其实很好理解,比方说我们两台电脑必要进行p2p通信,假如两台电脑再同一局域网,那直接就通信了,没有问题。
但是假如两台电脑再不同局域网,那么该怎么通信呢?我怎么能访问到别的一台电脑呢?它又不是服务器,我也不知道它的公网ip!
那么没有问题,STUN服务器来帮助,他做的事变就是这个,它作用就是找到两台电脑【固然也可以是手机】的公网ip,然后两台电脑就可以通过公网ip地址,相互访问了。
问题又来了,它假如找不到公网ip怎么办? 这就是TURN服务器要干的事变了,没办法,那就只能让TURN服务器中转一下,留意,假如走到这一步,是要消耗服务器流量的。
二、具体搭建步骤
搭建stun-server和搭建turn-server,上来我们认为要搭建两个,实际上,可以用coturn解决问题, Coturn不但仅是一个TURN服务器,还包罗了STUN的功能,允许客户端发现其在NAT后的公共IP地址和端口,简而言之,只必要搭建一个就可以。
1.下载安装coturn
脚本如下:
①更新体系: yum update
②安装Coturn: yum install coturn
③启动Coturn服务: systemctl start coturn
④确保Coturn开机启动: sudo systemctl enable coturn
⑤假如有防火墙,确保打开相应的端口:
firewall-cmd --zone=public --add-port=3478/udp --permanent
firewall-cmd --reload
留意:假如用的是云服务器,还要到背景去开启tcp以及udp的3478端口,如阿里云的是在安全组那里设置【这个很重要,我就是由于没有放开udp的3478端口,导致白白延长了很长时间】
以上所有脚本,假如有选择的,就输入y,然后enter,没有选择的,直接enter
2、处理证书问题
coturn安装成功后,打开配置文件,我的是默认安装到了/etc/coturn下,配置打开如下【
无用部分已排除
】:
#listening-device=eth0
#listening-port=3478
#tls-listening-port=5349
#alt-listening-port=0
#alt-tls-listening-port=0
#listening-ip=172.17.19.101
#listening-ip=10.207.21.238
#listening-ip=2607:f0d0:1002:51::4
#relay-device=eth1
#relay-ip=172.17.19.105
#relay-ip=2607:f0d0:1002:51::5
#external-ip=60.70.80.91
#external-ip=60.70.80.91/172.17.19.101
#external-ip=60.70.80.92/172.17.19.102
#relay-threads=0
# Lower and upper bounds of the UDP relay endpoints:
# (default values are 49152 and 65535)
#min-port=49152
#max-port=65535
#user=username1:password1
#cert=/etc/pki/coturn/public/turn_server_cert.pem
#pkey=/etc/pki/coturn/private/turn_server_pkey.pem
#realm=mycompany.org
复制代码
安装coturn后,cert和pkey是注释状态,但是实际上,这个是不能注释的,否则运行时,会报错,报证书找不到。
①安装依靠: yum install -y make gcc gcc-c++ wget openssl-devel libevent libevent-devel openssl git
②生成证书:openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes
以上脚本,都按enter进行下一步
上面两个脚本执行后,/etc文件夹下,会有两个文件,turn_server_cert.pem以及turn_server_pkey.pem,将cert以及pkey配置为上面两个文件的地址。
3、处理各个ip以及端口的配置
listening-ip配置为0.0.0.0即可,如许会监听所有的ip请求
relay-ip配置为服务器的外网ip地址
external-ip 配置为服务器的外网ip地址
listening-port=3478 保持原有配置即可
4、配置用户名密码以及域标识
创建用户名密码以及域标识的格式如下:
turnadmin -a -u [用户名] -p [密码] -r [域标识]
我这里执行:
turnadmin -a -u wjc -p 123456 -r turn.zilv.cn
相当于创建了一个wjc的用户名,密码为:123456,域标识为turn.zilv.cn
以上创建好后,再次更新turnserver.conf文件如下:
user=wjc:123456
realm=turn.zilv.cn
三、测试
可以采用谷歌提供的在线测试工具进行:
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
四、将配置放到第一篇文章的demo中
原来的配置都不用变,将本身的iceserver配置进去就可以了,如下图:
五、总结
iceserver的确是不好配置,虽然网上的文档,包罗chatgpt,都有相应的步骤,但是几乎没有完整的,我本身也走了很多弯路,至少花了两天时间,才彻底搞定,为了大家少走弯路,所以本日再好好总结下,相信大家按照我的步骤一定可以或许完本钱身的iceserver搭建
最后照旧提示下轻易出问题的点,大家可以对号入座,作为重点排查对象:
1、ip设置的精确吗
2、用户名密码有没有用账号密码创建?我就是没有创建,直接想固然的的配置了,重要,要用脚本创建了用户名密码才可以
3、udp以及tcp端口放开了吗?我当时是udp再阿里云背景没有放开,所以一直不通,找了好久才发现这个隐蔽的问题
4、证书配置了吗?也是必要用脚本配置的哦
同时也欢迎您关注爱自律官方微信公众号,同时体验爱自律小程序的使用,让我们一起爱上自律,拥抱自由吧。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
卖不甜枣
金牌会员
这个人很懒什么都没写!
楼主热帖
Windows安装mysql数据库
基于SqlSugar的开发框架循序渐进介绍( ...
内网渗透-红队内网渗透工具(Viper) ...
2022保密教育线上培训考试 06 ...
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 ...
C# 将HTML转为XML
C语言牛客(NowCoder)刷题——基础语法 ...
嵌入式软件工程师工作经验分享 ...
开源技术交流丨一站式全自动化运维管家 ...
从0到1,实现Java控制台版本的ATM管理系 ...
标签云
存储
挺好的
服务器
浏览过的版块
.Net
快速回复
返回顶部
返回列表