coturn 穿透服务器

部署WebRTC 或 SIP p2p 方案时经常会遇到p2p 无法穿透NAT的环境。

可以理解为 非同一个局域网内的两个Ip, 相互找不到对方。

WebRTC传输基本知识 -> webRTC 传输知识图

Centos7.x 搭建coturn服务器 (如下:)

# 安装必要
yum install -y make gcc cc gcc-c++ wget openssl-devel libevent libevent-devel openssl 
yum install git
# 下载编译
git clone https://github.com/coturn/coturn 
cd coturn
./configure
make
make install
#查找在哪
which turnserver
# 找到配置文件
cd /usr/local/etc/
cp turnserver.conf.default turnserver.conf
# cert和pkey配置的自签名证书用Openssl命令生成,提示的相关信息随便填写即可(也可省略)
openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes
# 编辑turn配置 
vim /usr/local/etc/turnserver.conf


response-origin-only-with-rfc5780
# 网卡名
relay-device=eth0
#内网IP
listening-ip=10.122.225.56
listening-port=3478
#内网IP
relay-ip=10.122.225.56
tls-listening-port=5349
# 外网IP
external-ip=122.114.225.56
relay-threads=500
#打开密码验证
lt-cred-mech
cert=/etc/turn_server_cert.pem
pkey=/etc/turn_server_pkey.pem
min-port=40000
max-port=65535
#设置用户名和密码,创建IceServer时使用
user=账号:密码
# 外网IP绑定的域名
realm=turn.xingzhi.info
# 服务器名称,用于OAuth认证,默认和realm相同,部分浏览器本段不设可能会引发cors错误。
server-name=turn.xingzhi.info
# 认证密码,和前面设置的密码保持一致
cli-password=密码
#开放端口 宝塔可以直接打开3478 就可以

firewall-cmd --zone=public --add-port=3478/udp --permanent
firewall-cmd --zone=public --add-port=3478/tcp --permanent
#刷新防火墙
firewall-cmd --reload
#查看当前开放的端口
firewall-cmd --list-port

启动服务 turnserver -o -a -f

终止服务

ps -ef | grep turnserver

kill -9 pid

在线穿透测试地址 测试地址