前言
因工作原因,很长时间没更新相关文档了,笔者之前测试时,一直使用示例自带的公网中转服务器。考虑到后期项目需要,笔者在线搭建一个coturn服务器测试,供有需要的小伙伴使用
一、安装coturn
若需要最新版本的coturn,需要自己下载coturn源码编译
git下载:
git clone https://github.com/coturn/coturn.git
若只是测试,可以直接在线安装
sudo apt-get install coturn
二、配置coturn
1.创建用户
sudo turnadmin -a -u 用户名 -p 密码 -r 可以随便写(一般写stun.xxx.cn)
//示例
sudo turnadmin -a -u testuser -p testpassword -r stun.test.cn
2. 生成证书
sudo openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes
3.配置turnserver.conf
#(必选)监听端口可以不设置会默认的使用3478
listening-port=3478
#(必选)监听的网卡
listening-device=eth0
#(必选)listening-ip,注意必须是你的内网IP地址
listening-ip=172.17.0.12
#(必选)external-ip,注意必须使用你的外网IP地址(云主机的公网IP地址)
external-ip=18.33.65.98
#(必选)设置用户名及密码
user=testuser:testpassword
relay-device=eth0 # 中转网卡
tls-listening-port=5349
relay-ip=内网ip
relay-threads=50
cert=/etc/turn_server_cert.pem
pkey=/etc/turn_server_pkey.pem
min-port=49152
max-port=65535
#一般与turnadmin 创建用户时指定的realm一致,不指定realm时,默认为: 外网地址:3478
#和你创建用户名和密码是填写的-r后面的一样
realm=stun.test.cn
注意:如果机器上有多块网卡,注意listening-ip与listening-device要匹配,参考下图红色方框部分:
三、启动服务
启用coturn并验证
turnserver -v -r stun.test.cn -a -o -c /etc/turnserver.conf
-r stun.test.cn —— 意为指定realm,要与创建用户时指定的realm一致。
四、进行端口映射
笔者使用的企业交换机和路由器,使用一根专线,有一个公网IP,需要将内网服务器的3478端口映射出去。
假设笔者也映射到公网的3478端口
五、测试 stun/turn 服务
webrtc-samples官网还提供了一个检测ice穿透的在线工具:https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
按里面的要求输入 stun/turn 地址、用户和密码后就可以探测stun/turn服务是否正常了。
若是出现以上信息,就说明coturn服务器就可以正常使用了
后记
笔者编写测试程序,使用qt6.5编写的界面。测试时发现,使用调试模式时,若只使用自己搭建的服务器,程序会异常退出,但release模式正常。
因时间问题,笔者只进行了单对单的音视频、自定义数据收发测试,其他的测试未进行,希望有解决方案的小伙伴及时反馈