Install Coturn -Kurento学习(四)

一、 将服务器作为标准操作系统包

目前,已有多个操作系统对该项目进行了预打包:
1) Debian家族的新Linuxes拥有“coturn”软件包:
http://packages.qa.debian.org/r/coturn.html
可按常规方式安装:apt install coturn

如果您使用的是来自项目下载站点的Debian包,
然后按照以下说明操作:

打开存档:

$tar xvfz turnserver-<…>.tar.gz

读 INSTALL 文件:

$cat INSTALL

安装*.deb文件:

$sudo apt-get update
$sudo apt get install gdebi core
$sudo gdebi coturn*.deb

要安装没有任何依赖项的裸包,请键入:

$sudo dpkg-i coturn_**.deb

安装之后,请阅读/usr/share/doc/coturn目录中的文档。
所有二进制文件都将安装在/usr/bin/目录中。
turn*.conf配置文件位于/etc目录中。
服务启动控制脚本将位于/etc/init.d/coturn和
在/etc/defaults/coturn文件中。

2) ArchLinux有这个TURN服务器包:

https://aur.archlinux.org/packages/coturn/

3) FreeBSD和OpenSUSE将此项目的前身打包
(rfc5766转动服务器)。

二、 下载

您必须下载存档文件turnserver-*.tar.gz并将其解压缩:

$tar xfz turnserver-*.tgz

它将创建目录“turnserver-*”,其中包含所有源、生成文件,
示例和文档。

三、构建(BUILD)

如果您确定系统已准备好进行构建(请参阅
“额外的库和实用程序”下面),然后你可以建立系统。
首先,必须运行配置脚本:

$cd turnserver-*
$./configure

它将创建一个为您的系统定制的Makefile。
默认情况下,生成的Makefile会将所有内容安装到:

-/usr 在Solaris上。
-/usr/pkg NetBSD上。
-/usr/local 其他地方。

二进制文件将被复制到安装的bin子目录中
目标,复制到etc子目录的配置文件。默认的SQLite数据库
将在var/db/turndb中创建。会有的
还有文档、示例和其他一些文件,在单独的目录中。

您可以通过以下方式更改根配置的目标目录
在中设置前缀变量
配置命令行。例如:

$PREFIX=/opt ./configure

或:

$./configure--prefix=/opt

您可以通过以下方式更改辅助配置的目标子目录
设置BINDIR、CONFDIR、MANPREFIX、EXAMPLESDIR、DOCSDIR、LIBDIR、SCHEMADIR,
中的LOCALSTATEDIR、TURNDBDIR和turncludedir变量

配置命令行。例如:

$PREFIX=/opt BINDIR=/opt/bin64 CONFDIR=/opt/conf./configure

或:

$./configure--prefix=/opt--bindir=/opt/bin64--confdir=/opt/conf

您还可以通过以下方式更改编译和链接选项
在中设置公共生成变量

配置命令行。例如:

$CC=clang CFLAGS=-D_CAURIB LDFLAGS=-lshanka ./configure--prefix=/opt/shy

有关更多详细信息,请参阅下面单独的安装部分。
脚本“configure”是一个专有脚本。它将创建一个Makefile
可用于生成项目的:

$ make

不带选项的make命令将执行以下操作:

-编译代码。
-创建bin/子目录并将编译生成的TURN Server、TURN admin和
"utility”应用程序放在该目录下。
-创建lib/子目录并将 client lib库放在那里。
-创建include/turn/sub目录并将include文件放在其中。
-创建要复制到的sqlite/turndb默认空数据库
安装过程中的var/db/。

TURN程序可以直接调用,也可以使用shell脚本。
脚本示例位于examples/scripts目录中。这些脚本
只是示例:您可以成功运行它们进行测试,但是
您必须更改真实环境的脚本参数。

命令:

$sudo make install

将所有内容安装到系统文件结构中(请参见下文)。
(注意:在NetBSD上,使用“su root-c”)。
命令:

$sudo make deinstall

将从系统中删除所有已安装的TURN服务器文件。
命令:
$ make clean
将清除BUILD和配置操作的所有结果。

