AWS EC2免费实例部署coturn后trickleICE报701错误求助
问题排查步骤及解决方案
1. 修正turnserver.conf的错误配置
你当前配置里的relay-ip参数填写错误,EC2实例内部无法直接识别公网IP,该参数必须填写EC2的私有IP,和listening-ip保持一致即可。同时需要放开中继端口范围配置,和后续安全组放行规则匹配,修改后参考配置如下:
listening-port=3478 tls-listening-port=5349 fingerprint lt-cred-mech server-name=mydomain.com realm=mydomain.com user=<myusername>:<mypassword> # 放开端口范围配置,和安全组放行范围保持一致 min-port=49152 max-port=65535 total-quota=100 stale-nonce=600 external-ip=<my public ip>/<my private ip> listening-ip=<my private ip> # 此处修改为EC2私有IP relay-ip=<my private ip>
修改完成后执行sudo systemctl restart coturn重启服务生效。
2. 补全安全组放行规则
仅放行3478、5349端口无法满足coturn的中继需求,需要补充放行对应端口段:
- 3478、5349端口需要同时放行TCP和UDP协议
- 追加放行UDP协议的49152-65535端口段(coturn默认中继端口范围),源地址可先设为0.0.0.0/0完成测试后再缩小授权范围
3. 检查EC2内部防火墙规则
如果你的EC2实例开启了ufw或者firewalld,需要对应放行上述端口:
- ufw操作命令:
sudo ufw allow 3478 sudo ufw allow 5349 sudo ufw allow 49152:65535/udp sudo ufw reload
- firewalld操作命令:
sudo firewall-cmd --add-port=3478/tcp --add-port=3478/udp --permanent sudo firewall-cmd --add-port=5349/tcp --add-port=5349/udp --permanent sudo firewall-cmd --add-port=49152-65535/udp --permanent sudo firewall-cmd --reload
4. 确认trickle ICE测试参数填写正确
测试时需注意:
- 非TLS测试地址格式为
turn:<公网IP>:3478,用户名、密码必须和配置文件中user参数完全一致 - TLS测试需要先为域名配置有效SSL证书,且在turnserver.conf中补充
cert和pkey参数指向证书、私钥文件路径,测试地址格式为turns:<域名>:5349
5. 本地验证端口连通性
可在本地设备通过nc命令验证端口连通性:
# 测试TCP端口连通性 nc -zv <公网IP> 3478 # 测试UDP端口连通性 nc -zvu <公网IP> 3478
返回连接成功则说明端口放行正常,否则需要回头排查安全组、防火墙配置。
内容的提问来源于stack exchange,提问作者Mustafa Jawed
相关产品推荐
相关产品推荐

