Ubuntu中搭建ICE服务器(Coturn)

Ubuntu中搭建ICE服务器(Coturn)1.WebRTC的P2P穿透WebRTC的P2P穿透部分是由libjingle实现的.步骤顺序大概是这样的:尝试直连.通过STUN服务器进行穿透无法穿透则通过TURN服务器中转STUN服务器比较简单.网上也有很多公开的STUN服务器可以用于测试,例如:stun.ideasip.com在WebRTC的P2P应用中,使用公开的STUN服务器时,有时响应比较慢,这就需要自己搭一个…

大家好,又见面了,我是你们的朋友全栈君。

1. WebRTC的P2P穿透

WebRTC的P2P穿透部分是由libjingle实现的.

步骤顺序大概是这样的:

  1. 尝试直连.
  2. 通过STUN服务器进行穿透
  3. 无法穿透则通过TURN服务器中转

STUN服务器比较简单. 网上也有很多公开的STUN服务器可以用于测试,例如: stun.ideasip.com

在WebRTC的P2P应用中,使用公开的STUN服务器时,有时响应比较慢,这就需要自己搭一个ICE服务器即可。ICE服务器包含STUN和TURN两部分,实际上只需要TURN服务器就可以解决P2P的穿透问题。

Coturn是在原来的TurnServer上增加了一些高级特性. (这是作者的描述, 两个项目是同一个作者. 作者更推荐使用Coturn).

  • coturn 支持tcp, udp, tls, dtls 连接.
  • coturn 支持linux bsd solaris mac os. 暂不支持windows (未来会支持)

2. 安装Coturn

2.1 安装依赖组件

使用下面相关命令安装Coturn依赖的相关库文件

sudo apt-get install libssl-dev
sudo apt-get install libevent-dev
sudo apt-get install libpq-dev
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
sudo apt-get install libhiredis-dev
sudo apt-get install git

2.2 下载编译安装Coturn

相关命令如下

git clone https://github.com/coturn/coturn
cd coturn
./configure
make
sudo make install

2.3 验证Coturn安装

使用下面命令查看Coturn的安装情况

which turnserver

如下图所示,可以看到Coturn的turnserver所在的路径,表示安装成功
在这里插入图片描述

3. 配置Coturn

3.1 创建配置文件

从默认的配置文件中复制生成Coturn的配置文件 turnserver.conf

sudo cp /usr/local/etc/turnserver.conf.default /usr/local/etc/turnserver.conf

3.2 生成SSL证书

生成服务器使用的SSL证书,相关命令如下所示:

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

命令相关输入信息可根据需要填写,如下图所示
在这里插入图片描述

可以在 /etc 目录下找到生成的两个证书文件,如下图所示
在这里插入图片描述

3.3 简单使用

至此,就可以直接运行下面的命令进行简单的使用了

turnserver -o -a -f -v --mobility -m 10 --max-bps=100000 --min-port=32355 --max-port=65535 --user=keda:keda1234 --user=keda2:keda1234 -r keda

其中:

  • -m 10 表示启动十个relay线程
  • –max-bps=100000 限制最大速度为100KB/s
  • 当TURN Server用于WebRTC时,必须使用long-term credential mechanism, 即指定 -a 或者 –lt-cred-mech
  • 添加了两个用户:keda和keda2,以及对应的密码

3.4 自定义设置

3.4.1 生成用户Key信息

从安全性方面考虑,可以为账户生成key, 这样就可以直接通过key登录,而不需要提供密码。

key 通过turnadmin生成, 需要(username, password, realm),realm是启动turn server时-r 参数指定的。生成用户Key信息,命令格式如下:

turnadmin -k –u 用户名 -p 密码 -r 域名

例如,用户名=keda、密码=keda1234、域名=keda,则命令如下:

turnadmin -k –u keda -p keda1234 -r keda

生成的Key信息如下图所示
在这里插入图片描述

3.4.2 创建用户配置文件

创建用户配置文件turnuserdb.conf,命令如下:

sudo vi /etc/turnuserdb.conf

在其中填入之前生成的用户名和key
在这里插入图片描述

3.4.3 修改配置文件

首先,使用 ifconfig 命令查看一下服务器的网卡类型:
在这里插入图片描述

其次,修改Coturn的配置文件,相关命令如下所示:

vi /usr/local/etc/turnserver.conf