不要在“make deinstall”之前运行“make clean”。“清洁”命令将
删除Makefile,然后将无法“卸载”。如果那样的话
已经发生,然后运行./configure并再次生成,然后卸载,然后
干净。

注意:在大多数现代系统上,构建将产生动态链接
可执行文件。如果你想要静态链接的可执行文件,你必须修改,
相应地,Makefile.in模板文件。

四、 OPENSSL

如果您正在使用系统附带的OpenSSL,并且
好吧,那你就不用读这一章了。如果你的系统
一个过时的OpenSSL版本,或者如果您需要一些非常新的OpenSSL特性
在当前的正常稳定版本中不存在,那么您可能有
使用不同的OpenSSL版本编译(并运行)TURN服务器。

例如,如果您需要ALPN特性或DTLS1.2,并且您的系统附带
OpenSSL 1.0.1,除非安装
OpenSSL 1.0.2,编译并运行更新版本的TURN服务器。

问题是,用另一个版本替换系统的OpenSSL通常不是很安全。一些系统“绑定”到其“本机”OpenSSL
安装,它们的行为可能会变得不可预测。

所以你想保留你的系统的OpenSSL,但是你想编译
使用更新的OpenSSL版本运行TURN服务器。有不同的方法
做那件事。我们建议如下:
1) 从OpenSSL.org下载OpenSSL版本。
2) 假设我们要将“自定义”OpenSSL安装到/opt中。

配置并构建OpenSSL为:

$./config --prefix=/opt
$make
$make install

这些命令将OpenSSL安装到/opt中,使用静态库(no
动态库)。
3) 构建TURN服务器:
$./configure–prefix=/opt
$make
这些命令将构建TURN服务器二进制文件,静态链接
到新的OpenSSL。
4) 然后您可以运行TURN服务器,而无需设置动态
库路径-因为它被静态地链接到新的
OpenSSL库。
一个潜在的问题是libevent2也在使用OpenSSL。所以,理想情况下,
我们建议在运行时对所有潜在的差异进行100%安全
libevent2也用新的OpenSSL重新构建。

五、 安装-INSTALL

此步骤是可选的。您可以从原始版本运行turnserver
目录,成功,但未将转换服务器安装到系统中。
只有当您想集成在您的系统中转换服务器。
运行命令:

$make install

它将在/usr/local/directory(或任何目录)中安装turnserver
在前缀变量中设置)。你必须复制
/usr/local/etc/turnserver.conf.默认为/usr/local/etc/turnserver.conf文件并调整运行时配置。

此命令将:
-将examples子目录的内容复制到
PREFIX/share/examples/turnserver/ 目录;
-从SQLite/turndb复制生成的默认空SQLite数据库
至/usr/local/var/db或至/var/db/turndb;
-将include/turn子目录的内容复制到
PREFIX/include/turn/ 目录;
-将数据库架构文件turndb/schema.sql复制到
前缀/共享/turnserver/ 目录;
-将所有文档复制到PREFIX/share/doc/turnserver/目录中。
“make install”的安装目标可以通过
使用DESTDIR变量,例如:

$./configure--prefix=/usr
$make
$make DESTDIR=/opt install

在本例中,根安装目录将是/opt/usr。
默认情况下,“configure”脚本生成一个带有“rpath”选项的Makefile
为动态库链接设置(如果您的系统和编译器允许该选项)。如果这是不可取的(比如在一些操作系统的打包中过程),然后使用–disable rpath选项运行“configure”脚本。
如果不使用rpath链接选项,则在安装之后,
您可能需要调整系统范围的共享库搜索路径
“ldconfig-n”(Linux)、“ldconfig-m”(BSD)或
“crle-u-l”(Solaris)。您的系统必须能够找到
libevent2、openssl和(可选)SQLite和/或PostgreSQL和/或MySQL(MariaDB)和/或MongoDB和/或Redis共享库,与
系统范围库搜索配置的帮助或使用LD_LIBRARY_PATH
。“make install”将不保证添加
自动将/lib和/usr/local/lib前缀添加到库搜索路径,
但是如果在不同的非默认目录中有一些库,那么
必须手动将它们添加到搜索路径中,否则
调整LD_LIBRARY_PATH。

