什么是TURN服务器?TURN服务器的作用和搭建

在本文中,我们将了解 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

(1)

相关推荐

发表回复

登录后才能评论