webRTC搭建:STUN 和 TURN 服务器 链接google的有点慢,是不是可以自己搭建

如果使用 Google 提供的 STUN/TURN 服务器速度较慢,你完全可以自己搭建 STUN 和 TURN 服务器。这有助于提升网络连接速度和稳定性,特别是在需要穿透 NAT 或防火墙的网络环境下。

下面是如何自己搭建 STUN 和 TURN 服务器的具体步骤:

1. 选择 TURN/STUN 服务器软件

推荐使用 Coturn,这是一个开源且功能强大的 STUN 和 TURN 服务器。Coturn 支持完整的 STUN、TURN 和 Relay 功能,适用于 WebRTC 应用。

2. 安装 Coturn

在 Ubuntu/Debian 上安装

打开终端,使用以下命令安装 Coturn:

sudo apt update
sudo apt install coturn
在 CentOS 上安装

使用以下命令安装 Coturn:

sudo yum install epel-release
sudo yum install coturn

3. 配置 Coturn 服务器

安装完成后,需要配置 Coturn。配置文件通常位于 /etc/turnserver.conf/etc/coturn/turnserver.conf

编辑配置文件

使用文本编辑器编辑配置文件:

sudo nano /etc/turnserver.conf
配置文件示例

你可以根据自己的需求配置 Coturn,以下是一个基本的配置示例:

# 监听的端口,默认是 3478
listening-port=3478# 如果需要启用 TLS,请启用 5349 端口
# tls-listening-port=5349# 服务器公网 IP 地址
external-ip=YOUR_PUBLIC_IP# STUN 服务
fingerprint
lt-cred-mech# TURN 认证(使用用户名和密码)
user=exampleuser:examplepassword# Realm(一个标识符,可以随便设置)
realm=example.com# 使用 long-term credentials
lt-cred-mech# 如果要记录日志,请取消注释
# log-file=/var/log/turnserver/turnserver.log
# simple-log# 设置中继服务器的网络接口
relay-ip=YOUR_PUBLIC_IP# 设置服务器的最大并发连接数
max-bps=0# 设置监听的 IP 地址
listening-ip=0.0.0.0# 使用身份验证时使用的密钥
# static-auth-secret=YOUR_SECRET_KEY

YOUR_PUBLIC_IP 替换为服务器的公网 IP 地址,将 exampleuserexamplepassword 替换为你自己的用户名和密码。

启用服务并设置开机启动

编辑好配置文件后,保存并退出编辑器。然后启用 Coturn 服务并设置为开机启动:

sudo systemctl enable coturn
sudo systemctl start coturn

4. 防火墙配置

确保服务器的防火墙允许 STUN 和 TURN 相关的端口(通常是 34785349)。使用以下命令打开这些端口:

在 Ubuntu 使用 UFW
sudo ufw allow 3478/tcp
sudo ufw allow 3478/udp
sudo ufw allow 5349/tcp
sudo ufw allow 5349/udp
在 CentOS 使用 FirewallD
sudo firewall-cmd --zone=public --add-port=3478/tcp --permanent
sudo firewall-cmd --zone=public --add-port=3478/udp --permanent
sudo firewall-cmd --zone=public --add-port=5349/tcp --permanent
sudo firewall-cmd --zone=public --add-port=5349/udp --permanent
sudo firewall-cmd --reload

5. 测试 Coturn 服务器

配置完成后,可以在 WebRTC 应用中测试新搭建的 STUN/TURN 服务器。将 WebRTC 连接配置中的 STUN/TURN 服务器 URL 修改为你自己的服务器 IP 地址:

const configuration = {iceServers: [{ urls: 'stun:YOUR_SERVER_IP:3478' },{ urls: 'turn:YOUR_SERVER_IP:3478',username: 'exampleuser',credential: 'examplepassword'}]
};

YOUR_SERVER_IP 替换为你的服务器的公网 IP,exampleuserexamplepassword 替换为配置文件中的用户名和密码。

