当前位置: 首页 > news >正文

在 Linux 服务器搭建Coturn即ICE/TURN/STUN实现P2P(点对点)直连

首先,通过 SSH 登录到你的云服务器,并更新系统软件包:

sudo apt-get update
sudo apt-get upgrade -y

然后,安装 Coturn 服务器。在 Ubuntu 上,这非常简单:

sudo apt-get install coturn -y

Coturn 默认使用 3478 端口进行 STUN 和 TURN 的侦听,并使用 4915265535 之间的端口范围进行数据中继。你需要确保你的服务器防火墙和云服务商的安全组都开放了这些端口。

在云服务商的安全组中,添加入站规则:

  • 协议:UDP

  • 端口:3478

  • 协议:TCP

  • 端口:3478

  • 协议:UDP

  • 端口范围:49152-65535

在服务器的防火墙中(如果启用),运行以下命令开放端口:

sudo ufw allow 3478/udp
sudo ufw allow 3478/tcp
sudo ufw allow 49152:65535/udp
sudo ufw enable  # 启用ufw防火墙

配置 Coturn 服务器

Coturn 的配置文件通常位于 /etc/turnserver.conf。你需要编辑这个文件来设置你的服务。

打开配置文件:

sudo nano /etc/turnserver.conf

在文件中添加或修改以下关键配置项:

# 侦听的公网IP,如果有多个IP,可以指定
# listening-ip=0.0.0.0 # 服务器的公网IP地址,这是最关键的配置,请替换成你的服务器IP
external-ip=你的服务器公网IP# 域名,用于访问TURN服务时的realm。请替换成你自己的域名或公网IP
realm=your.domain.com# 用户认证方式,推荐使用长效凭证机制
# lt-cred-mech
no-stun-backward-compatibility# 侦听端口,默认是3478,如果需要可修改
listening-port=3478# 关闭loopbackpeers,防止数据包回环
no-loopback-peers# 日志配置
log-file=/var/log/turnserver/turnserver.log# 用户配置
# 格式为 user=username:password
# 这是最简单的认证方式,推荐在生产环境中使用动态凭证机制
user=testuser:testpass

注意: 在配置文件中,# 开头的行是注释。请将 你的服务器公网IPyour.domain.com 替换为你的实际信息。user 字段的用户名和密码可以自定义。

启用 Coturn 服务

默认情况下,Coturn 服务可能不会自动启动。你需要编辑 /etc/default/coturn 文件来启用它。

sudo nano /etc/default/coturn

找到 TURNSERVER_ENABLED 这行,将其从 1 修改为 1 并保存:

TURNSERVER_ENABLED=1

现在,你可以启动 Coturn 服务了:

sudo service coturn start

为了确保服务已经成功启动,你可以查看其状态:

sudo service coturn status

使用一个在线的 ICE 测试工具来验证你的服务器是否工作正常。

  1. 打开 Trickle ICE 网站。

  2. STUN or TURN URI 框中,输入:

    • 如果你配置了域名:turn:your.domain.com:3478

    • 如果你只使用IP:turn:你的服务器公网IP:3478

  3. TURN username 中输入:testuser

  4. TURN password 中输入:testpass

  5. 点击 Add Server,然后点击 Gather candidates

如果你的配置正确,你会在结果中看到 srflxrelay 类型的候选地址,这表明 STUN 和 TURN 服务都已成功工作。

在你的应用程序中,你需要配置ICE服务器信息。通常,这会是一个 iceServers 数组,其中包含你的 Coturn 服务器信息,例如:

const iceServers = {iceServers: [{urls: 'stun:你的服务器公网IP:3478'},{urls: 'turn:你的服务器公网IP:3478',username: 'testuser',credential: 'testpass'}]
};

通过以上步骤,你就成功搭建了一个功能完整的 P2P/TURN/STUN 服务器,为你的实时通信应用提供了可靠的连接支持。

http://www.dtcms.com/a/332788.html

相关文章:

  • HarmonyOS 实战:用 @Observed + @ObjectLink 玩转多组件实时数据更新
  • pyecharts可视化图表-pie:从入门到精通(进阶篇)
  • Python 数据可视化:柱状图/热力图绘制实例解析
  • 概率论基础教程第2章概率论公理
  • 享元模式C++
  • 基于深度学习的零件缺陷识别方法研究(LW+源码+讲解+部署)
  • 力扣hot100 | 普通数组 | 53. 最大子数组和、56. 合并区间、189. 轮转数组、238. 除自身以外数组的乘积、41. 缺失的第一个正数
  • 什么才是真正的白盒测试?
  • 专题三_二分_x 的平方根
  • JavaScript 解析 Modbus 响应数据的实现方法
  • 记录处理:Caused by: java.lang.UnsatisfiedLinkError
  • MARCONet++ 攻克中文文本图像超分难题
  • 疯狂星期四文案网第40天运营日记
  • Web 开发 15
  • Transformer实战(11)——从零开始构建GPT模型
  • required a bean of type ‘com.example.dao.StudentDao‘ that could not be found
  • (Arxiv-2025)Stand-In:一种轻量化、即插即用的身份控制方法用于视频生成
  • All Document Reader:一站式文档阅读解决方案
  • LT6911GXD,HD-DVI2.1/DP1.4a/Type-C 转 Dual-port MIPI/LVDS with Audio 带音频
  • 【C++】缺省参数
  • Vue3中的ref与reactive全面解析:如何正确选择响应式声明方式
  • 采购招标周期从2月缩至3周?8Manage招标系统实战案例分享
  • 社区物业HCommunity本地部署二开与使用
  • 我的学习认知、高效方法与知识积累笔记
  • JAVA 关键字
  • Redis 官方提供免费的 30 MB 云数据库
  • 【机器人】人形机器人“百机大战”:2025年产业革命的烽火与技术前沿
  • Linux线程——基于生产者消费者模型的线程同步互斥应用
  • Scikit-learn (sklearn) 库详细介绍
  • 体彩排列三第2025217期号码分析