日常教程丨远程串流打游戏方法介绍(Parsec/Tailscale+Headscale+DERP+Sunshine&Moonlight)

远程串流打游戏方法介绍

主要介绍两种方法:

  1. Parsec
  2. Tailscale + Headscale(可选)+ DERP + Sunshine & Moonlight

Parsec

Parsec 一款远程桌面软件。

特点

  1. 主要基于 P2P 技术连接,这一点好处/坏处都很显然
  2. 需要官网注册后使用

优点

  1. 可以他人远程到自己电脑上一起玩本地多人游戏
    1. 可以管理其他人连接的权限(例如硬件控制范围:键盘/鼠标/手柄)
    2. 可以设置连接质量(例如画质/帧率)
  2. 网络情况好下,延迟和画质水平都很不错
  3. 注册账号即可免费使用绝大部分重要功能

缺点

  1. 只有英文
  2. 在复杂的网络环境下可能连接失败(例如 NAT 穿透失败,本人已经遇见过,后续会提供可能的解决方案,但难度高且效果不保证)
  3. 没有 iOS / iPadOS 版本

操作

比较简单就不多提了,见 官网

Tailscale + Headscale(可选)+ DERP(可选) + Sunshine & Moonlight

介绍:

  1. Tailscale 是一个基于 WireGuard 的零配置 VPN 服务,提供了简单的点对点连接和 NAT 穿透功能。
    此处用法主要用到其虚拟组网的方式完成内网穿透,以进行远程串流。
  2. Headscale 是一个开源的 Tailscale 服务器实现,可以让你自己搭建 Tailscale 网络的控制面。
    Tailscale 主要部分都开源,不过其控制面闭源,考虑到其控制面在外网,而可能有各种相应的可以预见的问题,而 Headscale 则是开源的 Tailscale 控制面实现。
    因此如果有具有公网 IP 的服务器(最好有绑定域名),推荐研究一下 Headscale 进行搭建。
  3. DERP 是一个开源的 TURN 服务器实现,可以帮助穿透 NAT 和防火墙。
    Tailscale 使用 DERP 服务器作为备用路径,当直接的 P2P 连接失败时,流量会通过 DERP 服务器中转。
    而官方的 DERP 服务器具有与其控制面类似的问题,因此如果你的服务器具有不错的带宽条件,也可以尝试搭建 DERP 服务器,帮助 Tailscale 获取更可靠的 fallback 连接。
  4. Sunshine 是一个开源的游戏串流软件,可以与 Moonlight 配合使用,实现低延迟的游戏串流。
  5. Moonlight 是一个开源的游戏串流客户端,可以接收 Sunshine 发送的游戏视频流,并将输入事件发送回 Sunshine。

使用场景及其效果

分本人的使用场景:

  1. 寝室内网环境:
    在床上用 iPad 或者 Macbook Air 连接寝室的游戏本进行游戏,延迟和画质都很优秀。
    本人寝室网络环境就是一个简单的某米千兆路由器,很便宜了。
  2. 外部网络环境:
    5G / 其他 Wifi 网络环境下,通过 iPhone / iPad / 笔记本 连接寝室游戏本进行游戏,质量可能稍差一些。

部署

1. Tailscale 使用(基础组网)
  1. 注册并登录 Tailscale(支持第三方授权登录)。
  2. 在所有设备上安装客户端并登录同一账号。
  3. 设备会自动加入同一虚拟局域网,并分配 100.x.x.x 虚拟 IP,后续可直接用该 IP 通信。

注意:iOS、iPadOS APP Store 国区中没有 Tailscale