六、 平台-PLATFORMS

TURN服务器使用通用的NIX系统api,应该是
可用于各种
NIX系统。
支持以下平台
(i386和x86 64变型(如适用):
Linux,Linux系统
BSD系列(Mac OS X、FreeBSD、NetBSD、OpenBSD),
Solaris 11,
-Cygwin
它也必须适用于其他NIXes。配置脚本和/或
Makefile可能需要对上面没有提到的其他
号进行调整。
客户机消息传递库的代码可以编译并用于
Windows也是,但目前不支持。

七、 编译器-COMPILERS

TURN服务器是用C语言编写的,便于移植
因为性能的原因。
测试的C编译器是:

- gcc 3.4.4 thru 4.8.x
- clang 3.0 or better
- Solaris Studio 12 C compiler

它也可以与其他编译器一起编译。
该代码与C++编译器和C++编译器兼容。
(像g++)也可以用于编译:
$CC=g++./configure
$make

八、您需要哪些额外的库和实用程序

除了常见的*NIX操作系统服务和库之外,要编译这段代码,
OpenSSL(推荐1.0.0a版或更高版本)和libevent2(2.0.5版
或者更好)是必需的,SQLite C开发库和头是可选的,
PostgreSQL C客户端开发设置是可选的,
MySQL(MariaDB)C客户端开发设置是可选的,
Redis数据库的MongoDB C驱动程序和Hiredis开发文件
访问都是可选的。对于开发构建,开发头和
要链接的库将被安装。对于运行时,只有
需要运行时设置。如果为修改生成
静态链接,甚至不需要运行时安装。
OpenSSL、SQLite、libevent2、PostgreSQL、MySQL(或MariaDB)和Hiredis
可以从其网站下载库:

-http://www.openssl.org(必需);
-http://www.libevent.org(必需);
-http://www.sqlite.org(可选);
-http://www.postgresql.org(可选);
-http://www.mysql.org(或http://mariadb.org)(可选);
-https://github.com/mongodb/mongo-c-driver(可选);
-http://redis.io(可选)。

安装非常简单-通常
“/configure”和“make install”命令。将它们安装到默认值中
位置-配置脚本和Makefile假设它们是
安装在默认位置。如果没有,则必须修改那些。

最流行的现代系统(FreeBSD、Linux Ubuntu/Debian/Mint、Amazon Linux、Fedora)
使用更简单的方式安装第三方工具:

  1. FreeBSD (the FRESH ports database is assumed to be installed, with the turnserver port included):
$cd /usr/ports/net/turnserver
$sudo make install clear

就这样-这个命令将安装TURN服务器第三方工具。
如果系统没有新的仓库:

		$ cd /usr/ports/security/openssl/
		$ sudo make install clean
		$ cd /usr/ports/databases/sqlite3/
		$ sudo make install clean
		$ cd /usr/ports/devel/libevent2/
		$ sudo make install clean
		$ cd /usr/ports/databases/postgresql84-client/ (or any other version)
		$ sudo make install clean
		$ cd /usr/ports/databases/mysql51-client/ (or any other version)
		$ sudo make install clean
		$ cd /usr/ports/databases/hiredis/
		$ sudo make install clean

2)Linux Ubuntu、Debian、Mint:

		$ sudo apt-get install libssl-dev
		$ sudo apt-get install libsqlite3 (or sqlite3)
		$ sudo apt-get install libsqlite3-dev (or sqlite3-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

或者你可以使用Synaptic或其他软件中心。

3)Fedora:

$sudo-yum安装openssl-devel
$sudo yum安装sqlite
$sudo-yum安装sqlite-devel
$sudo yum安装libevent
$sudo-yum安装libevent-devel
$sudo-yum安装postgresql-devel
$sudo yum安装postgresql服务器
$sudo yum安装mysql-devel
$sudo yum安装mysql服务器
$sudo yum安装hiredis
$sudo yum安装hiredis-devel

4)Amazon Linux与Fedora类似,但是:
-必须先安装gcc:

$sudo yum install gcc

-mongo-c-driver包“自动”不可用。
MongoDB支持不会编译,除非您“手动”安装它
在TURN服务器编译之前。参考
https://github.com/mongodb/mongo-c-driver获取安装驱动指令集。

-hiredis软件包不可用,因此不要发布
hiredis安装命令。Redis支持将不会
编译,除非在转弯前“手动”安装
服务器编译。对于Amazon EC2 AMIs,我们安装
在系统中手动redis。但是转弯服务器可以
完美安装,不支持redis-如果不支持
需要它。
5)旧的Debian家族Linuxes正在使用一些包
用不同的名字。
6)在某些CentOS/RedHat 6.x系统上,您必须安装
libevent2“手动”,您可以选择下载
安装Hiredis,但其他的都可以在软件中找到
储存库。另外,如果你想为CentOS做一个RPM,
按照说明查看目录 rpm/ 带有这些命令。

注意:如果您的工具安装在非标准位置,您将
必须调整CFLAGS和LDFLAGS环境变量
服务器。/配置脚本。例如,要配置TURN服务器
对于Solaris 11 PostgreSQL 32位设置,可以使用以下命令
这样地:

$CFLAGS=“${CFLAGS}-I/usr/postgres/9.2-pgdg/include/”LDFLAGS=“${LDFLAGS}-L/usr/postgres/9.2-pgdg/lib/”。/configure

动态库路径:

您可能还需要调整turn server start脚本,添加所有动态运行时
库路径到LD_library_PATH。或者你会发现调整
使用命令搜索系统范围的共享库路径:
在Linux上:

$ldconfig-n<libdirname>

或在BSD上:

$ldconfig-m<libdirname>

或在Solaris上:

$crle-u-l<libdirname>

在Mac OS X上,动态库处理有三种不同的选择:
1) 在运行时使用DYLD_LIBRARY_PATH环境变量;或
2) 在编译之前,检查动态库并调整它们的标识名,
如有必要,转到绝对库路径或@rpath/。
例如,MySQL动态库可能需要这种调整。你必须使用
“adjust_name_tool”和-id选项;或
3) 编译完成后,可以使用相同的工具“adjust_name_tool”,
使用option-change,调整二进制文件中的库路径值,
必要时。所有库路径都必须是绝对路径或@rpath/。。。.
另见下一节。

注意:请参阅“SQLite设置”、“PostgreSQL设置”和“MySQL设置”和
下面的“MongoDB安装”和“Redis安装”部分了解更多数据库安装
信息。

注意:如果您没有安装SQLite或PostgreSQL或MySQL或MongoDB或Redis,
然后将限制用户数据库的命令行选项。
它对于开发设置非常有用,但是对于真正的运行时系统
需要SQLite或PostgreSQL或MySQL或MongoDB或Redis。

注意:要在同一系统上运行PostgreSQL或MySQL或MongoDB或Redis服务器,
您还必须安装相应的PostgreSQL或MySQL或
MongoDB或Redis服务器包。DB C开发包只提供
开发库和客户端库只提供客户端
访问实用程序和运行库。服务器包可以
包括一切-客户端,C开发和服务器运行时。

注意:OpenSSL将在libevent2之前安装。当libevent2正在构建时,
它正在检查是否已经安装了OpenSSL,以及哪个版本
关于OpenSSL。如果OpenSSL丢失或太旧,则libevent_OpenSSL
在生成过程中未创建库,您将无法
使用TLS支持编译TURN服务器。

注意:旧的libevent版本1.x.x通常包含在某些NIX中
分配。那个版本有缺点,比新的版本差
libevent2,特别是在表演部门。这就是为什么我们
不提供与旧版本libevent 1.x的向后兼容性。
如果系统具有旧的libevent,则必须安装新的
来自他们网站的libevent2。它是用旧的
尼克斯测试的
(就像FreeBSD 6.x)它工作得很好。

注意:SQLite必须是3.x版。

