同一主机是否可部署两个同IP不同端口的coturn STUN服务器
回答
完全可以在同一台主机上部署两个监听不同端口的coturn STUN服务实例,刚好适配你通过双STUN节点判定NAT映射行为的测试场景,不需要额外准备第二台服务器就能拿到「同公网IP、不同服务端口」的两个STUN探测节点。
部署操作要点
- 不要直接共用默认的coturn配置文件,先复制两份独立配置,比如分别命名为
turnserver_p1.conf、turnserver_p2.conf - 两份配置中必须修改冲突项,保证两个实例运行时不会抢占资源:
- 分别指定不同的监听端口:第一份配置写
listening-port=3478(STUN默认端口),第二份配置改成你需要的其他端口,比如listening-port=13478 - 分别指定独立的pid文件路径,比如第一份配
pidfile="/var/run/turnserver_p1.pid",第二份对应改成pidfile="/var/run/turnserver_p2.pid" - 分别指定独立的日志存储路径,避免运行日志互相覆盖
- 如果仅做STUN探测不需要TURN中继能力,建议在两份配置里都加上
stun-only参数,直接关闭所有TURN相关的中继、鉴权逻辑,服务更轻量,也不会影响STUN的地址探测功能
- 分别指定不同的监听端口:第一份配置写
- 启动实例时分别指定对应的配置文件即可,两个启动命令互不干扰:
turnserver -c /etc/coturn/turnserver_p1.conf turnserver -c /etc/coturn/turnserver_p2.conf - 记得放开主机防火墙对应两个监听端口的UDP规则(STUN探测默认走UDP,如果你需要基于TCP做探测再同步放开TCP端口),避免探测请求被拦截。
有效性验证
两个实例启动后,执行ss -tulpn | grep turnserver可以看到两个独立的coturn进程,分别绑定在主机公网IP的对应端口上。用STUN测试客户端分别向两个端口发起BINDING请求,能正常返回映射地址结果就可以直接用于NAT映射行为判定。
内容的提问来源于stack exchange,提问作者Santivi
相关产品推荐
相关产品推荐

