中继投屏服务器部署
针对极少数设备P2P(NAT 穿透)失败的情况的备用方案。
概述
P2P 连接条件说明
✅ 本地投屏(同一局域网内)
- 局域网 IPv4 ⇆ 局域网 IPv4
控制端和被控端在同一局域网下,支持直接建立 P2P 连接,无需中继服务器。
✅ 远程投屏(不同网络环境)
| 网络类型 | 是否可直接 P2P | 是否需中继服务器 |
|---|---|---|
| 公网 IPv6 ⇆ 公网 IPv6 | ✅ 是 | ❌ 否 |
| 公网 IPv4 ⇆ 公网 IPv6 | ✅ 是 | ❌ 否 |
| 公网 IPv4 ⇆ 局域网 IPv4 | ✅ 是(支持 NAT 穿透) | ❌ 否 |
必须使用中继服务器的场景
| 网络类型 | 原因 |
|---|---|
| 局域网 IPv4 ⇆ 局域网 IPv4(不同 NAT) | ❌ 无公网地址,无法实现 NAT 穿透 |
| 局域网 IPv4 ⇆ 公网 IPv6 | ❌ 地址族不一致,且无公网 IPv4 地址 |
查看电脑/手机网络信息方法
手机或电脑浏览器打开网址 http://cloud.jsdevhub.com/#/network,点击 收集候选项 ,查看是否有公网 IPv6,只要有公网 IPv6 即可实现远程投屏,否则需要搭建中继服务器。

常见的网络类型
✅ 支持公网 IPv6 的网络:大多数移动、联通、电信的手机卡、全网通流量卡、宽带以及共享路由器网络均支持公网 IPv6 地址,通常能够顺利建立 P2P 直接连接,无需中继服务器。
✅ 部分路由器未开启公网 IPv6 功能:需登录路由器管理后台手动开启,开启后建议重启路由器以确保生效。
✅ 支持公网 IPv6 的云手机示例:星界链云、移动云等。
支持公网 IPv4 的云手机示例:芒果云。
🛑 无法建立 P2P 直接连接的网络场景包括:少数物联卡、单网流量卡,以及部分云手机(如天翼云、鲨克云),这些网络仅具备局域网 IPv4 地址,缺乏公网 IPv6 支持,导致无法实现直接 P2P 连接。
部署教程
CentOS 8 搭建投屏中继服务器
准备阶段
购买云服务器(阿里云、百度云、腾讯云、华为云、AWS 等)
- 推荐配置:
- 2 核 CPU
- 2G 内存
- 5Mbps 带宽
- CentOS 8
- 带宽可根据同时投屏数量选择合适的带宽,有条件的用户可选择联通宽带(带公网 IPv4),无需购买服务器。
购买步骤:
- 打开云服务器提供商官网自行购买
- 推荐服务器区域:华东、华北、香港、北京,选择离用户最近区域,延迟更低
- 操作系统选择:CentOS 8 64位
- 设置 root 密码 并开通实例。
下载并安装连接工具(Windows)
推荐工具:Xshell 6 、 Xftp 6 安装教程:https://blog.csdn.net/weixin_57558097/article/details/127416711
连接服务器
- 打开 Xshell
- 新建会话
- 填写服务器信息
- 主机:阿里云公网IP
- 协议:SSH
- 端口:22
- 用户名:root
- 密码:服务器密码
部署 Coturn 服务
📌 前置说明
Coturn 是一个开源的 STUN/TURN 服务器。以下步骤适用于 CentOS 系统。
卸载旧版本 Coturn(如有)
sudo yum remove coturn -y
安装 Coturn
# 安装 EPEL(Extra Packages for Enterprise Linux)扩展源
sudo yum install -y epel-release
# 安装 Coturn TURN/STUN 服务器
sudo yum install -y coturn
常见错误
遇到以下错误时,表示 CentOS 8 无法解析 mirrorlist.centos.org,导致 yum 更新失败:
Errors during downloading metadata for repository 'appstream':
- Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream&infra=stock [Could not resolve host: mirrorlist.centos.org]
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream&infra=stock [Could not resolve host: mirrorlist.centos.org]
若遇到此问题,可通过以下步骤来解决:
# 1. 备份现有 repo 文件
mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
# 2. 下载阿里云 CentOS 8 Vault 镜像源(含 Base、AppStream、Extras 等)
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
# 3. 清理旧缓存
yum clean all
# 4. 生成缓存
yum makecache
确认配置文件路径
sudo find /etc -name "turnserver.conf"
一般为 /etc/coturn/turnserver.conf
查看服务器内外网 IP 地址
# 安装 net-tools 工具包,提供 ifconfig 命令
sudo yum install net-tools -y
# 查看本机的网络接口信息(主要用于获取内网 IP)
ifconfig
# 获取本机公网 IP(从外部服务查询,适用于云服务器等有公网出口的机器)
curl ifconfig.me
# 🔸 也可以登录服务器提供商的控制台后台(如阿里云、腾讯云、AWS 等)查看分配给该实例的公网 IP
- 内网 IP:在 inet 192.168.x.x 处查看。
- 公网 IP:使用 curl ifconfig.me 或登录云服务商查看。
编辑 Coturn 配置文件
#安装 nano 编辑器
sudo yum install -y nano
sudo nano /etc/coturn/turnserver.conf
建议配置如下(请根据实际情况替换内网 IP、公网 IP,并设置自定义 TURN 账号和密码):
# 内网监听地址
listening-ip=192.168.0.198
# 公网出口地址
external-ip=191.191.191.191
# 设置TURN 账号密码
user=admin:123456
# 默认端口
listening-port=3478
# 中继端口范围(必须)
min-port=49152
max-port=65535
# 鉴权机制
lt-cred-mech
# 域名或 IP 作为认证域
realm=191.191.191.191
# 开启调试日志
verbose
fingerprint
开放服务器防火墙和安全组端口
确保云平台和防火墙规则中开放以下端口:
- TCP/UDP 3478:Coturn 默认端口
- UDP 49152–65535:中继媒体流端口范围
- 服务器防火墙放行端口(以 CentOS/firewalld 为例)
# 检查 firewalld 是否正在运行
sudo systemctl status firewalld
# 如果 firewalld 未运行,执行以下命令启动它
sudo systemctl start firewalld
# 开放 Coturn 默认 STUN/TURN 端口(UDP 3478)
sudo firewall-cmd --permanent --add-port=3478/udp
# 开放 Coturn 默认 STUN/TURN 端口(TCP 3478)
sudo firewall-cmd --permanent --add-port=3478/tcp
# 开放 TURN 中继端口范围(UDP 49152-65535)
sudo firewall-cmd --permanent --add-port=49152-65535/udp
# 开放 TURN 中继端口范围(TCP 49152-65535)
sudo firewall-cmd --permanent --add-port=49152-65535/tcp
# 应用上述防火墙规则变更
sudo firewall-cmd --reload
- 云服务商控制台安全组放行端口(必做)
云服务器默认会通过安全组拦截外部端口访问,即使本地防火墙已放行,外部设备依然无法连接。
请在云服务商控制台(阿里云、腾讯云、华为云、AWS 等)添加安全组规则,放行 UDP/TCP 端口
启动与重启 Coturn 服务
- 启动服务:
sudo systemctl start coturn
- 重启服务(配置修改后必须重启):
sudo systemctl restart coturn
- 查看状态:
sudo systemctl status coturn
使用 turnserver 命令手动运行(调试用)
你可以通过命令行直接运行 Coturn,适用于测试和调试阶段,应先停止服务:
# 1. 先停止 systemctl 管理的服务
sudo systemctl stop coturn
# 2. 手动以调试模式运行(前台运行,输出到终端)
sudo turnserver -v -r 191.191.191.191 -a -o -c /etc/coturn/turnserver.conf --no-tls --no-dtls
# 3. 调试完成后,重新用 systemctl 启动
sudo systemctl start coturn
⚠️ 请将 191.191.191.191 替换为你服务器的公网 IP 地址。
参数说明
| 参数 | 含义 |
|---|---|
-v | 显示详细日志(verbose 模式) |
-r 191.191.191.191 | 指定认证域,通常 STUN/TURN 服务器使用公网 IP 而非域名 |
-a | 启用长期认证(long-term credentials) |
-o | 将日志信息输出到标准输出(stdout) |
-c /etc/coturn/turnserver.conf | 指定配置文件路径 |
测试 TURN 服务

