1. 安装
sudo apt-get install coturn
2. 配置
turnserver.conf
路径:
/etc/turnserver.conf
内容:
listening-port=3478
tls-listening-port=5349
listening-ip=your ip
relay-ip=your ip
external-ip=your ip
server-name=your domain
realm=your domain
lt-cred-mech
userdb=/var/lib/turn/turndb
cert=/etc/turn_server_cert.pem
pkey=/etc/turn_server_pkey.pem
no-stdout-log
log-file=/var/tmp/turnserver.log
pidfile="/var/run/turnserver.pid"
字段含义:
listening-port: turnserver监听UDP/TCP端口,默认为3478;
tls-listening-port: turnserver监听TLS/DTLS端口,默认为5349,
将TCP/UDP和TLS/DTLS分别定义监听端口是符合RFC5766规范的,但是通过配置两者能使用同一端口,不推荐;
listening-ip: 中继服务器的监听IP地址,可以配置多个;
relay-ip: 中继服务器的IP地址;
external-ip: 外部IP,当中继服务器在NAT网络内部时指定,此处可以不添加;
server-name: 服务器名称,用于OAuth认证,默认和realm相同;
realm: 域名;
userdb: 用于保存用户信息;
cert/pkey: 自签名证书相关;
注意事项:
1) coturn使用了SQLlite作为存储,请保证userdb的正确配置(userdb=/var/lib/turn/turndb),不需要添加turnuserdb.conf文件(turnuserdb.conf多用于restund的配置方式);
2) cert和pkey配置的自签名证书用Openssl命令生成
sudo openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes
3) 配置成功后生成用户名/密码
turnadmin -k -u <your username> -r <your realm> -p <your password> //turnadmin -k -a -u btzh -r ice.btzh.net -p webrtc
执行上述命令后,会创建一个用户/密码,并添加到SQLlite数据库中.
参数含义请参见
man turnadmin
3. 启动服务
1) 确保端口开放
iptables -A INPUT -p udp --dport 3478 -j ACCEPT
iptables -A INPUT -p udp --dport 5349 -j ACCEPT
2) 启动
后台启动
service coturn start
非后台启动:
turnserver
初次运行请使用非后台启动,会显示当前运行状态,如果有错误会直接显示在控制台上.
3) 验证监听端口
lsof -n -i4TCP:3478 | grep LISTEN
lsof -n -i4TCP:5349 | grep LISTEN
或直接查看所有UDP/TCP 端口
netstat -nat | grep LISTEN
4. 验证服务
1) stun
apt-get install stun-client
之后运行
stun domain.com:port //例如: stun ice.btzh.net:3478
2) 直接测试
浏览器输入
domain/IP:port // 例如 ice.btzh.net:3478
出现文字"TURN Server use https connection for the admin session"
3) 在线测试(推荐)
网址
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
测试格式
stun:domain:port // example: stun:ice.btzh.net:3478
注意: 不要以此网站测试TURN username/TURN password的正确性(it doesn`t work for username/pwd test).