当前位置: 首页 > 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.lryc.cn/news/622114.html

相关文章:

  • Vim 常用快捷键及插件
  • 力扣top100(day04-05)--堆
  • [Linux]双网卡 CentOS 系统中指定网络请求走特定网卡的配置方法
  • 微服务容错与监控体系设计
  • 基于Selenium的web自动化框架
  • 另类pdb恢复方式-2
  • 机器学习中的PCA降维
  • 【GPT入门】第47课 大模型量化中 float32/float16/uint8/int4 的区别解析:从位数到应用场景
  • ifcfg-ens33 配置 BOOTPROTO 单网卡实现静态和dhcp 双IP
  • break的使用大全
  • 102、【OS】【Nuttx】【周边】文档构建渲染:安装 Esbonio 服务器
  • 医学名刊分析评介:医学前沿
  • CERT/CC警告:新型HTTP/2漏洞“MadeYouReset“恐致全球服务器遭DDoS攻击瘫痪
  • 神经网络、深度学习与自然语言处理
  • SpringCloud学习
  • ShardingSphere实战架构思考及优化实战问题
  • Delphi7:THashedStringList 详细用法指南
  • Gato:多模态、多任务、多具身的通用智能体架构
  • Unity中 terriaria草,在摄像机拉远的时候就看不见了,该怎么解决
  • 智能家居【home assistant】(二)-集成xiaomi_home
  • C++ #if
  • 什么是合并挖矿?
  • 重新定义城市探索!如何用“城市向导”解锁旅行新体验?
  • leetcode 刷题1
  • Chrome插件开发全指南
  • 【fwk基础】repo sync报错后如何快速修改更新
  • 集成电路学习:什么是Object Detection目标检测
  • Linux学习-软件编程(进程与线程)
  • Java生态中,实现MCP(Model Context Protocol)服务端工具开发主要的两大主流框架选择
  • 从前端框架到GIS开发系列课程(25)mapbox基础介绍以及加载第三方底图高德地图的实现