为webrtc配合 ubuntu系统 rfc5766-turn-server
$ wget http://ftp.cn.debian.org/debian/pool/main/r/rfc5766-turn-server/rfc5766-turn-server_3.2.4.4-1_amd64.deb
可以根据网址从网站上直接下载
$ sudo apt-get update
$ sudo apt-get install gdebi-core
$ sudo gdebi rfc5766-turn-server_3.2.4.4-1_amd64.deb
安装完后,在/usr/share/doc/rfc5766-turn-server下有很多文档可参考。
$sudo vim /etc/turnserver.conf
sudo turnserver -c /etc/turnserver.conf --daemon
服务启动后,在上一个WebRTC示例中更改iceServers后测试:
“iceServers”: [{
“url”: “stun:stun.l.google.com:19302”
}, {
“url”: “turn:54.223.149.60”,
“username”: “username1”,
“credential”: “password1”
}]
更多安装信息在:http://turnserver.open-sys.org/downloads/v3.2.4.4/INSTALL
rfc5766-turn-server当然也有STUN Server的能力,但是需要给它配置2个IP,以帮助探测客户端所在NAT环境的行为,这里没有做。
测试:http://192.168.180.202:3478/ ip加上3478端口 显示TURN Server
服务器需要端口映射,3478可以TCP映射和UDP映射, TCP供电脑浏览器访问(同上),UDP提供给手机的webrtc访问.
listening-ip=外网ip
listening-port=3478
tls-listening-port=5349relay-ip=外网ip
external-ip=外网ip
relay-threads=50
lt-cred-mech
user= myuserHello: 0xa9c04dc63524413e8c16fa1bb04a1472(格式:user:pass)
userdb=/etc/turnuserdb.conf
#max-bps=102400
pidfile="/var/run/turnserver.pid"
listening-ip=外网ip
listening-port=3478
TURN为TLS的侦听器端口(默认: 5349)。
#注意:事实上,"清晰的"TCP和UDP会话可以连接到TLS和DTLS端口,
如果允许配置。
TURN服务器"自动"识别传输类型。
实际上,两个监听终端点(“清晰的"端和"TLS"端)是
对等的功能;但我们保持两个端点来满足RFC 5766规范。
对于安全的TCP连接,我们目前支持SSL的3个版本,
是TLS 1.0版本,1.1版本和1.2版本。
SSL2还支持"encapculation模式”。
对于安全的UDP连接,我们支持DTLS版本1。
tls-listening-port=5349
中继地址(本地IP地址将用于传递数据包的给每个端)
可以使用多个中继地址。
相同的IP可以用作监听IP和继电器IP。
如果没有指定中继IP,那么turnserver将应用默认策略:
它将自行决定使用那个中继
地址,并且它总是会使用客户端套接字的
IP地址作为中继的IP地址在TURN会话中(如果
请求的中继地址族解决同族的客户端套接字)。
relay-ip=外网ip
Amazon EC2用户:
TURN服务器公开/私有的地址映射,假如服务器是在NAT后端。
在这种情况下,如果一个表单中"-X “使用一个-X,
然后该ip将被作为中继ip地址来使用。
这种情况只适用于一个简单的例子,
当一个中继的地址是被使用,和没有RFC5780功能是必需的。
单个中继地址必须通过NAT映射到外部的IP。
外部的IP值,假如不为空,通过XOR-RELAYED-ADDRESS字段返回。
外部的IP,NAT必须直接转发端口(转发端口12345,
必须总是映射到相同的外部端口12345)。
在更复杂的情况下,当涉及到多个IP地址,
这个选项必须使用几次,每个条目必须形
成”-X <public-ip/private-ip>",将所有涉及到的地址。
RFC5780 NAT发现STUN功能正常工作,
如果正确的地址映射,即使TURN服务器本身是
在一个NAT后。
默认,该值为空,并且没有使用地址映射。
external-ip=外网ip
数量的中继线程处理建立连接(除了验证线程和侦听器线程)。
如果设置为0,那么应用程序中继进程在一个线程中运行,在同一
个线程中监听处理(身份验证线程仍然是一个单独的线程)。
在旧系统(3.9 Linux内核之前),
数量的UDP线程总是一个线程监听一个网络端点,
包括辅助端点——除非设置0或1值。
relay-threads=50
取消使用长期证书机制。
默认情况下不使用凭证机制(允许任何用户)。
这个选项可能使用用户数据文件或
PostgreSQL或MySQL或Redis来存储用户密钥。
lt-cred-mech
钥匙必须由turnadmin实用程序生成。键值取决于用户名称、领域和密码:
Example:
例子,使用以下命令:
$ turnadmin -k -u ninefingers -r north.gov -p youhavetoberealistic
Output: 0xbc807ee29df3c9ffa736523fb2c4e8ee
输出是: 0xbc807ee29df3c9ffa736523fb2c4e8ee
(‘0x’ in the beginning of the key is what differentiates the key from
#password. If it has 0x then it is a key, otherwise it is a password).
('0x’开始的关键是区分从密码的关键。
如果它有0x,那么它是一个关键,否则这是一个密码)。
The corresponding user account entry in the config file will be:
相应的配置文件中的用户帐户条目将:
#user=ninefingers:0xbc807ee29df3c9ffa736523fb2c4e8ee
Or, equivalently, with open clear password (less secure):
#或者是这样,明文密码(不安全的):
#user=ninefingers:youhavetoberealistic
user=user:password
'Dynamic’用户帐户数据库文件名。
只有用户长期机制可以存储在一个文件,短期机制不会处理选项,短期机制需要PostgreSQL或MySQL或
Redis数据库。
'Dynamic’的长期用户帐户在turnserver程序中动态检查的, 这样他们可以改变的在turnserver运行时。
默认文件名是turnuserdb.conf.
userdb=/etc/turnuserdb.conf
存储进程pid的文件名。
#默认是/var/run/turnserver.pid(超级用户使用)
或者是/var/tmp/turnserver.pid
pidfile="/var/run/turnserver.pid"
This file can be used as user accounts storage for long-term credentials mechanism.
这个文件可以用作长期用户帐户存储凭证机制。
Keys must be generated by turnadmin utility. The key value depends
on user name, realm, and password:
钥匙必须由turnadmin实用程序生成。键值取决于用户名称、领域和密码:
Example:
例子,使用以下命令:
$ turnadmin -k -u ninefingers -r north.gov -p youhavetoberealistic
Output: 0xbc807ee29df3c9ffa736523fb2c4e8ee
输出是: 0xbc807ee29df3c9ffa736523fb2c4e8ee
(‘0x’ in the beginning of the key is what differentiates the key from
password. If it has 0x then it is a key, otherwise it is a password).
('0x’开始的关键是区分从密码的关键。如果它有0x,那么它是一个关键,否则这是一个密码)。
The corresponding user account entry in the userdb file will be:
#相应的用户帐号在userdb文件中是:
#ninefingers:0xbc807ee29df3c9ffa736523fb2c4e8ee
Or, equivalently (less secure):
#或者是这样(不安全的):
#ninefingers:youhavetoberealistic
yourname:yourpsw