2022年初工作调换,新公司距离自己家的房子有近80km距离,为了工作日通勤方便只能在公司附近租房,但是受限于空间和个人想法(原本是想好好工作的),PC仍就放在家中。
俗话说得好,一日不见如隔三秋;我这一礼拜不见,那每次回家真就只能对着书房的电脑激动的来上一句:我可想死你们了,然后报复性的玩耍到后半夜。
长此以往,这也不是个办法,这身体还得要。伟大的大禹告诉我们一个深刻的道理:堵不如疏,得想想怎么让自己工作日也能玩上好游戏。
届时,Steamdeck初现峥嵘,我也曾口水流淌,艳羡不已,奈何没货。
正当焦头烂额之际,一点灵光闪过——远程串流,就成了照亮冬天里的那把火。简单研究后发现,远程串流有着相当符合我现有需求的点:
本文也会从原理、常见产品组合、实现方式、常见问题排查四个部分跟大家介绍现有市面上主要的远程串流方案,希望每位机友在地铁、大巴、机场等舒适或不舒适的环境里充分享受游戏的快乐。
若您对原理性内容没有兴趣,可以仅关注特别提示内容,方便进行问题排查和定位。因为非专业从事,提前叠甲,如有错漏,欢迎抓虫。
在本章节中,我将会介绍市面上常见的两种串流方式:经过服务端的中转、P2P直连,并针对常见家庭的网络布局进行说明。
实际上主流的远程控制或串流主要区分为两种类型:经过服务端的中转模式和P2P直连模式。
中转模式在我们日常生活中其实接触的最多,从最早的QQ桌面共享控制、Windows桌面控制,到工作生活中如今越来越多的腾讯会议、飞书会议的共享操控,再到更专业一些的向日葵、Todesk等工具,本质上都是这一类型的远程串流方式。
简单来讲,就是宿主(Host)和用户(Server)之间要进行消息传输时,需要通过中转服务器(Server)来进行解析和转发。
在整个过程中,宿主的桌面显示会被捕获到中转服务器然后展示给用户,用户在本机上直接的操作,比如鼠标的拖拽点击、键盘的按键、快捷键等,又会被用户端的程序捕获、解析、转发给中转服务器,然后将对应的操作在宿主端复现出现,实现一个完整的交互闭环。
这种形式自然有其优劣势,从优点角度来看主要突出一点——便捷:
中转服务器会捕获、解析、转发相应数据,本身可能存在一定安全风险(不要对企业的职业素养有任何奢求)
为了控制成本,这类免费的服务会有带宽限制,满足日常PPT演示等场景足够,但是对于复杂的游戏画面并且要满足帧数流畅的要求,远远不够;而专门针对游戏场景的模式,通常需要额外付费,且费用不低。
由于多数不是针对游戏场景,也自然缺少手柄映射等支持能力。
于是,我们将目光转向P2P类型的服务,看如何来满足我们的游戏需求。
1.2 P2P(peer-to-peer)直连模式
对等式网络(英语:peer-to-peer, 简称P2P),又称点对点技术,是去中心化、依靠用户群(peers)交换信息的互联网体系,它的作用在于,减低以往网路传输中的节点,以降低资料遗失的风险。与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能,任何一个节点无法直接找到其他节点,必须依靠其户群进行信息交流*。——维基百科Wiki
通过术语理解P2P可能较为生硬,我们换个角度思考:既然在第一种方法里,我们要追求更直接、更快速的链接方式,并且尽可能让远程串流的带宽不成为画面传输的限制因素,我们有一个很简单的方式:抛弃中转服务器,直接让宿主和用户端链接。
这种没有中转服务器的方式,就可以理解为P2P式直连。
那么,是不是有两台开着的电脑,利用Windows自带的远程桌面链接功能,我们就可以实现这种链接呢?
以下1.3-1.6内容均为知识普及,可直接跳转至 1.7光猫桥接与路由器设置 查看。
毕竟我们不是专业的网络工程师,不需要对这些有非常准确的定义,只要能帮助我们建立起一些基础概念并运用在可能出现的问题排查中即可。
简单来讲,内网,就是俗称的局域网,以前黑网吧的《CS》、《War3》就是用的局域网技术。你能在这个网吧内找到同样上机的玩家,但是没法和别的网吧的同学一起联机;
公网,即因特网、互联网,就像后来出现的浩方、11、VS,即便你和同学各自在家上网,也能开个房间一起玩。
在我们上述介绍的场景里,内网其实就对应“家里面的设备”,在光猫和路由器下接入的PC、智能电视、NAS等等都是我们家庭内网中的设备;而在地铁、大巴、机场上,用手机、热点、或者其他商家提供的WiFi时,我们实际上加入的就是不同的“局域网”(移动、联通、电信在没有公网IP的时候也可以理解为一个大内网)。
在公网的地址中,我们要提及ipv4和ipv6两种概念。
IPv4是一种Internet协议,它是用来标识和定位计算机或其他设备在互联网上的位置。IPv4的地址长度为32位,可提供约42亿个独特的IP地址,但是由于互联网用户的增加,这个地址空间已经不足以满足需求。IPv4地址通常用点分十进制表示法表示,如192.168.1.1。
为解决数量稀少的问题,科学家在IPV4协议的基础上推出了IPV6,也就是网络协议的第六版本。为什么没有ipv5?就像你问G胖为什么游戏没有3一样。
IPv6的地址长度为128位,可以提供更多的IP地址,其新增的地址空间支持2^128(约3.4×1038)个地址(具体数量为340,282,366,920,938,463,463,374,607,431,768,211,456 个),相当于每个人在地球上都可以拥有多个IP地址。IPv6的地址格式较为复杂,通常用冒号分隔符分成8组16进制数表示,如 2001:0db8:85a3:0000:0000:8a2e:0370:7334 。
我们已知P2P是一种设备的直连方式,那么我们就需要在茫茫互联网中通过一串字符地址找到一台固定的设备来进行连接。如果你有固定的IPV4的地址,那你在网络上已经是让人艳羡的富豪啦,互联网的世界向你打开!
当然,我们更多普通玩家拥有一个属于自己的IPV6地址也是非常简单的,如今三大运营商在光猫拨号时通常会默认下发一个ipv6的公网地址,你可以通过拨号上网的设备后台确认到这一点。
NAT是网络地址转换(Network Address Translation)的缩写,是一种将私有IP地址转换成公共IP地址的技术,它主要用于局域网与公网之间的通信。NAT的作用是在一个私有网络中,通过转发指定端口的方式将多个内部设备共享一个公共IP地址,从而减少公共IP地址的使用量,同时外部用户访问该地址时无法判断有多少内部设备,也增强了网络的安全性。
网络穿透,俗称“打洞”,也就是在NAT环境下用于建立设备之间直接通信连接的技术。
在NAT环境下,一个具体的私有IP地址无法直接被公共网络访问,因此需要通过一些技术手段,如端口映射、DMZ、虚拟服务器、UPnP、NAT-PMP等,来建立公共网络与私有网络、私有网络与私有网络之间的通信连接。
通过将宿主机PC的部分端口转发到路由器上,我们就可以实现在公网连接路由的IPv6地址,直接连接到宿主机上,实现远程串流控制。
光猫:通常由运营商提供,负责将入户的光纤-光信号,转化为可以被多数设备解码的电信号,通常承担家庭网络拨号的功用;
路由器:通常由家庭购买,将光猫的网络信号转换为WiFi信号使用,也支持上网设备直接通过连接网线的方式进行上网;
对外,光猫负责使用我们的帐号密码进行拨号上网(PPPOE),将我们的网络注册到运营商内,再通过运营商访问公网;对内,路由器将光猫的宽带信号进行桥接转发,并在自己的网关下连接各式各样的设备,实现各类设备的上网访问。
也许你还会有一些其他设备,比如UU盒子、软路由、交换机等等,这样网络拓扑就会更为复杂,本文不做展开。提供一个判断依据:只要你的PC不是通过这些设备再连接的路由器,就可以按照下文的方法进行远程串流的设置。 如果你的网络拓扑无法简化成以上图片样式,建议尽可能做物理调整。
请注意,以下这些操作为非必要操作!
在上述基础网络拓扑图的基础上,我们可以通过设置光猫桥接与路由器拨号,对网络质量进行提高。
我建议在做好充足备份的前提下,进行相关操作:在宿主机上登录光猫网关,网关地址可以在光猫背后查看,同时记录下对应光猫的设备型号,方便后续搜索超管密码,建议拍照省事。
1. 获取光猫超级管理员帐号密码,并确认自己宽带账号密码。
2. 登录光猫后台,寻找宽带设置部分,将原有拨号方式改为桥接。
找到网络-宽带设置,不同型号光猫配置位置不同,但是界面相似;
找到写有“INTERNET”的链接,进行勾选,此时下方表单会刷新会对应的配置内容,截图保存备份;
将IP协议版本改为“IPV4/IPV6”,这样后续拨号时可以获取到IPV6的公网地址;将连接模式改为桥接;
保存配置,退出光猫后台。
4. 完成以上操作,在PC上能够正常联网访问内容就代表配置生效啦!
了解清楚以上这些后,我们要通过软件和公网的能力,在宿主和用户之间建立起联系。
本章节中,我将会根据自己之前使用的经验来介绍以下几种主流远程串流的方案和相关配置操作:
Parsec
Parsec+Zerotier
Moonlight+Zerotier
宿主机(家中闲置的PC)
用户端(商务本、手机、平板等任何你想用来远程串流玩游戏的设备)
HDMI显卡欺骗器
价格:10~30
用来在关闭外接显示器时让显卡能正常运转,若不使用显卡器欺骗器则只有核显运转
智能插线板
价格:< 100
支持直接连接公网,推荐向日葵C1Pro或向日葵智能插线板;
如果购买小米智能插线板,需要确认家中是否有蓝牙网关(小米音响等),如果仅购买一个智能插线板是无法使用的!(小米你罪大恶极!)
在软件工具的选择上,我主要选择了Parsec、Moonlight两款串流软件,并选择通过Zerotier来进行虚拟组网(网络穿透,俗称打洞),绕过一些可能无法解决的客观网络问题。Stream Link 在局域网内串流表现尚可,但在公网远程串流中延迟等表现不佳,故不做考虑。
适用平台:Windows、Web、MacOS、Android、Linux
登录时需要解决网络连接问题
建议直接外接手柄或键鼠操作,触屏操作兼容差
适用平台:Windows、MacOS、Android、LInux
仅支持N卡,A卡用户无法使用
未尝试宿主机上直接操作,不确定是否会与串流操作冲突
需要手动设置才可展示桌面,若不设置仅能选择GeForce Experience识别出的游戏进行游玩;
Moonlight在宿主端识别上问题较多(我经常出现识别不到的情况,需要删除后重新添加),每次删除主机重连需要手动在宿主端输入验证码;
适用平台:Windows、MacOS、Android、IOS、Linux、FreeBSD、NAS
通过Web端可以直接管理虚拟网下设备情况
免费版对网速和带宽没有限制,支持添加30个设备;
在实际使用过程中,我仍建议配合向日葵进行一些辅助操作。从实践经验来看,以上两款串流软件虽然在游戏表现极佳,但是如果要做相关的界面操作仍需要依赖键盘鼠标,在平板、手机上的交互并不理想,而向日葵在移动设备上对手势操作有比较好的支持。
此方法要求宿主端与用户端均拥有公网IPv6网段,才可直接连接。
1. 在官网根据机器类型,在宿主机和用户端完成软件的下载与安装
2. 注册账号,推荐使用163、Gmail等邮箱,QQ邮箱可能会出现问题
3. 客户端登录:设备首次登录时会提示有一份邮件发送到注册邮箱需要你手动确认,记得去垃圾邮件里翻一翻;点击按键确认后关闭页面,重新在帐号密码处选择Login即可登录成功
4. 在宿主端与用户端都完成登录后,你可以在用户端的Parsec中看到你的PC(记得不要挂载在同一个WiFi下,用手机热点之类的去进行尝试),点击“Connector”,即可开始游戏!
这里可以看到我顺利连接后的网络延迟状态,基本在一个游戏可用的状态。整体延迟会分为编码、解码、传输三个部分,通常网络部分对画面流畅度影响最大。对于多数游戏来说 Parsec的延迟是可忽略不计的,如果非常关注延迟,我们还可以通过设置不同分辨率、串流带宽等方式进行优化。
如果出现了各类复杂的网络问题(譬如6101、6023等问题),其实可以通过使用“Zerotier”软件来组建虚拟网来进行解决。
点击“Create A Network”,创建一个虚拟网,系统会默认创建你的网络ID和名称。
取消选中“IPv6 自动分配”部分中的所有复选框(如果选中),到这一步虚拟网已经可以使用了。
在宿主端和用户端下载Zerotier应用,打开后选择 “Join New NetWork”,复制刚才创建的网络ID粘贴,即可完成虚拟网的加入申请。
5. 重新回到Zerotier的网络详情页面,滚动找到“Members”这一栏。你会看到设备已经被添加到对应网络中,并分配了一个虚拟网的IP地址,此时需要勾选最前端的方框进行授权。
6. 勾选宿主、用户端的地址进行授权,此时机器已顺利加入虚拟网。
7. 重新尝试连接Parsec,若连接成功即可直接使用。如果没有,还需要在宿主端上将Zerotier设置为最高优先级,此处以Windows为例。
8. 按 Windows 键 + R,键入 control netconnections 单击确定。
9. 右键单击 ZeroTier One,单击 属性 ,然后单击 Internet Protocol Version 4 ,然后单击 属性。
11. 在每一层窗口上点击 确定 以应用设定!每一层!
12. 完成后,对列表中可用的非 ZeroTier 网络重复这些步骤,将自动越点设置为大于 1 的数字。主要是要将以太网或者WiFi设置为跃点2以上,看你具体PC联网的方式。
这一步是为了调整默认接入网络方式,调整跃点后PC将会默认先通过Zerotier去链接Parsec,由于虚拟网内机器可以相互访问,就绕过了ipv6的限制问题。
14. 此时,Parsec应该在Zerotier虚拟网中进行正常访问。
2.5 方法三:Moonlight+Zerotier
Moonlight 作为N卡驱动的一个局域网串流工具,虽然不具备直接p2p连接的能力,但是通过和Zerotier的组合能够实现流畅的公网串流。作为Moonlight串流的前提,我们的PC上需要安装GeForce Experience并开启串流功能。
Zerotier的配置请参考 2.4中 Zerotier注册与使用。
宿主端下载GeForce Experience并完成安装。
登录GeForce Experience,选择 设置-常规 取消实验性功能的勾选。
3. 选择 SHIELD 选项卡,开启Game Stream功能;此时所有N卡可识别的游戏即可通过Moonlight进行连线使用。
4. 手动点击 添加 按键,在 C:\Windows\System32 目录下找到 mstsc.exe 进行添加;这是Windows默认远程桌面控制的功能,Moonlight可通过此功能实现远程桌面控制。
5. 根据自己所玩游戏类型,在SHIELD中添加对应游戏的.exe执行方式,即可快捷打开。
如果首次进行Moonlight串流配置,建议在同一个物理WiFi下添加宿主机会更方便一些;
开启Zerotier,将用户设备加入到虚拟网;
*如果你的PC是Win11系统,为避免可能存在的GPU问题,需要在主机 PC 上禁用硬件加速 GPU 调度。使用“开始”菜单打开“图形设置”,然后单击“更改默认图形设置”,并将“硬件加速 GPU 调度”选项设置为关闭。
3. 开启Moonlight,此时将会自动搜索局域网内开启了相应功能的PC,若连接正常,将自动识别出PC设备,并在屏幕上以加密形式展示;若无法连接,同一局域网下请输入PC的路由IP,若通过Zerotier组网,请输入Zerotier中的Manged IPs。
4. 单击弹出窗口,将对应PIN码在宿主端输入,即可完成串流匹配。
5. 在正式开始串流游戏前,推荐进入设置手动修改码流带宽。以手机作为游玩端为例,通常建议将分辨率设置在720p,码流设置在5-8Mbps即可,默认20Mbps的码流实际有些过高。若对帧数有要求,记得勾选高级设置中解锁全部可用帧率。
完成以上网络配置和操作之后,我们仅需要将电脑与只能插座连接,就可以实现随时随地远程开机串流玩游戏的目的了。此处以我自己日常玩游戏的流程举例说明(我使用了向日葵C1PRO):
打开向日葵远程控制 App,直接远程命令宿主机开机;
开机后直接通过向日葵登录PC,完成Steam开启游戏等需要鼠标操作的动作(我会开个模拟器挂机用);
切换Parsec,直接用蓝牙连接手柄进行游戏。
游戏完毕后,直接向日葵控制远程关机即可。
如何让Parsec、Zerotier等软件开启启动?
按 Windows 徽标键 + R,键入“shell:startup”,然后选择“确定”。这将打开“启动”文件夹。
将想要开启启动软件的 快捷方式 拖入到 启动文件夹即可。
Error Codes -800:无法查看到登录的宿主机
需要通过一些手段解决网络连接后进行登录,登录后实际传输并不依赖相关设置。
Error Codes - 6101 :网络连接被拒绝
通常由于网络波动造成,重试几次即可恢复。如果持续出现6101问题,建议重新连接Zerotier等进行重试。
Error Codes -6023:网络协商失败无法建立连接
就个人经验来看,6023是最常见且最为棘手的问题,处理方式如下:
如果出现6023问题,请先根据 1.7 光猫桥接与路由器设置 减少一层路由缓冲,重新进行尝试;
修改路由器,配置端口转发规则或开启DMZ功能将宿主端设置为DMZ机器;
若仍出现该问题,建议配合Zerotier设置,基本能解决99%的问题。
MacOS运行Zerotier后提示:Waiting For Service
搜索打开 “终端”或“Terminal”,在其中输入以下语句:
cd /Library/Application\ Support/ZeroTier/One
sudo ./zerotier-one -d
2. 提示Password,此时输入解锁密码并回车确认。由于输入内容不会以 * 号方式展示,所以大家输错的话重新试几次就可以。
3. 输入成功后,应该不显示任何内容,如下图所示:
4. 此时在右上角选择 Zerotier 服务,即可正常加入网络并进行使用。
原本只是想跟大家分享一下远程串流的设置方式,没想到又解释了一堆基础的网络概念和设置方式,可能观感上有些冗长,实在不好意思。希望大家都能够顺畅的解决各种各样奇奇怪怪的问题,有什么特殊问题也可留言私信我,我尽己所能帮大家解决。
在变动颇多的2022年,远程串流陪我在高铁、机场度过了许多忙碌工作中偷闲得来的快乐日子。
即便是在酒店写方案到凌晨2点困得睁不开眼,但当我想到我可以随手打开手机,连上家中的电脑,享受到不带丝毫折扣的3A游戏的快乐,也会觉得有一些小小慰藉,从而有了继续努力下去的勇气。
游戏对我而言是一丝慰藉,一条道路,一种我可以逃避工作烦恼,享受生活的可能性。
评论区
共 29 条评论热门最新