配置文件的内容,如下所示:

listening-device=填写自己的网卡类型
relay-device=填写自己的网卡类型
listening-ip=ip地址
listening-port=3478
tls-listening-port=5349
relay-ip=ip地址
external-ip=ip地址
relay-threads=50
lt-cred-mech
static-auth-secret=用户名
user=用户名:密钥
userdb=/etc/turnuserdb.conf
#max-bps=102400
pidfile="/var/run/turnserver.pid"
no-loopback-peers
no-multicast-peers
sha256
mobility
no-cli
cert=/etc/turn_server_cert.pem
pkey=/etc/turn_server_pkey.pem
stale-nonce
use-auth-secret
Verbose
fingerprint

如下图所示,是虚拟机上的配置:
在这里插入图片描述

3.4.4 运行turnserver

使用下面命令运行turnserver就可以进行使用了

sudo turnserver -L 192.168.186.141 -o -a -b /etc/turnuserdb.conf -f -r keda

4. 运行并验证

4.1 查看Turnserver的运行情况

在这里插入图片描述

4.2 验证Turnserver的P2P穿透情况

使用 turnutils_uclient 工具验证Turnserver的P2P穿透情况,相关命令如下:

turnutils_uclient -u keda -w keda1234 192.168.186.141

执行结果,如下图所示
在这里插入图片描述

5. 参考资料

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/130416.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 图解ConcurrentHashMap

    图解ConcurrentHashMap曾经研究过jkd1.5新特性,其中ConcurrentHashMap就是其中之一,其特点:效率比Hashtable高,并发性比hashmap好。结合了两者的特点。   集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集…

  • MySQL数据库管理工具_Mysql数据库

    MySQL数据库管理工具_Mysql数据库官方社区版免费工具MySQLWorkbenchMySql官方社区版下载:MySQLCommunityDownloadsMySQLYumRepository MySQLAPTRepository MySQLSUSERepository MySQLCommunityServer MySQLCluster MySQLRouter MySQLShell MySQLWorkbench MySQLInstallerforWind…

  • JavaScript面向对象思想

    JavaScript面向对象思想javascript中的面向对象:ECMA标准定义JS中的对象:无序属性的集合,其属性可以包含基本值、对象或者函数。可以简单理解为JS的对象是一组无序的值,其中的属性或方法都有一个名字,根据这个名字可以访问相映射的值(值可以是基本值/对象/方法)面向对象三个基本特征是:封装、继承、多态封装:将对象运行所需的资源封装在程序对象中,基本上是方法和数据。对象是“公布其接口”。其他附加到这些接口上的对象不需要关心对象实现的方法即可使用这个对象。这个概念就是“不要告诉我你是怎么做的,只要做就可以了。”对象可

    2022年10月31日
  • java vimrc_vimrc: 终极 vim 配置, 克隆自: https://github.com/amix/vimrc

    java vimrc_vimrc: 终极 vim 配置, 克隆自: https://github.com/amix/vimrc这个仓库克自https://github.com/amix/vimrc放在oschina上来加速部署,也方便再添加些功能.如何使用:gitclonehttps://git.oschina.net/shrekuu/vimrc.git~/.vim_runtimesh~/.vim_runtime/install_awesome_vimrc.sh更多:这个版本直接加入了~/.vim_ru…

  • iPhone使用教程_iphone基础使用

    iPhone使用教程_iphone基础使用iPhone史上最全的使用教程iPhone的解锁、越狱、激活、固件等等是什么意思,有什么分别这几天看见好多新人问这几个词的含义及区别。我在这儿说说我的看法,不是官方解释,不懂的学习一下,懂的绕道,如有错误,敬请指正!第一次买来时或恢复官方固件后,iPhone会处于那种只能拨打紧急电话状态,不能使用其它功能,如果要使用其它功能,就必须进行一项操作,那就是“激活”。一般有锁版的只有使…

  • mysql怎么创建账户_mysql添加索引

    mysql怎么创建账户_mysql添加索引1.使用root账户登录到mysql:mysql -uroot -p2.创建用户名和密码:grant all on *.* to 用户名@’127.0.0.1′ identified by "密码";3.创建成功后,需设置访问权限。首先切换到mysql数据库:use mysql;4.修改新建用户的权限:update user set host = ‘%’ where user = ‘attckne…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号