Docker部署Coturn测试返回code=701 TURN分配请求超时如何解决?
问题描述
使用Coturn官方Docker镜像部署Coturn服务器,部署命令如下:
docker run -d --network=host --name coturn -v $(pwd)/turnserver.conf:/etc/coturn/turnserver.conf coturn/coturn
turnserver.conf配置内容如下:
realm=some.domain server-name=turnserver listening-ip=0.0.0.0 external-ip=172.21.196.122 listening-port=3478 log-file=stdout fingerprint verbose user=hmd:hmd123 lt-cred-mech
使用WebRTC官方Trickle ICE测试工具测试时,返回错误:Coturn server gave code=701 TURN allocate request timed out
错误截图:

错误原因
- 核心错误为配置的
external-ip为内网IP,未填写服务器公网IP,公网侧客户端无法和Coturn完成中继链路协商 - 云服务器安全组或本地防火墙未开放Coturn所需端口:TCP/UDP 3478(监听端口)、UDP 49152-65535(默认中继端口段)
- 测试时填写的TURN服务器地址、认证信息有误,未正确携带端口或协议标识
- 部分Docker环境host网络模式未生效,Coturn无法正常监听物理网卡端口
修复方案
- 修正
turnserver.conf中的external-ip配置:将参数值替换为服务器的公网IP,若服务器为NAT转发的云实例,可按external-ip=公网IP/内网IP格式填写,示例:external-ip=120.xx.xx.xx/172.21.196.122 - 放行对应端口规则:云服务商安全组入方向放行TCP/UDP 3478、UDP 49152-65535,服务器本地防火墙(ufw/firewalld/iptables)同步放行对应端口规则
- 验证容器运行状态:执行
docker logs coturn查看启动日志无报错,执行netstat -tunlp | grep 3478确认端口正常监听 - 正确填写测试参数:Trickle ICE工具中TURN服务器填写格式为
turn:公网IP:3478,用户名填hmd,密码填hmd123后再测试
内容的提问来源于stack exchange,提问作者HamedH
相关产品推荐
相关产品推荐

