linux安装Coturn搭建自己的TURN服务器

linux安装Coturn搭建自己的TURN服务器

linux安装Coturn搭建自己的TURN服务器

WebRTC使用对等连接来传输数据,但是如果两台PC不在同一网络上,或者NAT或某种防火墙存在问题而无法直接连接,会发生什么情况呢?

TURN表示在NAT周围使用中继进行遍历,即使对等体无法直接连接,它也用于中继对等体之间的流量。出于安全原因,TURN也是至关重要的,因为您掩盖了客户的实际地址。

在本文中,您将使用Coturn设置自己的TURN服务器,并使用用户名和密码对其进行保护。您还将学习如何将域添加到TURN服务器并使用Docker运行服务器。

一、安装Coturn

Coturn是一个开源的STUN和TURN实现,它是免费的,高度可配置的,并得到了社区的良好支持。

在本节中,您将在计算机上安装Coturn并将该过程作为自动化系统守护程序启用。

首先,您将通过运行apt-get update命令将操作系统的存储库版本更新为最新版本。

如果是centos的话直接yum install coturn即可

sudo apt-get update -y

然后,您可以使用以下命令继续安装coturn。

sudo apt-get install coturn

如果希望每次打开服务器时Coturn自动启动,则必须修改/ etc / default / coturn文件。

sudo nano /etc/default/coturn

找到以下行并将其取消注释以将Coturn作为自动系统服务守护程序运行。

TURNSERVER_ENABLED=1

完成后,保存并退出文件。

现在,您应该可以使用以下命令启动coturn服务。

systemctl start coturn

二、配置Coturn

现在,您已经启动并运行了Coturn,是时候进行一些基本配置了,例如定义您的外部IP地址和添加基本身份验证。

在开始修改之前,建议首先对原始配置进行安全复制,以便在无法解决问题时始终返回。

mv /etc/turnserver.conf /etc/turnserver.conf.backup

此命令会将原始配置文件从/etc/turnserver.conf重命名为/etc/turnserver.conf.backup。

接下来,我们将在包含配置的同一目录中创建一个空文件。

nano /etc/turnserver.conf

添加以下内容来定义您的Coturn服务器领域和服务器名称。根据需要替换占位符值。

# TURN server name and realm
realm=<DOMAIN>
server-name=<SERVER_NAME>

之后,添加外部IP密钥以定义服务器的IP地址,并添加侦听IP密钥以指定Coturn服务器应侦听的IP地址(0.0.0.0告诉服务器侦听所有IP地址)。

# IPs the TURN server listens to
listening-ip=0.0.0.0
# External IP-Address of the TURN server
external-ip=IP_ADDRESS


接下来,您可以定义服务器将侦听的端口以及用于进一步配置的端口。

# Main listening port
listening-port=3478

# Further ports that are open for communication
min-port=10000
max-port=20000


然后,您可以继续定义日志目录并启用详细日志记录模式。

# Use fingerprint in TURN message
fingerprint

# Log file path
log-file=/var/log/turnserver.log

# Enable verbose logging
verbose

最后,您可以使用用户和lt-cred-mech密钥为TURN服务器启用身份验证。

# Specify the user for the TURN authentification
user=test:test123

# Enable long-term credential mechanism
lt-cred-mech


这些配置块将导致以下文件:

# TURN server name and realm
realm=DOMAIN
server-name=turnserver

# Use fingerprint in TURN message
fingerprint

# IPs the TURN server listens to
listening-ip=0.0.0.0

# External IP-Address of the TURN server
external-ip=IP_ADDRESS

# Main listening port
listening-port=3478

# Further ports that are open for communication
min-port=10000
max-port=20000

# Log file path
log-file=/var/log/turnserver.log

# Enable verbose logging
verbose

# Specify the user for the TURN authentification
user=test:test123

# Enable long-term credential mechanism
lt-cred-mech


完成后,保存并退出文件。

您可以通过更改给定键的值或添加新的键来进一步根据自己的需要自定义配置。您可以参考原始配置,该原始配置提供了有关最重要选项的基本文档。

完成配置后,您可以重新启动Coturn服务器以应用更改。

sudo service coturn restart

三、测试TURN服务器


可以使用Trickle ICE测试STUN和TURN服务器的功能。该工具通过创建具有TURN服务器信息的对等连接来尝试TURN服务器功能,然后开始收集WebRTC会话的候选对象。

如果收集了候选人,他们将显示在下面的文本框中。

现在,首先在浏览器中打开网站,https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/   然后将TURN服务器信息添加到输入表单中。格式如下所示:

turn:TURN_IP:TURN_PORT


还要确保在相应的字段中提供用户名和密码。


linux安装Coturn搭建自己的TURN服务器