2. Sunshine + Moonlight 使用(串流层)
  1. 服务端(游戏本) 安装 Sunshine,并通过浏览器进入管理控制台(默认 https://localhost:47990)。
  2. 在 Sunshine 中配置应用、编码器(如 NVENC/AMF/QuickSync)与分辨率档位。
  3. 客户端(手机/平板/轻薄本) 安装 Moonlight。
  4. 确保双方已通过 Tailscale 处于同一虚拟局域网,Moonlight 自动发现 Sunshine;如未自动发现,手动填入服务端的 Tailscale 虚拟 IP。
  5. Moonlight 发起连接后会显示 PIN 码,在 Sunshine 控制台输入确认完成配对。

Sunshine 配置建议:由于本人电脑连着显示屏,并且以显示屏为主显示器,因此默认 Sunshine 会使用显示屏进行串流。

可以考虑配置:配置-Audio/Video-显示器Id 为笔记本的 Id(可以在 故障排除-日志 中找到)

并且进行如下配置 配置-Audio/Video-高级显示设置选项

3. (可选进阶)Headscale 部署及使用(自建控制面)

目标:将控制面从官方服务切换为自建 Headscale,以提升稳定性和可控性。

  1. 服务器准备 :一台公网服务器 + 绑定域名(示例:controlplane.example.com)。

  2. Headscale 原生部署 :采用 systemd 方式运行,监听本地端口(示例:127.0.0.1:9080)。

  3. Nginx 反代配置(关键点是正确传递协议头):

    nginx 复制代码
    location / {
         proxy_pass http://127.0.0.1:9080; # 这里本人因 8080 被占用换成了 9080
         proxy_set_header X-Forwarded-Proto https; # 核心:告知后端真实协议为 https
         proxy_set_header Host $host;
    }
  4. 客户端接入 Headscale

    1. iOS / iPadOS:Accounts-右上角 Advanced Login Options-Use a custom coordination server
      填入 https://controlplane.example.com,并执行登录。
      如果顺利,会拉起页面获取一条指令,在控制面服务器上执行该指令完成配对。
    2. 其他平台类似
    3. 对于无头设备(例如在 Linux 终端内),可以先在 Headscale 服务端生成一个认证密钥,然后通过密钥来认证,可以免去上面再服务器上执行配对指令的步骤。
4. (可选进阶)DERP 部署及使用(自建中继)

目标:在 NAT 穿透失败时,让流量回退到自建 DERP 中继,降低外部网络连接的延迟。

  1. 容器化部署 :使用 Docker 镜像(如 fredliang/derper),直接暴露端口:

    • TCP 7443(DERP TLS)
    • UDP 3478(STUN)

    docker-compose.yml 示例:

    yaml 复制代码
    services:
    derper:
        image: fredliang/derper:latest
        container_name: tailscale-derp
        restart: always
        ports:
        - "7443:7443"       # 自定义中继端口
        - "3478:3478/udp"   # STUN 打洞端口
        volumes:
        # 直接挂载 Nginx 现有证书,并在容器内改名以符合 DERP 期望
        - /home/username/nginx/ssl/example.com.fullchain.pem:/app/certs/derp.example.com.crt:ro
        - /home/username/nginx/ssl/example.com.key:/app/certs/derp.example.com.key:ro
        # 挂载宿主机 Tailscale Socket 用于安全验证
        - /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock
        environment:
        - DERP_DOMAIN=derp.example.com
        - DERP_CERT_MODE=manual
        - DERP_ADDR=:7443

    补充:本人域名通过 acme.sh 申请证书,具体请搜索相关教程

  2. 证书直挂容器 :将宿主机证书只读映射进容器,启用手动证书模式(示例域名:derp.example.com)。

  3. 避坑一:不要用 Nginx Stream 代理

    • 该方案会引发 双重 TLS 握手冲突 ,导致客户端报 no-derp-connection
    • 正确做法是让 DERP 容器直接接管 TLS。
  4. 避坑二:DERP 映射表不要写 IP

    • derp.yamlhostname 必须是纯域名,不能包含 IP。
    • 否则客户端会用 IP 握手,触发证书域名不匹配(cert mismatch)。
  5. 维护顺序(关键工作流)

    1. 容器更新:docker-compose down && docker-compose up -d
    2. 代理与控制层:重载 Nginx、重启 Headscale
    3. 客户端重置:tailscale up --login-server https://controlplane.example.com --reset
相关推荐
mounter6259 小时前
Linux 7.2 内核技术前瞻:核心 subsystems 合并与重构深度解析
linux·kernel
珠海西格电力9 小时前
西格电力零碳园区管理系统:核心功能全解析,赋能园区低碳智能化落地
大数据·运维·网络·人工智能·信息可视化·能源
ZPC821010 小时前
model bingxing
网络·人工智能·网络协议·机器人
运维行者_10 小时前
广域网性能监控:分布式IT架构下的链路质量保障
开发语言·网络·分布式·后端·架构·数据库架构
A_humble_scholar10 小时前
Linux(十七)深入多线程编程:同步原语与实战指南
linux·运维·c++
老马聊技术10 小时前
Rocky Linux 9.0 安装 MySQL8.x详细教程
linux·数据库
Smoothcloud润云10 小时前
训练一个7B参数的大模型需要多少张GPU?大概要跑多久?
人工智能·深度学习·ai·开源·gpu算力
CoreTK芯通康EMC整改10 小时前
Type-C 高速接口 ESD 失效深度解析:器件选型 + PCB 布局双重解决方案
大数据·网络·emc·芯通康·pcb电磁兼容
醇氧10 小时前
主流 Agent 开发框架全解析(2026 最新)
大数据·数据库·人工智能·开源
OIDCAT10 小时前
国产USB转千兆网卡芯片CH398 VLAN应用
网络·嵌入式硬件·国产·usb转千兆网卡