注意:对于额外的安全特性(如DTL)
支持,建议使用OpenSSL 1.0.0a或更高版本。旧版本确实
在某些情况下,不支持DTL。例如,Debian的“挤压”
Linux提供了0.9.8版本的OpenSSL,它不能正确地与
IPv6上的DTL。如果您的系统已经有一个旧版本的OpenSSL
安装(通常在目录/usr中),然后您可能希望安装
新的OpenSSL“超过”旧的(因为它很可能不允许
移除旧的)。安装新的OpenSSL时,运行OpenSSL的
配置如下命令:

$./config --profix=/usr

将安装前缀设置为/usr(不带“–prefix=/usr”
默认情况下,它将被安装到/usr/local)。这是必要的,如果你
想要覆盖现有的旧OpenSSL安装。

九、 使用非默认前缀目录生成

假设您有一个旧的系统,它有旧的openssl和旧的libevent
你不想改变,但你还是想以构建turnserver。

执行以下步骤:

1) 从openssl.org下载新的openssl。
2) 配置并构建新的openssl并将其安装到/opt:

$./config --profix=/opt
$make
$make install

3) 从libevent.org下载最新的libevent2,配置并安装
它进入/选择:

$./configure--prefix=/opt
$make
$make install

4) 将目录更改为coturn并构建它:
$./configure–prefix=/opt
$ make

之后,您可以在本地使用它,也可以将其安装到/opt中。
但是要运行它,你必须调整你的ldu库路径,
像这样:
$LD_LIBRARY_路径=/opt/lib./bin/turnserver

另一个选择是调整系统范围内的共享库搜索使用路径

 $ ldconfig -n <libdirname> (Linux) 
 $ ldconfig -m <libdirname> (BSD) 
 $ crle -u -l <libdirname> (Solaris)

十、 测试脚本

首先,可以使用RFC 5769中的测试向量来检查
STUN/TURN消息编码算法工作正常。运行实用程序:

$ cd examples
$ ./scripts/rfc5769.sh

它将执行多个协议检查并在输出上打印结果。
如果编译有任何错误(打开服务器或OpenSSL库)
然后你会看到一些错误。
现在,您可以执行 TRUN 功能测试(bare minimum TURN example)。
如果一切都正确编译,那么以下程序必须运行
一起成功地模拟了本地环回中的TURN网络路由
网络环境:

打开两个SHELL screnns 或 consoles:
在shell 1中,运行TURN server应用程序:

 $ cd examples
 $ ./scripts/basic/relay.sh

在shell 2中,运行测试客户端应用程序:

 $ cd examples
 $ ./scripts/basic/udp_c2c_client.sh

如果客户端应用程序产生输出,并在大约22秒
打印抖动、损耗和往返延迟统计数据,然后一切都是
好的。
还有一个更复杂的测试:
在shell 1中,运行TURN server应用程序:

 $ cd examples
 $ ./scripts/basic/relay.sh

在shell 2中,运行“peer”应用程序:

 $ cd examples
 $ ./scripts/peer.sh

在shell 3中,运行测试客户端应用程序:

 $ cd examples
 $ ./scripts/basic/udp_client.sh (or ./scripts/basic/tcp_client.sh)

对于利用长期认证机制实现环境转换。这套
脚本更复杂,检查脚本选项对于
了解TURN服务器的工作原理:
在shell 1中,运行secure TURN server应用程序:

 $ cd examples
 $ ./scripts/longtermsecure/secure_relay.sh

在shell 2中,运行“peer”应用程序:

 $ cd examples
 $ ./scripts/peer.sh

在shell 3中,运行安全测试客户端应用程序:

$ cd examples
 $ ./scripts/longtermsecure/secure_udp_client.sh
  
 (or ./scripts/longtermsecure/secure_tcp_client.sh)
 (or ./scripts/longtermsecure/secure_tls_client.sh)
 (or ./scripts/longtermsecure/secure_dtls_client.sh)
 (or ./scripts/longtermsecure/secure_sctp_client.sh)
 (or ./scripts/longtermsecure/secure_udp_c2c.sh for "peerless" 
client-to-client communications)

