目录
1、安装Kurento
2、配置STUN/TURN服务地址
3、搭建STUN/TURN 服务器
4、路由器配置端口映射
5、测试STUN/TURN服务是否正常
6、搭建点对点通信服务
以下操作是在ubuntu 16.04的环境下进行的。
# KMS for Ubuntu 14.04 (Trusty) DISTRO="trusty"
# KMS for Ubuntu 16.04 (Xenial) DISTRO="xenial"
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5AFA7A83
sudo tee "/etc/apt/sources.list.d/kurento.list" >/dev/null < sudo apt-get update sudo apt-get install kurento-media-server
启动/停止Kurento
sudo service kurento-media-server start sudo service kurento-media-server stop
进行如下:
Kurento本身没有NAT转发和穿透功能,需要另外配置STUN/TURN服务器,然后在/etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini文件中配置指向STUN/TURN服务器的地址。
stunServerAddress=stunServerPort=
这是stun服务的地址,其中serverIp必须是ip地址,不能是域名。
另外,还需要配置turn服务的地址:
turnURL=: @ :
下面是我自己的配置:
官网https://doc-kurento.readthedocs.io/en/6.9.0/user/installation.html上提供了一些免费的STUN/TURN的地址,试过,无法成功穿透或转发,只好自己搭建一个。
这里使用的是coturn框架:
sudo apt-get install coturn
配置/etc/turnserver.conf文件:
listening-ip=192.168.10.15
relay-ip=192.168.10.15
external-ip=xxx.xxx.xxx.xxx #外网ip
relay-threads=2
min-port=50000 #此处的端口范围填的比较小,后面解释
max-port=50010
fingerprint
lt-cred-mech
user=zy:123456
userdb=/var/db/turndb
realm=zhuyun.com
log-file=/var/tmp/turn.log
mobility
server-relay
配置/etc/default/coturn文件,取消 TURNSERVER_ENABLED=1的注释
添加turnserver的用户(与前面user=zy:123456保持一致):
turnadmin -A -b "/var/db/turndb" -u zy -p 123456 -r zhuyun.com
turnadmin -a -b "/var/db/turndb" -u zy -p 123456 -r zhuyun.com
启动服务:
sudo service coturn start
因为该测试是在内网环境,要让它在公网开放,需要在路由器上配置端口映射。
其中,8443端口是后面提供https访问用的,3478端口是STUN/TURN的服务端口。
另外,这十个端口是TURN服务通信需要的端口,默认范围是49152~65535,因为是内网,开放的话得一个个手动添加,所以只开放10个作为测试用。
访问https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/,分别测试STUN和TURN服务
接下来是turn测试:
git clone https://github.com/Kurento/kurento-tutorial-java.git cd kurento-tutorial-java/kurento-one2one-call git checkout 6.9.0 mvn -U clean spring-boot:run
接下来就可以在网页上打开https://xxx.xxx.xxx.xxx:8443/来进行视频通信了(其中ip是服务器的外网地址)。
在一台电脑上注册A,另外一台电脑上注册B,然后从A向B发送Call请求:
接收请求:
然后就可以视频和音频通话了:
此测试在电信、移动、联通网络之间都测试过是可以通信的。只是还不确定NAT的类型,到底是穿透还是转发目前还不清楚,有待后续的测试。