填写有关TURN服务器的信息并使用“添加服务器”按钮将其添加到列表后,您可以通过单击“收集候选者”按钮来运行测试以继续。

linux安装Coturn搭建自己的TURN服务器

现在,您应该看到页面底部显示的测试结果类似于以下内容:
linux安装Coturn搭建自己的TURN服务器

恭喜,您现在已经成功设置并保护TURN服务器,并准备在您的应用程序中使用它。但是,您还可以配置其他选项,例如添加域和使用SSL证书保护服务器安全,我们将在下一部分中介绍。

您也可以使用Docker而不是常规部署来部署Coturn。无论使用哪种操作系统,都可以通过docker部署更轻松地更改Coturn服务器的版本并将其部署在多台计算机上。

四、添加Coturn服务器域名解析

现在您可以通过公共IP地址访问TURN服务器,是时候将您的域添加到TURN服务器并使用LetsEncrypt生成的SSL证书保护连接的安全了。

保护服务器的安全还可以使您从安全的HTTPS站点访问TURN服务器,而没有证书就无法访问。

将DNS记录添加到您的域

首先,您将添加将您的域指向TURN服务器的IP地址的DNS记录。

linux安装Coturn搭建自己的TURN服务器

添加DNS记录并等待所需的时间,直到使用DNS查找可以找到记录为止,您可以继续。

五、创建一个SSL证书

现在我们为coturn创建一个ssl证书,确保通讯的数据安全,申请免费证书的地方很多,可以使用certbot,教程地址https://blog.bfw.wiki/user7/15829800356845680024.html

亦可以使用阿里云申请免费ssl证书,教程地址:https://blog.bfw.wiki/user7/15963637800064270017.html

今天我们用certbot

LetsEncrypts certbot可用于快速生成免费的SSL证书,这些证书在用尽之前会自动进行更,新。

可以使用以下命令安装Certbot:

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot


成功安装certbot之后,可以使用以下命令生成证书。

sudo certbot certonly --standalone --preferred-challenges http \
--deploy-hook "systemctl restart coturn" \
-d <YOUR_DOMAIN>

在这里,我们请求一个独立的证书,并告诉certbot每当证书更新时,它应该自动重新启动coturn。这将确保TURN服务器的证书始终是最新的,但缺点是所有正在进行的TURN连接都将被中断。

如果您不希望这种情况发生,可以禁用证书的自动续订。

将SSL证书添加到您的配置中


现在,您已经生成了SSL证书,是时候将其添加到配置中了。为此,您需要添加三个参数:

# SSL certificates
cert=/etc/letsencrypt/live/<DOMAIN>/cert.pem
pkey=/etc/letsencrypt/live/<DOMAIN>/privkey.pem
# 443 for TURN over TLS, which can bypass firewalls
tls-listening-port=443

这三个参数与先前的配置结合在一起就可以了。

# TURN server name and realm
realm=<DOMAIN>
server-name=<DOMAIN>

# Use fingerprint in TURN message
fingerprint

# IPs the TURN server listens to
listening-ip=0.0.0.0

# External IP-Address of the TURN server
external-ip=IP_ADDRESS

# Main listening port
listening-port=3478

# Further ports that are open for communication
min-port=10000
max-port=20000

# Log file path
log-file=/var/log/turnserver.log

# Enable verbose logging
verbose

# Specify the user for the TURN authentification
user=test:test123

# Enable long-term credential mechanism
lt-cred-mech

# SSL certificates
cert=/etc/letsencrypt/live/<DOMAIN>/cert.pem
pkey=/etc/letsencrypt/live/<DOMAIN>/privkey.pem

# 443 for TURN over TLS, which can bypass firewalls
tls-listening-port=443

六、使用Docker运行TURN服务器

如果您想在Docker上运行Coturn而不是将其安装在计算机上并按常规流程进行管理,则可以使用以下命令进行操作。

docker run -d --network=host \
-v $(pwd)/turnserver.conf:/etc/coturn/turnserver.conf \
instrumentisto/coturn

在这里,您运行官方的coturn docker image instrumentisto / coturn并使用卷提供您的配置。使用主机网络选项是为了使容器网络与主机网络不隔离,因此不会获得其自己的IP地址。

如果您不想使用network = host选项,则可以将其删除并指定使用的端口。

另一个选择是在docker-compose文件中定义Docker配置,这样可以更轻松地多次运行相同的配置。

version: '3'
services:
coturn_server:
image: instrumentisto/coturn:4.5.1
restart: always
network_mode: "host"
volumes:
- ./turnserver.conf:/etc/coturn/turnserver.conf

然后,您可以使用以下命令启动应用程序:

docker-compose up -d


{{collectdata}}

网友评论0