提供的脚本是为本地环回通信设置的,
作为示例和测试环境。真正的网络IP必须是
用于实际工作环境。
尝试wireshark检查客户端和turnserver之间的通信
还有点对点。
检查README.*文件以及脚本relay.sh和
secure_relay.sh指导如何运行TURN服务器。

十一、OS X编译说明

OS X通常提供了一个旧版本的openssl,其中有一些Apple
增加。“本机”openssl将在其限制范围内工作,
但是最好的选择是安装一个全新的openssl开发
库,来自http://www.openssl.org。你会有
要处理生成的二进制文件的动态链接,或使用
静态链接(请参阅OPENSSL一节)。

十二 、MS Windows和Cygwin支持

目前,此项目无法在MS Windows下编译。
由于该项目使用的是相当简单的*NIX API,因此支持
在微软Windows的Cygwin环境下。
Cygwin用户需要注意的一点是:我们建议从Cygwin安装libevent2
“端口”站点:http://sourceware.org/cygwinports/。你必须安装
libevent2运行时和libevent devel包。“手册“libevent2编译
不建议在Cygwin安装,也不保证
结果。

十三、客户端API库。

编译过程将会创建lib/子目录,目录下有
libturnclient.a 库文件。此库的头文件位于include/turn/client/
子目录。消息传递功能的C++包装器位于
TurnMsgLib.h标题。C++代码的一个例子可以在StestCuel.C文件中找到。
如果使用C++编译器,作为C语言,该文件被编译为C++程序。
使用C编译器的程序。

十四、文档

安装后,必须提供手册页turnserver(1)。手册页
位于man/man1子目录中。如果你想看没有
安装,运行命令:

$	man -M man turnserver

HTML格式的客户端库函数引用位于docs/HTML中
原始存档树的子目录。安装后,它将
放在前缀/share/doc/turnserver/html中。

十五、SQLite设置

网站http://www.sqlite.org拥有大量优秀的文档。
TURN服务器的默认SQLite数据库位置是
/usr/local/var/db/turndb或/var/db/turndb(取决于平台)。
TURN服务器的数据库模式非常简单,位于
在项目的turndb/schema.sql文件中,或在系统的
turnserver安装后的 PREFIX/share/turnserver/schema.sql文件:
如果要创建新的SQLite TURN数据库:

$sqlite3<your db file name><turndb/schema.sql

架构描述:
#长期凭证机制授权表:

CREATE TABLE turnusers_lt (
    realm varchar(127) default '',
    name varchar(512),
    hmackey char(128),
    PRIMARY KEY (realm,name)
);

字段hmackey包含键的十六进制字符串表示。
我们不存储用户打开的长期凭据密码,因为
安全原因。仅存储HMAC密钥有其自身的含义-
如果您更改域,则必须更新所有的HMAC密钥
用户,因为域用于生成HMAC密钥。
对于SHA1,密钥必须最多32个字符(十六进制表示为16字节):

#用于基于秘密的授权的共享机密表
#(REST API)。共享密钥可以存储在不安全的open中
#纯格式,或加密格式(请参阅turnadmin文档)。
#它只能与长期
#机制:

CREATE TABLE turn_secret (
	realm varchar(127) default '',
    value varchar(127),
	primary key (realm,value)
);

#包含“white”允许 peer IP范围的表。

CREATE TABLE allowed_peer_ip (
	realm varchar(127) default '',
	ip_range varchar(256),
	primary key (realm,ip_range)
);

#持有“black”拒绝peer IP范围的表。

CREATE TABLE denied_peer_ip (
	realm varchar(127) default '',
	ip_range varchar(256),
	primary key (realm,ip_range)
);

#将源与域匹配的表。
#多个起源可能有相同的领域。
#如果找不到王国或没有起源
#然后使用默认领域。

CREATE TABLE turn_origin_to_realm (
	origin varchar(127),
	realm varchar(127),
	primary key (origin,realm)
);

#领域选项。
#有效选项为“max bps”,
#“总配额”和“用户配额”。
#它们的值是整数(以文本形式)。

CREATE TABLE turn_realm_option (
	realm varchar(127) default '',
	opt varchar(32),
	value varchar(128),
	primary key (realm,opt)
);

#oAuth密钥存储表。

