Linux部署Coturn以及关于打洞的思考

目录

  1. Coturn介绍
  2. 部署架构图
    2.1 局域网——无NAT映射
    2.2 NAT网
  3. Corturn安装步骤
  4. 验证
    4.1 局域网——无NAT映射
    4.2 NAT网
    4.2.1 Cywin安装步骤
    4.2.2 Coturn安装步骤
    4.2.3 验证

引言

下文部署架构图为Corturn为解决互联网NAT环境下“找朋友”的部署架构,也是Coturn发挥其价值的最佳方案。但是我们好多小白在进行WebRTC自学开发时并没有公网ip,那么应该怎么“打洞”呢?打洞到底是怎么一个过程?我们在开发时应该如何决定candidate?回答这些问题之前首先想一想我们自己能搭建什么样的网络环境吧。下面将自己搭建网络环境并介绍无互联网ip的环境下Coturn应用与部署。通过下面的测试过程,我相信你将充分理解“打洞”。

一、Coturn介绍

Coturn(也称为TURN服务器)是一种用于实现Traversal Using Relays around NAT(TURN)协议的开源服务器软件。TURN协议是一种用于在网络地址转换(NAT)环境下实现实时通信的协议。NAT是一种常见的网络部署方式,它允许多个设备共享单个公共IP地址。然而,NAT会导致对等通信(peer-to-peer communication)的困难,特别是在实时通信应用程序(如语音通话、视频通话和实时消息传递)中。

Coturn的作用是作为中继服务器,充当两个位于不同NAT之后的设备之间的中间人。当两个设备无法直接建立对等连接时,它们可以通过Coturn服务器进行通信。Coturn服务器充当中继,接收来自一个设备的数据包,然后将其转发给另一个设备,从而绕过了NAT的限制。

Coturn支持TURN协议的各种功能,包括:

  1. 地址分配:Coturn为设备分配公共IP地址和端口号,以便它们能够进行通信。
  2. 数据包转发:Coturn接收来自一个设备的数据包,并将其转发给另一个设备,确保双方能够进行实时通信。
  3. 安全性:Coturn支持加密和认证机制,以确保通信的安全性和保密性。
  4. 中继模式:Coturn可以在两个设备之间建立可靠的中继连接,即使它们位于不同的NAT之后也能够进行通信。

Coturn是一个开源项目,因此用户可以根据自己的需求自由地使用、修改和分发它。它被广泛应用于实时通信应用程序,如WebRTC(Web实时通信)应用程序,以解决NAT环境下的通信问题。

Coturn(TURN服务器)的工作原理如下:

  1. 客户端发起连接请求:当两个位于不同NAT之后的设备(客户端)希望建立直接通信时,它们无法直接建立对等连接。客户端通过发送连接请求到Coturn服务器来解决这个问题。

  2. 服务器分配地址:Coturn服务器收到连接请求后,为客户端分配一个公共IP地址和端口号。这个地址将作为中继地址用于通信。

  3. 数据包中继:一旦地址分配完成,客户端之间的通信将通过Coturn服务器进行中继。当一个客户端发送数据包时,它会将数据包发送到Coturn服务器,然后Coturn服务器将数据包转发给另一个客户端。

  4. NAT穿越:Coturn服务器的关键功能是允许穿越NAT。由于NAT会修改IP地址和端口号,直接通信变得困难。Coturn服务器作为中间人,通过在NAT之间传递数据包,绕过了NAT的限制,使得两个位于不同NAT之后的设备能够进行通信。

  5. 安全性和加密:Coturn服务器支持安全性和加密功能,以保护通信的安全性和保密性。它可以使用TLS/SSL协议进行加密,并支持认证机制,确保只有经过身份验证的客户端可以使用服务器进行通信。

总体而言,Coturn作为TURN服务器提供了一种中继机制,使得位于不同NAT之后的设备能够在实时通信应用中建立直接的连接。它通过地址分配、数据包中继和NAT穿越等功能,解决了NAT环境下的通信问题。

二、部署架构图