打开测试页面 使用浏览器访问测试网页:http://cloud.jsdevhub.com/#/network
添加中继服务器地址
在“中继服务器”地址输入框中填写 TURN 服务器地址,格式如下:
turn:公网IP:端口
示例:
turn:191.191.191.191:3478
填写认证信息
- 用户名:
admin - 密码:
123456
(请替换成你 Coturn 配置文件中 user=admin:123456 对应的账号密码)
添加服务器
点击“添加服务器”按钮,将 TURN 服务器添加到候选服务器列表。
选择添加的 TURN 服务器
点击“获取候选项”按钮,开始进行连接测试。
确认测试结果
- 如果看到类型(type)中出现
relay,并且对应的公网 IP 地址为191.191.191.191(你的 TURN 服务器公网 IP),说明中继服务器成功响应。这表明你的 TURN 服务搭建成功,能够为客户端提供中继转发功能。 - 如果没有出现
relay类型:- 请检查防火墙和安全组端口是否开放(UDP/TCP 3478 及中继端口范围)。
- 确认 Coturn 服务是否正常运行。
- 确认配置文件中用户和密码是否正确。
设置 Coturn 开机自启
# 启用 Coturn 开机自启
sudo systemctl enable coturn
# 检查 Coturn 是否已设置为开机启动
sudo systemctl is-enabled coturn
排查端口占用(可选)
安装 dnf(CentOS 8+)
sudo yum install -y dnf
安装 lsof 工具
sudo dnf install -y lsof
查看端口占用情况
sudo lsof -i :3478
查看所有 TURN 相关进程
sudo lsof -i -P -n | grep turn
使用 Coturn 实现远程投屏
登录云控后台
点击右上角头像,选择“切换 IP”,在“远程-投屏中继IP”添加中继服务器信息。
添加 TURN 服务器信息
在添加 TURN 服务器窗口中填写 Coturn 服务器的公网 IP、端口,以及对应的用户名和密码,保存配置。

重新登录云控后台
使配置生效。
在手机端云控 App 中断开当前连接后重新连接
或者重启 App,即可生效。
常用 Coturn 命令
启动 Coturn 服务
sudo systemctl start coturn
查看服务运行状态(应为 active (running))
sudo systemctl status coturn
禁用系统默认 Coturn 服务
sudo systemctl disable coturn
确保服务已停止
sudo systemctl stop coturn