企业网下Coturn配置、Nginx反向代理及WebRTC/Jitsi适配求助
问题场景
企业网络防火墙已封禁所有UDP端口,仅开放80/TCP与443/TCP端口。需要配置Coturn服务器,以支持基于10000/UDP端口的WebRTC与Jitsi服务,现寻求该环境下TURN与STUN服务器的正确配置方法。
此前尝试的配置如下:
server-name=xxx.meet.io realm=xxx.meet.io cert=/etc/letsencrypt/live/xxx.meet.io/cert.pem pkey=/etc/letsencrypt/live/xxx.meet.io/privkey.pem fingerprint listening-ip=0.0.0.0 external-ip=a.a.a.a/c.c.c.c #or just the external ip listening-port=443 min-port=10000 max-port=20000 log-file=/var/log/turnserver.log verbose static-auth-secret=<YOUR_SECRET>
测试后配置失败,相关测试结果见下图:
网络架构图:
适配封禁UDP场景的Coturn配置方案
由于防火墙仅开放80/TCP和443/TCP,必须让TURN服务器通过TCP端口中转UDP流量,同时调整Jitsi/WebRTC的配置适配该模式。
一、修正Coturn核心配置
修改/etc/turnserver.conf为以下内容:
# 基础标识配置 server-name=xxx.meet.io realm=xxx.meet.io # SSL证书配置(保持原有有效证书路径) cert=/etc/letsencrypt/live/xxx.meet.io/cert.pem pkey=/etc/letsencrypt/live/xxx.meet.io/privkey.pem fingerprint # 监听配置:绑定所有IP,仅开放TCP端口(防火墙允许的443) listening-ip=0.0.0.0 listening-port=443 # 强制禁用UDP监听,适配防火墙规则 no-udp listening-tcp-port=443 # 外部IP配置:仅填写服务器公网IP即可 external-ip=a.a.a.a # 中转端口范围:服务器内部中转使用,无需防火墙开放 min-port=10000 max-port=20000 # 日志与调试 log-file=/var/log/turnserver.log verbose # 认证配置 static-auth-secret=<YOUR_SECRET>
二、关键配置说明
no-udp:禁用TURN的UDP监听,避免无效端口占用,完全适配防火墙封禁UDP的规则listening-tcp-port=443:明确绑定TCP 443端口,确保防火墙允许流量进入external-ip:仅填写公网IP,无需内网IP映射,避免配置冲突
三、Jitsi Meet适配配置
修改Jitsi的/etc/jitsi/meet/xxx.meet.io-config.js,调整ICE服务器配置,强制使用TCP中转:
var config = { // ...其他原有配置 iceServers: [ { urls: "turn:xxx.meet.io:443?transport=tcp", credential: "<YOUR_SECRET>", credentialType: "hmac-sha1" }, { urls: "stun:xxx.meet.io:443?transport=tcp" } ], // 强制WebRTC使用TCP进行媒体传输 iceTransportPolicy: "relay", // ...其他原有配置 };
四、验证配置
- 重启Coturn服务:
systemctl restart coturn
- 使用WebRTC测试工具(如Trickle ICE)选择TCP传输模式,验证TURN服务器是否能正常中转流量
- 查看Coturn日志,确认无错误且有正常连接记录:
tail -f /var/log/turnserver.log
内容的提问来源于stack exchange,提问作者Akila Peiris
相关产品推荐
相关产品推荐