在这里插入图片描述
上图中的Relay server即为TURN中继服务器,而STUN server的作用是通过收集NAT背后peer端(即:躲在路由器或交换机后的电脑)对外暴露出来的ip和端口,找到一条可穿透路由器的链路,俗称“打洞”。STUN/TURN服务器通常要部署在公网上,能被所有peer端访问到,coturn开源项目同时实现了STUN和TURN服务的功能,是WebRTC应用的必备首选。
本人资源&财力有限,一般搭建开发环境采用的是:

  1. 多台WindowsPC连接同一个路由器搭建一个局域网。
  2. 在自己的Windows系统中装虚拟机,虚拟机网卡(桥接、NAT&

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

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

相关文章

玩转 AIGC!使用 SD-WebUI 实现从文本到图像转换

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 基于大家…

javaScript常用知识点

1. this指向问题 在绝大多数情况下,函数的调用方式决定了this的值。this不能在执行期间被赋值,并且在每次函数被调用时this的值也可能会不同。 this指向的对象称为函数的上下文对象context;this的指向取决于函数被调用方式this的指向不是函数…

【更新】cyのMemo(20240422~)

序言 胡哥首马在淮安325完赛,他的本硕都在淮安度过,七年的跑步生涯画上句号,真的是很圆满。七年,从180斤瘦到120斤,历经种种,胡哥理解的跑步,不是快,而是稳,他在比赛中从…

力扣HOT100 - 226. 翻转二叉树

解题思路: class Solution {public TreeNode invertTree(TreeNode root) {if (root null) return null;TreeNode left invertTree(root.left);TreeNode right invertTree(root.right);root.left right;root.right left;return root;} }

《ElementUI 基础知识》png 图片扩展 icon用法

前言 UI 设计给的切图是 .png 格式。但想与 Element UI icon 用法类似,方案如下。 实现 步骤一 准备图片 步骤二 新建文件,可使用 CSS 预处理语言 styl 或 scss。 stylus 方式 文件 icon.styl /* 定义一个混合 */ cfgIcon(w, h) {display: inlin…

如何判别三角形和求10 个整数中最大值?

分享每日小题,不断进步,今天的你也要加油哦!接下来请看题------> 一、已知三条边a,b,c能否构成三角形,如果能构成三角形,判断三角形的类型(等边三角形、等腰三角形或普通三角形 …

DAPP的商业模型创新: 探索可持续盈利路径

去中心化应用(Decentralized Applications,DAPPs)作为区块链技术的重要应用之一,在近年来蓬勃发展。然而,随着市场竞争的加剧和用户需求的不断变化,DAPP开发者们面临着寻找可持续盈利路径的挑战。本文将探讨…

注意libaudioProcess.so和libdevice.a是不一样的,一个是动态链接,一个是静态

libaudioProcess.so是动态链接,修改需要改根文件系统,需要bsp重新配置 libdevice.a是静态链接,直接替换就行 动态链接文件修改 然后执行fw_update.sh

最优控制理论笔记 - 03无约束条件下的泛函极值问题

一、始端时刻t0和终端时刻tf时刻都给定的泛函极值问题 其中式子2.8为欧拉方程,式子2.9为横截条件。 上述推导的重要作用在于将求泛函的极值问题转化为求解欧拉方程在满足边界条件和横截条件下的定解问题。 1. 固定始端和终端 2. 自由始端和自由终端 3. 自由始端和…

一文读懂链游!探索链游的前世今生,区块链与游戏结合的新兴趋势

区块链技术的崛起给游戏行业带来了前所未有的变革,而链游(Blockchain Games)正是这一变革的产物。本文将带您一览链游的前世今生,探索区块链与游戏结合的新兴趋势。 1. 链游的起源 链游,顾名思义,是指利用…

恶心透了的小日子,害人终害己,国货呼吁关注抵制日本核废水排放

​|日本排放核废水 日本政府决定将福岛第一核电站的核污染水经过处理后排放入海,这一决定引发了多方面的担忧和反对,特别是在周边国家,包括中国和韩国。关于日本排放核污染水这一新闻事件,我们必须首先认识到,核能利用…

【MySQL 数据宝典】【磁盘结构】- 002 数据字典

一、数据字典 ( Data Dictionary ) 1.1 背景介绍 我们平时使用 INSERT 语句向表中插入的那些记录称之为用户数据,MySQL只是作为一个软件来为我们来保管这 些数据,提供方便的增删改查接口而已。但是每当我们向一个表中插入一条记录的时候,MyS…

前端学习之DOM编程案例:点名案例和秒表案例

点名 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>点名案例</title><style>*{margin: 0;padding: 0;}</style> </head> <body><div id"container">…

H5 台球猜位置小游戏

刷到抖音有人这样玩&#xff0c;就写了一个这样的小游戏练习一下H5的知识点。 小游戏预览 w(&#xff9f;Д&#xff9f;)w 不开挂越急越完成不了&#xff0c;&#x1f47f;确认15次也没全对… 知识点 获取坐标位置的DOM元素&#xff0c;感觉应该是新的吧&#xff0c;以前的…

使用Python进行容器编排Docker Compose与Kubernetes的比较

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 随着容器化技术的普及&#xff0c;容器编排成为了管理和部署容器化应用程序的重要环节。在容…

[C++][算法基础]求约数(试除法)

给定 n 个正整数 &#xff0c;对于每个整数 &#xff0c;请你按照从小到大的顺序输出它的所有约数。 输入格式 第一行包含整数 n。 接下来 n 行&#xff0c;每行包含一个整数 。 输出格式 输出共 n 行&#xff0c;其中第 i 行输出第 i 个整数 的所有约数。 数据范围 1≤…

上传文件到HDFS

1.创建文件夹 hdfs -dfs -mkdir -p /opt/mydoc 2.查看创建的文件夹 hdfs -dfs -ls /opt 注意改文件夹是创建在hdfs中的&#xff0c;不是本地&#xff0c;查看本地/opt&#xff0c;并没有该文件夹。 3.上传文件 hdfs dfs -put -f file:///usr/local/testspark.txt hdfs://m…

插值与重采样在AI去衣技术中的关键作用

在人工智能&#xff08;AI&#xff09;的众多应用中&#xff0c;去衣技术作为一种新兴的图像处理技术&#xff0c;逐渐引起了广泛关注。这项技术不仅涉及复杂的计算机视觉和深度学习算法&#xff0c;还需要对图像处理中的插值与重采样技术有深入的理解。本文将详细探讨插值与重…

【智能算法】寄生捕食算法(PPA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2020年&#xff0c;AAA Mohamed等人受到自然界乌鸦-布谷鸟-猫寄生系统启发&#xff0c;提出了寄生捕食算法&#xff08;Parasitism – Predation Algorithm, PPA&#xff09;。 2.算法原理 2.1算法…

密钥密码学(一)

原文&#xff1a;annas-archive.org/md5/b5abcf9a07e32fc6f42b907f001224a1 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 前言 序言 从秘密解码环到政府政策声明&#xff0c;隐藏和发现信息的挑战长期以来一直吸引着智慧。密码学是一个引人入胜的主题&#xff0c;…