目录
- Coturn介绍
- 部署架构图
2.1 局域网——无NAT映射
2.2 NAT网 - Corturn安装步骤
- 验证
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协议的各种功能,包括:
- 地址分配:Coturn为设备分配公共IP地址和端口号,以便它们能够进行通信。
- 数据包转发:Coturn接收来自一个设备的数据包,并将其转发给另一个设备,确保双方能够进行实时通信。
- 安全性:Coturn支持加密和认证机制,以确保通信的安全性和保密性。
- 中继模式:Coturn可以在两个设备之间建立可靠的中继连接,即使它们位于不同的NAT之后也能够进行通信。
Coturn是一个开源项目,因此用户可以根据自己的需求自由地使用、修改和分发它。它被广泛应用于实时通信应用程序,如WebRTC(Web实时通信)应用程序,以解决NAT环境下的通信问题。
Coturn(TURN服务器)的工作原理如下:
-
客户端发起连接请求:当两个位于不同NAT之后的设备(客户端)希望建立直接通信时,它们无法直接建立对等连接。客户端通过发送连接请求到Coturn服务器来解决这个问题。
-
服务器分配地址:Coturn服务器收到连接请求后,为客户端分配一个公共IP地址和端口号。这个地址将作为中继地址用于通信。
-
数据包中继:一旦地址分配完成,客户端之间的通信将通过Coturn服务器进行中继。当一个客户端发送数据包时,它会将数据包发送到Coturn服务器,然后Coturn服务器将数据包转发给另一个客户端。
-
NAT穿越:Coturn服务器的关键功能是允许穿越NAT。由于NAT会修改IP地址和端口号,直接通信变得困难。Coturn服务器作为中间人,通过在NAT之间传递数据包,绕过了NAT的限制,使得两个位于不同NAT之后的设备能够进行通信。
-
安全性和加密:Coturn服务器支持安全性和加密功能,以保护通信的安全性和保密性。它可以使用TLS/SSL协议进行加密,并支持认证机制,确保只有经过身份验证的客户端可以使用服务器进行通信。
总体而言,Coturn作为TURN服务器提供了一种中继机制,使得位于不同NAT之后的设备能够在实时通信应用中建立直接的连接。它通过地址分配、数据包中继和NAT穿越等功能,解决了NAT环境下的通信问题。
二、部署架构图
上图中的Relay server即为TURN中继服务器,而STUN server的作用是通过收集NAT背后peer端(即:躲在路由器或交换机后的电脑)对外暴露出来的ip和端口,找到一条可穿透路由器的链路,俗称“打洞”。STUN/TURN服务器通常要部署在公网上,能被所有peer端访问到,coturn开源项目同时实现了STUN和TURN服务的功能,是WebRTC应用的必备首选。
本人资源&财力有限,一般搭建开发环境采用的是:
- 多台WindowsPC连接同一个路由器搭建一个局域网。
- 在自己的Windows系统中装虚拟机,虚拟机网卡(桥接、NAT&