在本文中,我们将了解 TURN 服务器及其在网络遍历中的作用。
什么是 TURN 服务器
TURN 是使用 NAT 的中继进行穿透,这些服务器对于现代互联网通信至关重要。
在各种情况下,由于网络限制,直接点对点通信是不可能的。
以下是 TURN 服务器的一些功能:
- 克服 NAT 和防火墙问题: NAT 是路由器使用的一种方法,用于转发来自本地网络中通过单个公共 IP 地址连接的多个设备的流量。由于公共 IP 地址的可用性有限,因此 NAT 是必不可少的。
NAT 使 P2P 通信复杂化,因为 NAT 后面的设备无法直接与外部网络连接。
- 促进通信: 由于 NAT 或防火墙的限制,当位于不同 NAT 和防火墙后的设备无法相互通信时,就会出现以下情况
- 设备之间无法直接通信。这类限制在许多网络中都很常见。这时,TURN 服务器就能促进这种通信。
TURN 服务器如何工作?
对TURN 服务器有一个概念性的理解,然后就是实际的实现。我们将研究两个概念,首先让我们从概念上理解转向服务器是如何工作的,然后我们将转向实际应用
- 中继数据: TURN 服务器的主要用途是在因 NAT 和防火墙而无法直接连接的设备之间转发数据。
- TURN 服务器从一台设备接收数据,然后将数据转发给另一台设备。通过 TURN 服务器传输的所有数据都经过加密,因此任何人,甚至是 TURN 服务器都不知道通过它传输的数据是什么。
- 保持连接: TURN 服务器会跟踪连接情况,并通过它管理数据的持续转发,以维护所有对 webRTC 通信至关重要的连接。
STUN 服务器 VS TURN 服务器
TURN
- TURN 服务器更加通用,可以处理 STUN 服务器发生故障的情况,可以在通信设备之间持续中继流量。
- 用于 NAT 和防火墙限制通过 STUN 服务器进行通信的情况,需要大量带宽、CPU 和资源
STUN
- STUN 服务器用于发现 NAT 分配给特定用户的本地 IP 地址和端口号
- STUN 服务器有助于在两个不同 NAT 后面的设备之间建立直接连接
- STUN 是一种较简单的协议,在对称 NAT 和存在复杂防火墙规则的情况下会失效
TURN服务器供应商概述
目前市场上有各种 TURN 服务器提供商。本文将介绍免费和付费版本,还将考虑借助 AWS 和 Google Cloud 等云服务器在云中运行 TURN 服务器的方案。
Open Relay Project(免费 TURN 服务器)
Open Relay 是一款免费的 TURN 服务器,可用于 WebRTC 应用程序。Open Relay TURN 服务器具有高可用性和可靠性,并提供 STUN 和 TURN 功能。
Open Relay 在 80 和 443 端口上运行,可绕过企业防火墙(许多企业/公司防火墙只允许 80 或 443 端口),它还支持 turns + SSL 以实现最大兼容性。
- 在 80 和 443 端口上运行
- 经测试可绕过大多数防火墙规则
- 企业级可靠性(99.999% 正常运行时间)
- 支持 TURNS + SSL,允许连接通过深度数据包检测防火墙。
- 支持 STUN
- 支持 TCP 和 UDP
- 动态路由到最近的服务器
- 生产就绪
Metered TURN Server(付费 TURN 服务)
Metered TURN Server 是一种付费服务器服务。它具有开放中继项目的所有功能,还有一些其他功能
- 免费TURN服务器的所有功能
- 额外支持
使用 TURN 服务器服务提供商的好处
- 易于设置和管理:使用预先设置的服务器,只需在应用程序中添加凭据,TURN 服务器就会自动启动。
- 免维护:TURN 服务器提供商负责所有维护工作,从用户角度看,TURN 服务器是免维护的。
- 可扩展性: 任何 TURN 服务器提供商提供的 TURN 服务器都具有高度可扩展性,因为 TURN 服务器提供商的业务就是提供可扩展的 TURN 服务器。
- 可靠性和正常运行时间,99.999% 的可靠性。
- 支持和专业知识: Metered 或 Open Relay Project 等 TURN 服务器提供商提供专门支持
在云提供商 AWS、Google Cloud、Azure 等设置 TURN 服务器
您还可以在云提供商之一中设置自己的TURN服务器。要运行服务器,可以使用开源 Coturn 项目。
但在我们开始有关如何设置您自己的回合服务器的教程之前,可能需要考虑一些注意事项。
还可以参考有关如何在各个云提供商上设置 TURN 服务器的各种详细指南:
在云提供商处运行自己的 turn 服务器时的注意事项
- 安装
- 维护
- 实例停滞问题
- 成本估算和控制
- 资源分配
第 1 步 选择云服务提供商
如 AWS、Google Cloud、Azure等服务商,其中一些还提供有限时间内的免费套餐。
创建虚拟机(VM): 在选定的云提供商上创建一个虚拟机,并确保该机器有一个公共 IP 地址,TCP 3478 端口处于开放状态。
记得在机器上安装 Linux debian 或 ubuntu。
第 2 步 安装 Coturn
以 SSH 方式登录虚拟机,然后键入以下命令将 coturn 安装到机器中。
更新依赖项:
sudo apt-get update
sudo apt-get upgrade
第 3 步 配置 Coturn
- cd 进入 coturn 文件夹,然后使用 nano 编辑配置文件/etc/turnserver.conf,如下所示:
nano /etc/turnserver.conf
- 基本配置
listening-port=3478
# Use your server's public IP
external-ip=<Your_VM_Public_IP>
# Set a user for authentication
user=<username>:<password>
# Enable log file
log-file=/var/log/turnserver.log
第 4 步 启动 TURN 服务器
Turnserver -c /etc/turnserver.conf
第 5 步 与 WebRTC 集成
您可以通过在 ICE 服务器阵列中指定 TURN 凭据,轻松将 TURN 服务器与您的 webRTC 应用程序集成
const iceConfig = {
'iceServers': [
{
'urls': 'turn:<Your_VM_Public_IP>',
'username': '<username>',
'credential': '<password>'
}
]
};
第 6 步 TURN 服务器
启动 TURN 服务器后,您可以通过访问https://turndemo.metered.ca/并添加您的凭据来检查 TURN 服务器是否正常工作。
TURN 服务器使用案例
- 电信和 VoIP 服务:VoIP 服务 TURN 服务器是实现通话和视频聊天的必要条件
- 视频会议:需要使用 TURN 服务器才能进行视频会议,尤其是大量参与者之间的视频会议。
- 物联网设备:如果需要在 NAT 后面的物联网设备之间进行通信,则需要 TURN 服务器在设备之间进行通信
- 流媒体服务:视频流媒体服务也需要 TURN 服务器,以便将流媒体传输到数百万个位于不同 NAT 和防火墙规则后的设备上
- 远程工作和协作工具:许多远程工作和协作工具(如聊天软件和其他通信设备和软件)都需要 TURN 服务器在 NAT 后面相互通信。
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/webrtc/38399.html