6. Coturn 服务器常见配置说明

  • listening-port: 默认监听的端口是 3478,TURN 协议的标准端口。
  • tls-listening-port: 启用安全的 TLS 连接时的端口,默认是 5349。
  • user: 设置用户名和密码来控制访问。
  • realm: 这是一个标识符,可以是你的域名,用于身份验证。
  • external-ip: 服务器的公网 IP,尤其在服务器有内网 IP 时,需要手动指定公网 IP。
  • fingerprint: WebRTC 使用的一种安全标识。
  • lt-cred-mech: 开启长效凭证机制,用于身份验证。

7. 其他调试工具

  • 可以使用 trickle ICE 这个在线工具测试你搭建的 STUN/TURN 服务器是否正常工作:
    • Trickle ICE

总结

搭建自己的 STUN/TURN 服务器不仅能提升性能,还可以让你完全掌控网络连接配置,避免第三方服务器速度不稳定的影响。Coturn 是目前最流行的选择,使用起来也非常简单。搭建成功后,你可以随时调整配置,适应不同的网络需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/460130.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLO即插即用模块---CAA

oly Kernel Inception Network for Remote Sensing Detection 论文地址:2403.06258https://arxiv.org/pdf/2403.06258 主要问题: 目标尺度变化大: 遥感图像中目标尺度范围广泛,从大型物体(如足球场)到小型…

【网络面试篇】TCP与UDP类

目录 一、综述 1. TCP与UDP的概念 2. 特点 3. 区别 4. 对应的使用场景 二、补充 1. 基础概念 (1)面向连接 (2)可靠的 (3)字节流 2. 相关问题 (1)TCP 和 UDP 可以同时绑定…

【C++】类和对象(六):运算符重载1

大家好,我是苏貝,本篇博客带大家了解C的运算符重载,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 (A) 引入(B) 运算符重载 (A) 引入 写一个Date日期类,问:如果我…

C语言(一维数组)

如果对你有帮助,请点个免费的赞吧,谢谢汪。(点个关注也可以!)\n\n如果以下内容需要补充和修改,请大家在评论区交流~ 思维导图 1.数组 由一个或多个相同的数据类型组成的集合 特点: 数据类型相…

Mount Image Pro,在取证安全的环境中挂载和访问镜像文件内容

天津鸿萌科贸发展有限公司从事数据安全服务二十余年,致力于为各领域客户提供专业的数据恢复、数据备份解决方案与服务,并针对企业面临的数据安全风险,提供专业的相关数据安全培训。 天津鸿萌科贸发展有限公司是 GetData 公司数据恢复与取证工…

上市公司企业数字金融认知数据集(2001-2023年)

一、测算方式:参考C刊《经济学家》王诗卉(2021)老师的做法,数字金融认知使用每万字年报描述中包含的对数字金融相关关键词的提及次数,关键词为:互联网、数字化、智能、大数据、电子银行、金融科技、科技金融…

【Mybatis】动态SQL+配置文件+数据库连接池+企业规范(10)

本系列共涉及4个框架:Sping,SpringBoot,Spring MVC,Mybatis。 博客涉及框架的重要知识点,根据序号学习即可。 目录 本系列共涉及4个框架:Sping,SpringBoot,Spring MVC,Mybatis。 博客涉及框架的重要知识点,根据序号学习即可。 …

Web3的去中心化社交网络:区块链技术如何改变互动方式

随着互联网技术的不断进步,社交网络正在经历一场深刻的变革。Web3,作为新一代互联网技术的代表,正通过区块链和去中心化理念改变着我们与他人互动的方式。传统的社交网络通常由大型公司控制,用户数据的集中化管理和隐私问题备受关…

大数据-191 Elasticsearch - ES 集群模式 配置启动 规划调优

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

短信登录的实现-redis和session的比较

目录 短信登录功能的实现一:基于session进行短信登录1:发送验证码2:登录3:登录验证拦截器4:隐藏用户敏感信息二:session的集群共享问题三:基于redis实现短信登录登录的刷新问题 短信登录功能的实…

