云计算百科
云计算领域专业知识百科平台

Ubuntu 部署 STUN 与 TURN 服务器

Ubuntu 部署 STUN 与 TURN 服务器

  • 1.前言
      • 一、环境准备
      • 二、安装 coturn 服务器
      • 三、配置 coturn 服务器
        • 1. 备份默认配置
        • 2. 编辑配置文件
        • 3. 示例:配置哈希密码认证
      • 四、防火墙配置
        • 1.使用 UFW 防火墙(Ubuntu 默认)
        • 2.验证端口是否开放
      • 五、启动与测试 coturn 服务
      • 六、高级配置优化
      • 七、集成到 FreeSWITCH
      • 八、安全建议
      • 九、常见问题排查

1.前言

在 Ubuntu 系统上部署 STUN 和 TURN 服务器,通常使用 coturn 工具,它是一个开源的 STUN/TURN 服务器实现,功能全面且易于配置。

一、环境准备

  • 系统要求

    • Ubuntu 18.04/20.04/22.04(推荐 LTS 版本)
    • 公网 IP 地址(用于 STUN/TURN 服务对外提供服务)
    • 防火墙开放以下端口:
      • STUN:UDP 3478(默认端口,可自定义)
      • TURN:UDP 3478(中继端口)、TCP 3478(可选,支持 TCP 连接)
      • 媒体中继端口范围(如 49152-65535,用于 TURN 转发媒体流)
  • 更新系统

    sudo apt update
    sudo apt upgrade -y

  • 二、安装 coturn 服务器

  • 添加软件源并安装

    sudo apt install coturn -y

  • 检查安装结果

    coturn –version

  • 三、配置 coturn 服务器

    1. 备份默认配置

    sudo cp /etc/turnserver.conf /etc/turnserver.conf.bak

    2. 编辑配置文件

    sudo nano /etc/turnserver.conf

    添加或修改以下关键配置(根据需求调整):

    # 公网 IP 地址(替换为你的公网 IP)
    external-ip=你的公网IP地址

    # 监听端口(STUN/TURN 共用端口)
    listening-port=3478

    # 监听协议(UDP 和 TCP)
    listening-ip=0.0.0.0
    listening-protocol=udp
    # 可选:启用 TCP 支持
    # listening-protocol=tcp

    # 中继媒体端口范围(建议设置为高端口范围)
    relay-port-range=49152-65535

    # 认证方式(使用静态密码或哈希)
    # 方式 1:静态密码(测试用,生产环境建议用哈希)
    user=用户名:密码 # 例如:turnuser:turnpass

    # 方式 2:使用哈希密码(更安全)
    # hash-passwords
    # userdb=/etc/turnserver.userdb # 用户数据库路径

    # 允许的 IP 范围(可选,限制访问来源)
    # allowed-ip=192.168.1.0/24

    # 禁用 IPv6(可选,若无需支持 IPv6)
    # no-ipv6

    # 日志配置
    syslog
    verbose

    3. 示例:配置哈希密码认证

    # 创建用户数据库(若使用 hash-passwords)
    sudo touch /etc/turnserver.userdb
    sudo chmod 600 /etc/turnserver.userdb

    # 添加用户(密码将被哈希存储)
    sudo turnserver -a -u 用户名 -p 密码 -o /etc/turnserver.userdb

    四、防火墙配置

    1.使用 UFW 防火墙(Ubuntu 默认)

    # 开放 STUN/TURN 端口(UDP)
    sudo ufw allow 3478/udp

    # 开放媒体中继端口范围(UDP)
    sudo ufw allow 49152:65535/udp

    # 可选:开放 TCP 端口(若启用 TCP 支持)
    # sudo ufw allow 3478/tcp

    # 重启防火墙
    sudo ufw reload

    2.验证端口是否开放

    sudo netstat -tuln | grep 3478

    五、启动与测试 coturn 服务

  • 启动服务

    sudo systemctl start coturn
    sudo systemctl enable coturn # 设置开机自启

  • 检查服务状态

    sudo systemctl status coturn

  • 测试 STUN 服务 使用在线测试工具(如 StunLocate)或命令行工具:

    # 使用 netcat 测试 UDP 连通性
    nc -vuz 你的公网IP 3478

  • 测试 TURN 服务 使用开源工具 coturnclient 或通过应用程序(如 WebRTC 客户端)验证中继功能。

  • 六、高级配置优化

  • TCP 支持(适用于网络环境限制严格的场景) 在配置文件中添加:

    listening-protocol=tcp

  • HTTPS 伪装(绕过某些网络限制)

    # 伪装为 HTTPS 服务(端口 443)
    external-ip=你的公网IP
    listening-port=443
    listening-protocol=udp

  • 限制服务器负载

    max-bps=10000000 # 最大带宽限制(10Mbps)
    max-clients=1000 # 最大客户端数
    max-connections=2000 # 最大连接数

  • 七、集成到 FreeSWITCH

    若需与 FreeSWITCH 配合使用,需在 FreeSWITCH 配置中指定 STUN/TURN 服务器:

  • 编辑 FreeSWITCH 的 SIP 配置文件:

    sudo nano /usr/local/freeswitch/conf/sip_profiles/external.xml

    添加以下内容(位于 <configuration> 标签内):

    <param name="stun-address" value="你的公网IP:3478"/>
    <param name="turn-address" value="你的公网IP:3478"/>
    <param name="turn-username" value="用户名"/>
    <param name="turn-password" value="密码"/>

  • 重启 FreeSWITCH 使配置生效:

    sudo systemctl restart freeswitch

  • 八、安全建议

  • 定期更新系统

    sudo apt update && sudo apt upgrade -y

  • 限制服务器访问

    • 仅允许可信 IP 访问 STUN/TURN 服务
    • 使用 allowed-ip 参数在配置文件中设置白名单
  • 密码强度

    • 避免使用简单密码,定期更换用户密码
    • 生产环境务必使用哈希密码认证(hash-passwords)
  • 监控日志

    tail -f /var/log/syslog | grep coturn

  • 九、常见问题排查

  • 客户端无法连接 STUN 服务器

    • 检查公网 IP 是否正确,防火墙是否开放端口
    • 确认 external-ip 配置是否与公网 IP 一致
  • TURN 中继无媒体流

    • 检查中继端口范围(relay-port-range)是否在防火墙中开放
    • 确认客户端是否正确配置 TURN 服务器地址和认证信息
  • 服务启动失败

    • 查看日志:sudo journalctl -u coturn
    • 检查配置文件语法错误(使用 turnserver -c /etc/turnserver.conf -n 验证)
  • 赞(0)
    未经允许不得转载:网硕互联帮助中心 » Ubuntu 部署 STUN 与 TURN 服务器
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!