CREATE TABLE oauth_key (
	kid varchar(128), 
	ikm_key varchar(256),
	timestamp bigint default 0,
	lifetime integer default 0,
	as_rs_alg varchar(64) default '',
	realm varchar(127) default '',
	primary key (kid)
); 

oauth_键表字段的含义是:
kid:钥匙的kid;
ikm_key-base64编码密钥(“输入密钥材料”);
timestamp(可选)当键
生命周期开始;
lifetime(可选)以秒为单位的密钥生存期;默认值
是0-无限制的生存期。
as_rs_alg-oAuth令牌加密算法;有效值为
“A256GCM”、“A128GCM”(见
http://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40#第5.1节)。
默认值为“A256GCM”;
realm-(可选)可用于设置用户领域(如果字段不为空)。

#Https访问管理用户。
#如果你不想的话,把这张表留下
#对管理功能的远程https访问。
#Web用户密码可以存储在不安全的open中
#纯格式,或加密格式(请参阅turnadmin文档)。

CREATE TABLE admin_user (
	name varchar(32),
	realm varchar(127),
	password varchar(127),
	primary key (name)
);

您可以使用turnadmin程序来管理数据库-您可以使用
turnadmin添加/修改/删除用户,或者可以使用turnadmin生成
hmac键并使用您喜欢的工具修改数据库。
启动turnserver时,–db参数将是,例如:
转台服务器。。。–db=“/var/db/turndb”
您必须使用程序turnadmin来填充
数据库,或者可以使用psql手动完成。
填写用户,例如:
TURN REST API的共享秘密(realm north.gov):

$bin/turnadmin-s logen-r north.gov-b“/var/db/turndb”项目

长期证书机制:

$bin/turnadmin-a-b“/var/db/turndb”-u gorst-r north.gov-p hero
$bin/turnadmin-a-b“/var/db/turndb”-u ninefingers-r north.gov-p您必

须诚实
管理员用户:

$bin/turnadmin-A-b“/var/db/turndb”-u gorst-p英雄
$bin/turnadmin-A-b“/var/db/turndb”-u ninefingers-p youhavetoberalistic-r north.gov

十七、MySQL(MariaDB)设置

MySQL的设置类似于PostgreSQL(同样的想法),并且有很好的文档记录
在他们的网站http://www.mysql.org上。TURN服务器数据库架构是
与PostgreSQL相同,您可以在turndb/schema.sql文件中找到它,或者
在系统的前缀/share/turnserver/schema.sql文件中
安装。
一般设置类似于PostgreSQL设置过程:
1) 检查mysql服务器访问是否正常。紧接着MySQL服务器
安装时,必须至少在本地主机上使用root帐户。
2) 从根帐户登录到mysql控制台:
$sudo bash
#mysql msysql
(如果设置了mysql帐户密码,则为mysql-p mysql)
3) 使用“turn”密码添加“turn”用户(例如):

> create user 'turn'@'localhost' identified by 'turn';

4) 创建数据库“coturn”(例如)并授予用户“turn”权限:

  > create database coturn character set latin1;
  > grant all on coturn.* to 'turn'@'localhost';
  > flush privileges;
  Ctrl-D

5) 创建数据库架构:

$mysql-p-u turn coturn<turndb/schema.sql
 Enter password: turn
$

如果这是测试数据库,请填写测试数据库数据
(不是生产数据库):

$mysql -u turn -p
$Enter password:
mysql> use coturn;
Database changed
mysql> set names utf8;
mysql> source /usr/share/coturn/schema.sql
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.02 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+----------------------+
| Tables_in_coturn     |
+----------------------+
| admin_user           |
| allowed_peer_ip      |
| denied_peer_ip       |
| oauth_key            |
| turn_origin_to_realm |
| turn_realm_option    |
| turn_secret          |
| turnusers_lt         |
+----------------------+
8 rows in set (0.00 sec)

6) 填写用户,例如:
TURN REST API的共享秘密(realm north.gov):

$bin/turnadmin -s logen -r north.gov -M “host=localhost dbname=coturn user=turn password=turn”

长期证书机制:

