前期说明
RD Client 没法串流,向日葵带宽受限,同时也没办法打游戏。那么可不可以自己实现一台云电脑来实现云游戏呢?答案当然是可以的了,下面文章将进行介绍Parsec
远程电脑的三种方案,快速跳转链接
这是我目前使用的终极远程桌面方式了,我之前写过通过IPV6实现微软远程桌面访问,以及利用frp实现内网穿透,感兴趣的朋友可以看一看。
使用Parsec 的话,个人所知主要有以下几种方式,这里主要介绍的是第五种方式,但每一种方式如何设置,通过这篇博客,都进行说明了。写这篇博客的目的也是为了日后自己更换环境可以快速进行配置。
序 | 方式 | 优点 | 缺点 |
---|---|---|---|
1 | 在局域网内使用Parsec | 没有那么麻烦的配置过程,两个设备都登陆Parsec就好了 | 受到地域限制,不能局域网外使用Parsec,达不到云电脑云游戏的目的 |
2 | Parsec + 公网ipv4 | 无需繁琐的配置,畅联云电脑 | 公网ipv4太难申请,运营商不给,只需要一台设备有公网ip就可以了 |
3 | Parsec + 公网ipv6 | 运营商都提供动态的公网ipv6,可以畅联云电脑云游戏 | 需要支持ipv6的路由器,并开启ipv6,这里有详细的配置教程。不适用于校园网等无法修改网络的情景。两端设备都需要支持ipv6 |
4 | Parsec + Zerotier | 解决了Parsec出现6023等的问题,可以实现虚拟局域网,从而相互连接到 | Zerotier的服务器在国外,延迟比较高,通常400ms以上,没法流畅体验 |
5 | Parsec + Zerotier+ moon | 个人认为这是一种可以不改变网络结构最好的办法 | 配置比较繁琐,需要耐心,同时需要一台国内的云服务器(因为这样才有一个公网ipv4地址),配置带宽都无所谓,后面会详细进行介绍 |
用记号说明以下,这样看的比较清晰
主控端电脑:A 云服务器:B 被控端电脑:C
1、Parsec 官网进行注册
parsec 官网地址: https://parsec.app/ 下载登录注册,一气呵成,在被控端电脑C和控制端电脑A都要进行下载。软件打开之后的界面就是这样,我这里面就是两台电脑,因为我都配置好啦。两台电脑上面登录同一个账户就好了,这样可以直接点击Connect进行连接了
可以在设置中改一些能够优化的地方:
Settings —— NetWork——UPnP打开Settings —— Host—— BandWidth Limit——50Mbps(按自己实际的网络进行选择就行了)方法1,2,3,4,5都需要进行这一步的设置,但是前三种方法到这里关于Parsec的设置就都已经结束了,可以进行远程操作啦。
2、Zerotier注册+配置
Zerotier官网地址:https://www.zerotier.com/ 注册下载登录,一气呵成,在被控端电脑C和控制端电脑A都要进行下载。这是我登录之后的页面,我们要做的就是创建一个虚拟的网络,同时将每一台设备都要加入到这个虚拟网络中去,把所有的设备都放到虚拟的局域网中,自然就可以进行连接了。Zerotier这个方法,也是Parsec官方推荐在无法直连的情况下采用的方法。这是官方给出的关于zerotier的使用教程,官方教程给个更为详尽,我写的这部分看不懂的建议看官方教程,博客的核心目的是第三步搭建moon,而非教这个软件如何使用。
点击中间的Create A Network创建一个新网络,点进去,在name出起一个名字,记住NetWork ID,这个界面别关,这个是关键,在主控电脑A 和被控电脑C上面都打开Zerotier软件,这个软件没有窗口,只能子啊右下角点开—join New Network,输入前面获得的Network ID,输入之后,在Zerotier网站(刚才没关吧),同意一下这个网络的申请加入请求,同理对所有的两台设备都进行申请就可以了。
当两台设备的网络都加入了之后,我们就可以看看这两个网络是否可以连通啦!上面给出了局域网的IP,我们ping一下就好啦,如果ping不通,可能的原因一个是路由器禁ping了,或者是没有加入局域网成功,可以依次进行排查
可以看到我是ping成功了的,值得注意的是,第一个ping的延迟是353ms,因为这是通过Zerotier官方的服务器找到的我的那台主机,而官方服务器是在海外的,因此延迟会很高,但是会发现接下来的三次延迟很低,这是因为我配置了moon进行中转操作,通过自己的服务器从而找到两台主机,之后进行p2p传输,这才是这篇博客的核心丫!!!只有低延迟,才能保证云游戏的实现,下面就开始讲解核心部分啦!
3、通过搭建moon中转,实现低延迟
准备工具:
除了主控设备A 被控设备C
更需要一台国内中转服务器 B,配置无所谓,带宽1M还是100M都无所谓,它的作用不是转发你的流量,他的作用通俗将是通过这台服务器找到主控设备A 和 被控设备C,无需通过Zerotier官网的海外服务器来搜索,类似于DNS服务器的作用把。服务器买最便宜的就行了,一年不到50块钱那种就足够了
3.1服务端配置
服务器端 B上面安装Zerotiercurl -s https://install.zerotier.com/ | sudo bash
将服务器端B 加入到虚拟局域网中,请将网络ID这四个字替换成你之前建立的虚拟局域网的16位ID,别忘了在Zerotier网站上也同意一下加入网络 zerotier-cli join 网络ID
生成moon.json文件 zerotier-idtool initmoon identity.public > moon.json
修改moon.json vi moon.json # 用vi编辑器修改就好了,进入输入i进如编辑模式,将ip和端口号输入进去之后,按ESC 输入:wq保存退出
“stableEndpoints”: [“服务端B的ip/9993”]
说明:注意引号 ip为服务端的公务ip地址,后面的端口号是moon的端口,别忘了在服务器提供商开启9993的端口
生成签名文件,这一步之后会生成一个000000xxxxxxxxx.moon的文件,同时把这个文件下载到本地,之后要用zerotier-idtool genmoon moon.json
将这个文件移动至moons.d文件夹,注意把文件名替换成你自己的 mkdir moons.dmove 000000xxxxxxxxx.moon moons.dservice zerotier-one restart # 之后重启服务器端B的Zerotier
3.2 主控制端A 和 被控制端B 设置
在Zerotier的安装目录下,创建moons.d文件夹,并把之前下载的000000xxxxxxxxx.moon的文件 复制到里面就好啦,两台电脑都要这么做哦
安装目录处于Windows: C:\ProgramData\ZeroTier\One
接下来这一步是非常非常关键的,在windows自带的搜索,搜索服务,在服务中找到Zerotier One 右键重新启动,主控制端A和被控制端C都要进行这一步操作!!!如果不进行这一步操作,是无法加入moon中转的!!!至此所有步骤都已完成
4、检查是否成功
主控制端A和被控制端C中各自打开cmd命令行输入zerotier-cli listpeers
看一看是否开启成功,找到moon这一行,看看是否有-1,如果有就是操作失败了,检查一下上述步骤哪一步出现问题了。简单介绍一些几个概念
PLANET 行星服务器,Zerotier 根服务器
MOON 卫星服务器,用户自建的私有根服务器,起到代理加速的作用
LEAF 网络客户端,就是每台连接到网络节点。
给大家展示一下最终的效果图吧,我就是采用Parsec+Zerotier+moon实现的,这是跨了两个省的延迟,15.13ms,连打游戏都足够了,更何况别的呢,我把UID打码啦。可以看看最上面的数据,还是可喜人哒,主控端A是1080p的,所以我就开的1080p,你主控设备A屏幕分辨率是多少,你就开多少就行了。
参考资料:
ZeroTier跟moon搭建国内内网穿透 http://t.csdn.cn/grYPo远程学习(一):基于ZeroTier的异地组网及Moon转发节点搭建 http://t.csdn.cn/fPPu1使用Zerotier在私有云服务器中搭建Moon服务器 http://t.csdn.cn/DLEZi5、Q&A 环节
有问题欢迎留言,我收到后会及时补充到QA环节中的
Parsec 出现 6021或者6023错误怎么办? 这就是没有公网ip,需要使用方法3,4,5之后的任意一个方法
Parsec出现800错误怎么办?
这其实比6021或者6023错误更烦,说明你连账号都登陆不了。。。。给电脑开个热点,登上账号就好了
服务端B 的配置需要很高嘛?
不需要,服务端B只是充当一个类似DNS服务器的作用,最终我们连结后的游戏是通过peer to peer 也就是P2P进行传输的,是不会走你的服务端B的流量了
为什么按照你的配置之后延迟还是很高?
如果延迟高的话可能是moon服务器没有起作用,通过第四步的命令看看是否开启成功,此外,路由器一定一定一定要开启UPnP功能!!!!!主控设备那端开启就好了