中欧科学家论坛暨第六届人工智能与先进制造国际会议(AIAM 2024)在德国法兰克福成功举办,两百余名中外科学家共襄盛举

2024年10月20至21日,首届中欧科学家论坛在德国法兰克福的SAALBAU Titus Forum国际会议中心成功举行。中国驻法兰克福总领事馆伍鹏飞副总领事、德国兰斯巴赫-鲍姆巴赫市市长Michael Merz亲自出席并致辞。2004年诺贝尔化学奖得主Aaron Ciechanover教授和法国国家科学院…

直接删除Github上的文件

直接删除Github上的文件 说明:此操作只删除Github上的文件,本地仓库文件不受影响 1.确定要删除哪个分支文件,以删除main为例, 1.找到本地仓库位置以StudyNote为例,右键 bash here 2.打开命令窗口,将Github的StudyN…

SpringBoot篇(运维实用篇 - 日志)

目录 一、简介 二、代码中使用日志工具记录日志 1. 操作步骤 步骤1:添加日志记录操作 步骤2:设置日志输出级别 步骤3:设置日志组 2. 知识小结 三、优化日志对象创建代码 1. 实例 2. 总结 四、日志输出格式控制 1. 实例 2. 总结 …

Java多线程编程基础

目录 编写第一个多线程程序 1. 方式一 : 继承Thread类, 重写run方法 2. 方式二: 实现Runnable接口, 重写run方法 3. 方式三: 使用Lambda表达式 [匿名内部类] [Lambda表达式] 在上个文章中, 我们了解了进程和线程的相关概念. 那么, 在Java中, 我们如何进行多线程编程呢? …

postman的脚本设置接口关联

pm常用的对象 变量基础知识 postman获取响应结果的脚本的编写 下面是购物场景存在接口信息的关联 登录进入---搜索商品---进入商品详情---加入购物车 资源在附件中,可以私聊单独发送 postman的SHA256加密 var CryptoJS require(crypto-js);// 需要加密的字符串 …

ip地址分为几大类-IP和子网掩码对照表

一、IP地址的基本概念与分类 IP地址是用于在网络中标识每个设备的逻辑地址。互联网协议将IP地址分为A、B、C、D和E五类,其中A、B、C三类最常用,它们主要根据地址的首位位数以及用途进行划分。 A类地址: 范围:0.0.0.0 - 127.255.2…

docker占用磁盘过多问题

我在windows系统上用docker,安装在C盘环境下,我发现C盘占用了大量的空间,查找后发现是docker的映像文件占用的,于是开始清理,中间还踩个坑,记录一下,下次需要的时候方便找。 踩坑 我本想移动映…

Xss_less靶场攻略(1-18)

xss-lab-less1 ur特殊字符转义 存在url中 转义符为 %2B& 转义符为 %26空格 转义符为 或 %20/ 转义符为 %2F? 转义符为 %3F% 转义符为 %25#转义符为 %23 转义符为 %3Dimg 标签懒加载 在XSS攻击中,img标签的src属性是一个常见的攻击向量,因为它可以…

聊聊Web3D 发展趋势

随着 Web 技术的不断演进,Web3D 正逐渐成为各行业数字化的重要方向。Web3D 是指在网页中展示 3D 内容的技术集合。近年来,由于 WebGL、WebGPU 等技术的发展,3D 内容已经能够直接在浏览器中渲染,为用户提供更加沉浸、互动的体验。以…

【传知代码】图像处理解决种子计数方法

文章目录 一、背景及意义介绍研究背景农业考种需求传统计数方法的局限性人工计数仪器设备计数 研究意义提高育种效率提高计数准确性广泛的适用性数据存档与分析便利 二、概述三、材料与数据准备以及方法介绍整体流程图像采集图像预处理形态学操作腐蚀运算开运算 图像二值化种子…