目前主流的TURN开源方案是Coturn,官方地址https://github.com/coturn/coturn
coturn 是 TURN 和 STUN 服务器的免费开源实现。TURN 服务器是 VoIP 媒体流量 NAT 遍历服务器和网关。
目标平台
- Linux(Debian、Ubuntu、Mint、CentOS、Fedora、Redhat、Amazon Linux、Arch Linux、OpenSUSE)
- BSD(FreeBSD、NetBSD、OpenBSD、DragonFlyBSD)
- Solaris 11
- Mac OS X
- Cygwin(用于非生产研发目的)
- Windows(原生,例如 MSVC 工具链)
特征
STUN 规格:
- RFC 3489 – “经典” STUN
- RFC 5389 – 基本“新” STUN 规范
- RFC 5769 – STUN 协议测试的测试向量
- RFC 5780 – NAT 行为发现支持
- RFC 7443 – ALPN 支持 STUN 和 TURN
- RFC 7635 – oAuth 第三方 TURN/STUN 授权
TURN规格:
- RFC 5766 – 基本 TURN 规范
- RFC 6062 – TCP 中继 TURN 扩展
- RFC 6156 – TURN 的 IPv6 扩展
- RFC 7443 – ALPN 支持 STUN 和 TURN
- RFC 7635 – oAuth 第三方 TURN/STUN 授权
- DTLS 支持(http://tools.ietf.org/html/draft-petithuguenin-tram-turn-dtls-00)
- 移动 ICE(MICE)支持(http://tools.ietf.org/html/draft-wing-tram-turn-mobility-02)
- TURN REST API(http://tools.ietf.org/html/draft-uberti-behave-turn-rest-00)
- TURN(多租户 TURN 服务器)中的 Origin 字段(https://tools.ietf.org/html/draft-ietf-tram-stun-origin-06)
- TURN 带宽草案规范(http://tools.ietf.org/html/draft-thomson-tram-turn-bandwidth-01)
- TURN-bis(具有双重分配)草案规范(http://tools.ietf.org/html/draft-ietf-tram-turnbis-04)
部署教程
下面是centos安装webrtc stun/turn服务器的简单教程
1 安装gcc环境,通过 which gcc 检测是否安装了gcc环境
2 安装openssl,yum -y install openssl-devel
3 生成签名文件到 /etc 目录
openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes
4 安装libevent
通过 https://libevent.org 下载最新版的 libevent tar -zxvf libevent-2.1.12-stable.tar.gz cd libevent-2.1.12-stable ./configure make make install 5 安装coturn
通过 https://coturn.net/turnserver 下载 v4.5.1.3 版本文件(经过测试v4.5.1.3可以正常使用) tar -zxvf 4.5.1.3.tar.gz cd coturn-4.5.1.3 ./configure make make install 6 生成用户
turnadmin -a -u wjc -p 123456 -r wjc.com,用户名称:wjc,密码:123456,realm:wjc.com 7 修改配置文件
cd /usr/local/etc cp turnserver.conf.default turnserver.conf
具体配置修改和说明
按照下面参数修改配置文件 #与前ifconfig查到的网卡名称一致 relay-device=eth0 #内网IP listening-ip=0.0.0.0 #公网IP external-ip=0.0.0.0 #用户名密码,创建IceServer时用 user=wjc:123456 #一般与turnadmin创建用户时指定的realm一致 realm=wjc.com #端口号 listening-port=3478 #不开启会报CONFIG ERROR: Empty cli-password, and so telnet cli interface is disabled! Please set a non empty cli-password!错误 cli-password=qwerty
cert=/etc/turn_server_cert.pem
pkey=/etc/turn_server_pkey.pem
8 服务器安全组打开 3478/udp,3478/tcp,49152-65535/udp,49152-65535/tcp
9 防火墙打开 3478/udp,3478/tcp,49152-65535/udp,49152-65535/tcp
firewall-cmd –zone=public –add-port=3478/udp –permanent
firewall-cmd –zone=public –add-port=3478/tcp –permanent
firewall-cmd –zone=public –add-port=49152-65535/udp –permanent
firewall-cmd –zone=public –add-port=49152-65535/tcp –permanent
firewall-cmd –reload
查看端口是否开放
firewall-cmd –zone=public –query-port=3478/tcp
firewall-cmd –zone=public –query-port=3478/udp
10 开启服务
turnserver -a -f -r wjc.com turnserver -a -o -f -r xxx.com 使用 -o 参数后台启动 11 测试turn服务器
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice 出现 relay 877558997 udp 114.115.244.15(服务器IP) 63262 表示成功
RA/SD 衍生者AI训练营。发布者:chris,转载请注明出处:https://www.shxcj.com/archives/6615