$bin/turnadmin -a -M “host=localhost dbname=coturn user=turn password=turn” -u gorst -r north.gov -p hero
$bin/turnadmin -a -M “host=localhost dbname=coturn user=turn password=turn” -u ninefingers -r north.gov -p youhavetoberealistic

管理员用户:

$bin/turnadmin -A -M “host=localhost dbname=coturn user=turn password=turn” -u gorst -p hero
$bin/turnadmin -A -M “host=localhost dbname=coturn user=turn password=turn”- u ninefingers -p youhavetoberalistic -r north.gov

7) 现在我们可以在turnserver中使用mysql了。
如果TURN服务器是使用MySQL支持编译的,那么我们可以使用
打开服务器数据库参数——mysql userdb。此参数的值
是MySQL数据库的连接字符串。因为“本机”MySQL没有
具有“连接字符串”这样的功能,TURN服务器解析
连接字符串并将其转换为MySQL数据库连接参数。
MySQL连接字符串的格式为:

“host=<host>
 dbname=<database name> 
 user=<database user> 
 password=<database user password>
 port=<port>
 connect_imeout=<seconds>
 read_timeout=<seconds>”

(所有参数都是可选的)
因此,TURN server命令中MySQL数据库参数的一个示例
行是:

--mysql userdb=“host=localhost dbname=coturn user=turn password=turn connect_timeout=30 read_timeout=30”

或者在turnserver.conf文件中:

mysql userdb=“host=localhost dbname=coturn user=turn password=turn connect_timeout=30 read_timeout=30”

如果必须使用安全的MySQL连接(SSL),则还必须使用
安全通信的可选连接字符串参数:
ca,capath,cert,key,cipher(参见
http://dev.mysql.com/doc/refman/5.1/en/ssl-options.html
命令选项说明)。

二十、性能调整

此主题在wiki页面中介绍:
https://github.com/coturn/coturn/wiki/TURN-Performance-and-Load-Balance

二十一、启动服务器设置

阅读项目wiki页面:https://github.com/coturn/coturn/wiki
另外,检查从页面链接到TURN/WebRTC配置示例的项目。
它可能会让你知道怎么做。

二十二、HTTPS管理接口

turnserver进程提供了一个HTTPS Web访问作为统计和基本管理
接口。turnserver侦听同一端口上传入的HTTPS管理连接
作为主要的转身/晕眩听众。Web管理页面是基本的和自解释的。
要使HTTPS接口处于活动状态,数据库表admin用户必须是
使用管理员用户帐户填充。管理员用户可以是超级用户
(如果未分配给特定领域)或受限用户(如果分配给
一个王国)。受限管理用户只能在
他们相应的领域。

二十三、Telnet CLI管理界面

您有一个telnet接口(默认启用)来访问turnserver进程,
查看它的状态,收集一些统计信息,并进行一些更改
在飞行中。
您可以使用telnet或putty程序(在telnet模式下)访问该CLI接口。
默认情况下,进程侦听telnet的IP地址127.0.0.1上的端口5766
连接。
警告:所有telnet通信在网络上都是未加密的。为了
出于安全原因,我们建议使用CLI的环回IP地址(127.0.0.1
或::1)。CLI可能配置了密码,但该密码是
通过网络传输也未加密。所以坚持地方制度
CLI访问和仅使用ssh访问turnserver系统终端将
做一个明智的决定。

二十四、ALPN支持。

从4.3.2.1版开始,TURN服务器支持ALPN STUN
规范(http://tools.ietf.org/html/draft-ietf-tram-alpn-08)。
如果需要ALPN功能,那么OpenSSL版本1.0.2或
必须使用较新的。有关OPENSSL升级提示,请参阅OPENSSL部分。

二十五、SCTP支持

从4.4.3.1版开始,TURN服务器支持“本机”SCTP。
在客户端,TURN服务器还支持SCTP和
SCTP上的TLS。
中继端没有变化-中继通信仍然是UDP
或者TCP。

发布了23 篇原创文章 · 获赞 0 · 访问量 1638

猜你喜欢

转载自blog.csdn.net/flyhelloword/article/details/104143186