使用coturn配置TURN over TLS时无中继ICE候选返回如何解决?
配置问题排查与解决方案
1 配置项冲突排查
你当前配置中的三个参数是问题核心诱因:
no-rfc5780、no-stun-backward-compatibility会直接丢弃Chrome/Firefox通过TLS端口发送的兼容STUN请求response-origin-only-with-rfc5780和前两个参数同时启用时,会导致Coturn不处理TLS端口的中继分配请求
先注释掉这三个配置:
# no-rfc5780 # no-stun-backward-compatibility # response-origin-only-with-rfc5780
2 SSL证书权限校验
Certbot生成的证书默认只有root权限可读,Coturn运行用户(默认turnserver)无读取权限会静默导致TLS握手失败,执行授权命令:
sudo chown -R turnserver:turnserver /etc/letsencrypt/live/[MYDOMAINNAME]/ /etc/letsencrypt/archive/[MYDOMAINNAME]/
同时确认证书绑定域名和配置的realm、server-name、测试用的turns域名完全一致。
3 TLS兼容配置补充
新增以下配置适配现代浏览器的TLS要求,禁用不安全的旧协议:
no-tlsv1 no-tlsv1_1 cipher-list="ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"
4 AWS EC2侧配置校验
- 确认EC2安全组入站规则同时开放443端口的TCP、UDP访问,不要仅开放TCP
- 确认EC2实例未启用WAF、流量过滤等中间层拦截TLS握手流量
- 确认
external-ip配置的是EC2公网弹性IP,不是私网IP
5 服务重启与验证
修改配置后重启Coturn服务:
sudo systemctl restart coturn
实时查看日志验证请求是否正常接入:
sudo journalctl -u coturn -f
再用Trickle ICE测试turns地址,注意填写的用户名、密码、realm必须和配置文件完全一致。
内容的提问来源于stack exchange,提问作者Doug
相关产品推荐
相关产品推荐

