? 摘要
本篇文章以“就算你是小白也能看懂”的原则,详细介绍了如何配置一台可用的 TURN Server(基于 coturn),让 WebRTC 通信再也不怕 NAT 穿透失败。我们将涵盖 TURN Server 的用途、安装方式、配置说明、部署方式(systemd)、以及一些常见问题和同类对比。附带的配置文件案例,直接拿去就能跑!
? 前言:你以为你能直连,其实 NAT 在冷笑
在 WebRTC 的世界里,两个用户的视频聊天、屏幕共享都需要“点对点连接”(P2P)。可惜,现实不如理想丰满:你在公司内网,他在学校 WiFi,你们都躲在 NAT 后,连根头发丝都连不到。
这时候,就轮到我们的主角 —— TURN Server 登场了!
?TURN Server 是什么?为啥我需要它?
? TURN 的作用(通俗翻译版)
❝“我打不通你?那我找中间人帮我转一下。”
TURN(Traversal Using Relays around NAT)是一种 NAT 穿透机制,是 STUN 的兄弟(或者说升级版)。STUN 是告诉你“你外面的 IP 是啥”,而 TURN 则是“你连接不了?那我替你转发流量”。
? 使用场景
WebRTC 视频通话(如会议系统) 远程桌面或协同应用 直播互动平台 一切 P2P 无法直连的地方
? 安装 coturn:先喝碗 EPEL 汤
# 安装 EPEL 仓库
yum install epel-release -y
# 安装 coturn
yum install coturn -y
安装后,会得到 /usr/bin/turnserver
命令,核心服务就靠它了。
⚙ 配置详解:我贴我自己用的配置给你看
文件路径:/acowbo/websoft/turnserver/turnserver.conf
# TURN/STUN 监听端口(UDP/TCP)
listening-port=40997
# TURN TLS监听端口(加密连接)
tls-listening-port=40998
# 开启 fingerprint 和 长时凭证机制
fingerprint
lt-cred-mech
# 认证域名(可以是你实际部署的域名)
realm=ts.example.com
# 用户和密码
user=demo_user:strongpassword123
# 服务器公网IP
relay-ip=1.2.3.4
external-ip=1.2.3.4
# 证书路径(用于TLS加密)
cert=/path/to/fullchain.pem
pkey=/path/to/privkey.pem
# 支持UDP/TCP
no-udp=false
no-tcp=false
# 开启详细日志
verbose
log-file=/acowbo/websoft/turnserver/turnserver.log
log-timestamp
❝? 提醒:不要把真实密码、IP 地址贴到互联网上!我这里做了脱敏处理。
? 启动服务:打造 systemd 启动脚本
放置路径(可选):/etc/systemd/system/turnserver.service
内容如下:
[Unit]
Description=CoTURN STUN/TURN Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/turnserver -c /acowbo/websoft/turnserver/turnserver.conf
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
然后启动并设置开机自启:
systemctl daemon-reexec
systemctl daemon-reload
systemctl enable --now turnserver
验证状态:
systemctl status turnserver
你可以使用第三方测试工具验证:
trickle ICE 测试 在 WebRTC 应用中加入:
iceServers: [{
urls: "turn:ts.example.com:40997",
username: "demo_user",
credential: "strongpassword123"
}]
? 常见问题
user=
格式是否正确,用户名/密码对是否正确cert
和 pkey
的路径和权限
? TURN 服务器还有谁?
coturn
coturn 是目前最主流的开源方案,无论是自己部署还是给 SaaS 平台配套,都是首选。
? 总结:你以为的视频通话,其实背后有个“流量搬运工”
TURN Server 就像一个默默无闻的“中间人”,在两个设备无法互相直连时,承担起流量中继的角色。别小看它,很多高质量视频通话体验,全靠它“托底”。
文章到此,如果你也在做 WebRTC 应用、协同办公、或者远程视频系统,一定记得加上 TURN,否则你可能连不上自己……
本文链接:https://kinber.cn/post/5255.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝: