安装 Coturn
直接安装
apt install coturn
源码安装
1. 安装依赖
- 在安装Coturn之前,需要安装一些依赖库。以下是Ubuntu系统下的依赖安装命令:
sudo apt-get update
sudo apt-get install libssl-dev libevent-dev
2. 下载Coturn
- 从Coturn的官方网站下载最新版本的源代码:
git clone https://github.com/coturn/coturn
cd coturn
3. 编译与安装
- 编译Coturn
./configure
make
4. 安装Coturn
sudo make install
修改配置文件
- 打开配置文件
vim /etc/turnserver.conf
- 修改以下内容
listening-port=3478 # 取消注释此行
listening-device=eth0 # 取消注释此行
tls-listening-port=5349 # 取消注释此行
listening-ip=内网IP # 取消注释并修改此行
relay-ip=内网IP # 取消注释并修改此行
external-ip=公网IP # 取消注释并修改此行
lt-cred-mech # 取消注释此行
user=your_turn_username:your_turn_password # 取消注释并修改此行
realm=公网IP或域名 # 取消注释并修改此行
cert=/usr/local/etc/turn_server_cert.pem # 取消注释并修改此行
pkey=/usr/local/etc/turn_server_pkey.pem # 取消注释并修改此行
no-cli # 取消注释此行
配置要点
- listening-ip:监听IP地址和端口,用于客户端连接。
- listening-device:如果机器上有多块网卡,注意listening-ip与listening-device要匹配
- log-file:日志文件路径,用于记录Coturn的运行状态。
- realm:域名,用于用户认证。
- user:用户名和密码,用于认证。
- cert和key:SSL证书和私钥,用于TLS加密通信。
开放防火墙
tcp/3478udp/3478tcp/49152-65535udp/49152-65535
配置开机自启
systemctl 系统托管对 coturn 的代码有问题,需要进行修改
1. 打开自启动配置文件
vim /usr/lib/systemd/system/coturn.service
2. 将文本内容替换为以下内容
[Unit]
Description=coTURN STUN/TURN Server
Documentation=man:coturn(1) man:turnadmin(1) man:turnserver(1)
After=network.target
[Service]
# User=turnserver
# Group=turnserver
Type=notify
ExecStart=/usr/bin/turnserver -c /etc/turnserver.conf --pidfile=
# ExecStart=/bin/bash -c /usr/bin/coturn
Restart=on-failure
InaccessibleDirectories=/home
PrivateTmp=yes
[Install]
WantedBy=multi-user.target
3. 保存修改并重启
注意:不要 sudo
systemctl daemon-reload
systemctl restart coturn.service
开机自启
注意:不要 sudo
systemctl enable start coturn.service
可用性检测
- webrtc-samples官网还提供了一个检测ice穿透的在线工具
使用 MySQL 管理用户
使 Coturn 支持 MySQL
打开配置文件
vim /etc/turnserver.conf
编辑 MySQL 相关配置
mysql-userdb="host=内网IP dbname=your_db_name user=your_db_user password=your_db_password port=3306 connect_timeout=30 read_timeout=30"
重启 coturn
systemctl restart coturn.service
增删用户
添加用户(如果是 -A,则是添加admin)
turnadmin -a -M "host=127.0.0.1 dbname=test_db user=test_user password=test_password" -u new_user -r new.realm.com -p new_password
删除用户(如果是 -D,则是删除admin)
turnadmin -d -M "host=127.0.0.1 dbname=test_db user=test_user password=test_password" -u old_user -r old.realm.com
- 其中 -M 是指 MySQL,-u 用户名,-r 域名或IP地址,-p 密码
在weblink中调用turn服务器
turn:new.realm.com|new_user|new_password|longterm
附加,coturn 需要的 MySQL 建表代码
CREATE TABLE turnusers_lt (
realm varchar(127) default '',
name varchar(512),
hmackey char(128),
PRIMARY KEY (realm,name)
);
CREATE TABLE turn_secret (
realm varchar(127) default '',
value varchar(256),
primary key (realm,value)
);
CREATE TABLE allowed_peer_ip (
realm varchar(127) default '',
ip_range varchar(256),
primary key (realm,ip_range)
);
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)
);
CREATE TABLE turn_realm_option (
realm varchar(127) default '',
opt varchar(32),
value varchar(128),
primary key (realm,opt)
);
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),
primary key (kid)
);
CREATE TABLE admin_user (
name varchar(32),
realm varchar(127),
password varchar(127),
primary key (name)
);