专栏/Zerotier+Moonlight 远控方案畅玩游戏,一文看懂如何配置操作!

Zerotier+Moonlight 远控方案畅玩游戏,一文看懂如何配置操作!

2023年10月11日 12:58--浏览 · --点赞 · --评论
hippoempire
粉丝:14文章:20

对于我这种 GalGame 爱好者来说,有时坐在电脑前玩 Gal 总想躺下来看着平板玩。这个时候就又用回之前在大学时使用的 Steamlink 远控方案了,但我发现 Steamlink 的弊端是数据还要上传到 Steamlink 的远程服务器上然后再传回来,在局域网内这非常不优雅。不过 Steamlink 这个能在公网上用,实际体验还算 OK。


模拟器+公网串流,躺在家里玩工位的电脑(野炊已入正)

不过,我想要有一套能在公网和局域网内都能爽快使用的远控方案。那么,为了能躺在床上推 Gal 和打游戏,来折腾一下一套新的远程方案吧!


远控方案构成

我使用的是 Zerotier One + moonlight 的一套控制方案,被控端(PC)使用 Zerotier One + sunshine 的一个输出,用 todesk 作为意外时的备份手段。电脑是长期开着的,所以没有考虑用一个远程插座。最后实际框架如下:

简单的整体架构图

在局域网下,我们并不需要用到 Zerotier,只需要 Sunshine+moonlight 便能实现对被控端的控制。因为 Nvidia 停止了 PC 端的 moonlight 串流服务,所以我们用后继开发者留下的 Sunshine 来做被控端的串流操作。下图展示了局域网中的环境,因为大家都在一个网段里,所以数据可以直接通过路由表转发前往其它设备,而不需要经过过多的流程。

局域网下的连接情况

在公网上就比较复杂了,因为公网的情况一环套一环,并不会像局域网那样有着简洁干净的网络环境。由于公网经过了运营商、Internet 等多方的参与,网络环境混乱,不可能直接连接到我们要求的一个对应设备上。这就非常麻烦。

比如下图,路由器给 PC 也就是被控端分配了一个内部网地址,然后光猫给路由器下的所有内部网都分配了一个大型网段的公用 IP。通过 NAT 技术,路由器下的内部网可以使用公用 IP 直接访问到公网上的东西,比如 Internet 。但在公网上由于网段的不同,会导致我们寻找其它设备非常困难。可以看到我们的 PC 和想要连接的手机设备,它们的 IPv4 地址完全不一样,网段都天差地别。就算它们的公用 IP 地址在同一个大型网段内,也会因为运营商的问题而产生寻址过慢导致连接缓慢的情况。

而且我们考虑的太过理想,有时候手机等主控设备也会在一个小的内部网段内,然后甚至也会被分配 192.168.1.1/24 的 IPv4 地址。这个时候想要从公网 IP 找到对应的一个手机设备真的很难。

公网下的连接情况

虽然我们可以通过 NAT(Network Address Translaction)来实现从内网到公网的一个透传,更细致的情况甚至能用 PAT(Port Address Translation)来做到。但缺陷是我们不能用 NAT 或者 PAT 来实现公网到内网的一个访问,因为这是不安全的。而且在技术上也不好处理,容易造成网络地址的混乱。所以为了安全访问内网,我们需要相应的技术来映射内网内的设备,这也被称为“内网透传/内网穿透”技术(NAT 穿透技术)。

传统内网穿透技术会经过 FRP 中转服务器,通过公网 IP 慢慢去找对应设备的私有地址。这里的技术涉及反向代理和防火墙穿透。不能说不能用,只是这个方案真的很慢。因为找公网 IP 就跟查表一样,几亿的表单放哪台机子都不会查得很快。具体技术会在后边介绍。

img
传统的内网穿透原理

在公网上,为了更高效实现设备与设备的一个连接,我们需要一个相应的软件来做设备间的识别。这个方案就算 P2P 方案,也是俗称的“打洞”。这个方案就直接把两台机器在端到端层面给连接起来,不需要去考虑复杂的公网状况。但是,它们在连接的时候需要保障端到端上应用的正常运行,这就是为什么被控机和主控机都需要 Zerotier 这种虚拟组网软件。

img
P2P内网穿透原理





配置看这里!我要远控玩游戏!

软件安装

需要安装的软件

Moonlight + Zerotier 打洞方案

主控端:Moonlight     https://github.com/moonlight-stream

被控端:Sunshine      https://github.com/LizardByte/Sunshine

无论主控还是被控都需要安装:Zerotier One  https://www.zerotier.com/

版本看自己机型对应

Steam link 方案

主控端:Steamlink app 或者客户端,官方下载地址:https://help.steampowered.com/en/faqs/view/7112-CD02-7B57-59F8

被控端:Steam 客户端,并在客户端内开启远程畅玩:设置 ——> 远程畅玩


注意!Sunshine 推流的时候要在防火墙给对应端口放行!直接把防火墙关了就行!


打洞方案的软件配置

局域网下软件配置

被控端

准备好 Sunshine

点 .exe 文件启动即可

sunshine 客户端启动

然后在你的浏览器输入  https://localhost:47990 ,进行一番密码设置,便能进入 Sunshine 的控制界面啦!

sunshine 控制台界面1

点击箭头区域进入

sunshine 控制台界面2

然后输入主控那边的 PIN 码即可配对连接

其余设置基本不用管,如果要专门调节画质啥的就在 “Configuration——> General”内进行调节

主控端

移动端下好 moonlight app 并启动,点击下方的 “+” 号

moonlight 界面1

进入后输入对应的被控端 IP 地址即可,公网下的 IP 地址在 Zerotier 这种虚拟组网软件上查看

moonlight 界面2

对应 IP 由路由器分配,输入至上方 Moonlight 内即可识别

添加后我们便能在主界面看到对应的机子了,但是是有个锁头样式的。点击被锁住的机子,会出现一个 PIN 码,我们将 PIN 码在被控端上的 Sunshine 内输入,便可以连接游玩了。


win上看 IP

在被控端按 win+R,输入 cmd,点“确定”

cmd 命令

输入 ipconfig

ipconfig

然后在对应的接口看 IP,一般不是 WLAN 就是以太网这两个栏目里看

wlan 的地址,以太网同理

Linux 上看就不用说了,不会看 IP 就说明不会用 Linux


移动端上看 IP

自己找网络点进去看,都有的。不过用 moonlight 远控手机玩游戏还真有点抽象。

不过现在很多手机厂商都有做手机到电脑的投屏操作,应该也用不到这边的方案。


公网下软件配置

前置,Zerotier 网页配置

进入网页,登录

登录 Zerotier

进入页面后点 "Create A Network",这里也可以点 “Download” 下载各个平台的软件。创建好网络后,点进去。

创建网络

记住这张图上的 NETWORK ID,这是之后设备加入网络后的凭证,后边在被控和主控上都要用。但不是说你真的要拿笔记下来就是了。

这里也可以改你的网络名字,下方的“Access Control” 通常选 Private 而不是 Public,如果你不想别人随便连你的网络的话。

Network ID 很重要

往下拉,在 IPv4 Auto-Assign 这一栏可以修改这个网络里的 IP 前缀,想要什么就改什么

可以修改网段

拉到最关键的一栏,在 Members 中将管理你所添加至网络内的全部设备。在你将设备加入网络后,点击前边的 “Auth?” 进行授权,要不然无法让这个设备在网络上启用。

注意,下图中的 “Address” 一栏是 Zerotier 给你的设备赋予的唯一地址,你在安装好 Zerotier 设备后就已经赋予了。无论之后后边的 "Managed IPs" 如何变化,“Address” 内的地址都唯一标识你这一台设备。

Zerotier 主要的操作界面



被控端

准备好 Sunshine 和 Zerotier 软件

启动 Zerotier,我们将在右下角的小图标内找到它。右键,选择 “Join New Network”。输入上方我多次强调的 "Network ID",加入至虚拟网络内。然后,在 Member 内给加入进来的设备打上 “Auth?” 的小蓝勾。

win 端加入 zerotier 网络

在完成了 Zerotier 的启动后,我们需要做推流。这时候就要用到 Sunshine 了,这里没什么好说的,点 .exe 文件启动即可

sunshine 启动

然后在你的浏览器输入  https://localhost:47990 ,进行一番密码设置,便能进入 Sunshine 的控制界面啦!

sunshine 控制台界面1

点击箭头区域进入

sunshine 控制台界面2

然后输入主控那边的 PIN 码即可配对连接


其余设置基本不用管,如果要专门调节画质啥的就在 “Configuration——> General”内进行调节

主控端

Zerotier app

移动端下好 Zerotier app 并启动,点下方 “ADD NETWORK”,然后进入后输入 Zerotier 的Network ID,最后拖到最下边 “ADD” 即可。

zerotier app 界面1

zerotier app 界面2


Moonlight app

移动端下好 moonlight app 并启动,点击下方的 “+” 号

moonlight 添加 zerotier 网络和局域网同理

进入后输入对应的被控端 IP 地址即可,虚拟网络内的 IP 地址在 Zerotier 这种虚拟组网软件上查看。对应 IP 由 Zerotier 分配,输入至上方 Moonlight 内即可识别(记得要在被控和主控上都打开 Zerotier)

添加的 ip 一定是 zerotier 给你分配的虚拟 ip

添加后我们便能在主界面看到对应的机子了,但是是有个锁头样式的。点击被锁住的机子,会出现一个 PIN 码,我们将 PIN 码在被控端上的 Sunshine 内输入,便可以连接游玩了。




对了,其实也可以在 ipconfig 里边看到 Zerotier 开的 VLAN 信息 (^_^)

zerotier 开了后能看到创建了一个 vlan




太卡了,我要更快更稳定的连接!来看看 Moon 服务器搭建方案吧!

众所周知,Zerotier 在打洞的时候走的是 Plant 服务器来进行连接,然后 Plant 服务器大多在国外。所以你需要一个稳定的梯子来连过去。但是梯子自己也限制流量啊,所以我们实际是跑不满自己的网络带宽的。

为了更好的连接,我们需要一个国内的服务器来做中转。所以说,Moon 服务器方案需要一台云服务器,这得花些小钱钱了,不能白嫖哩。

注意,moon 服务器不支持连接移动端,如果只拿移动端串流的小伙伴需要自己找找有没有大佬破解的 zerotier app 的移动端限制。

Zerotier 支持自建中转服务器。Zerotier 自己提供的服务器被称为 Plant 服务器,用户自己搭建的服务器被称为 Moon 服务器。当然,也有大佬做出了 Plant 服务器的自建方案,这个大伙儿自己去找对应教程吧。

首先买服务器这些就不用我多说了,拿到一台服务器后开始操作!服务器上安的是 Linux 系统


  1. 安装 Zerotier

    curl -s https://install.zerotier.com/ | sudo bash

    确认是否安装成功

    zerotier-cli info


    输出 200 info XXXX 1.10.2 ONLINE  就成功

    上方的 XXXX 就是这台设备的 Zerotier Address


  2. 将服务器的 Zerotier 加入网络

    zerotier-cli join 你创建的网络分配的id


    输出 200 join OK  就成功


  3. 创建 Moon 文件

    chmod 777 /var/lib/zerotier-one
    cd /var/lib/zerotier-one
    sudo zerotier-idtool initmoon identity.public > moon.json
    sudo vim moon.json

    在 moon.json 删除所有内容后中输入以下部分:


    {
    "id": "eb444ec0d8",
    "objtype": "world",
    "roots": [
     {
      "identity": "eb444ec0d8:0:55f55633d3234c76d69dfe19742c6e002f2dada7e03f1a6e756353ed5c933171c8543a2a1796134c034a5c189def154cd8d465f05298d16c358746f2c2075ece",
      "stableEndpoints": ["服务器的公网IP/9993"]
     }
    ],
    "signingKey": "f0c4f0b645f480be69054f6eb04fbba53d1b61c617cbf489df544956a5c0fa39a16b13882099f98a91011e817da2b1c8d15032d300f10e2d4629e333fa4459c8",
    "signingKey_SECRET": "9af8bb728b9aaa258108dadc203abeccb82bd563411054c78196da3aa02e6dd6d3535407d7ae3363734628f65b968db98220933d978d47906d0f9403eb720361",
    "updatesMustBeSignedBy": "f0c4f0b645f480be69054f6eb04fbba53d1b61c617cbf489df544956a5c0fa39a16b13882099f98a91011e817da2b1c8d15032d300f10e2d4629e333fa4459c8",
    "worldType": "moon"
    }


    然后输入 :wq 退出


    sudo zerotier-idtool genmoon moon.json

    这里成功运行会在当前目录下生成一个 .moon 的配置文件,长这样: 000000eb444ec0d8.moon

    我们将这个 .moon 配置文件放到 moons.d 的文件夹中即可

    sudo mkdir moons.d
    sudo mv 000000eb444ec0d8.moon moons.d/


  4. 在服务器的防火墙给 moon 打开的端口放行

    这个看自己的服务器的防火墙规则在哪儿,然后给 moon.json 文件里边设置的端口放行即可

  5. 重启 Zerotier

    systemctl restart zerotier-one.service


  6. 在其它端添加 moon 服务器并测试 moon 服务器的情况

    是的,你还需要在其它设备上(windows)来添加 moon 服务器,不然会识别不到(因为 Zerotier 默认走最短跳数,如果你挂着梯子直接往外跑了)。

    找到你的 zerotier 安装处,默认安装位置如下:

    Windows: C:\ProgramData\ZeroTier\One
    Linux: /var/lib/zerotier-one
    FreeBSD/OpenBSD: /var/db/zerotier-one

    我是在 windows 上操作的,所以用 win 上边的 zerotier-cli.bat 文件进行操作。这个文件需要管理员权限的 CMD 来执行,所以我们需要以管理员身份运行 cmd.exe

    cmd 的默认位置:

    C:\Windows\System32\cmd.exe

    右键以管理员身份运行即可

    然后输入下方命令:

    cd C:\ProgramData\ZeroTier\One

    zerotier-cli.bat orbit 服务器的zerotier_address地址 服务器的zerotier_address地址(两次)
    示例:zerotier-cli.bat orbit XXXX XXXX

    输出 200 orbit OK 就完成了


    zerotier-cli.bat listpeers
    没问题的话上方命令就会显示你的服务器作为 moon 节点了

    没啥问题设置就完成了!开玩吧!


Steamlink 连接方案的软件配置

被控端

下载 Steam 并登录

进入设置

点击进入

在“远程畅玩”内的“配对 Steam 流式应用”输入配对码配对主控设备

配对 PIN


主控端

下载 Steam link 并打开,进入设置

主控端页面

选择计算机,其它选项在实际流式传输中自己看情况调整

点点点

如果已经配对过了,选择对应计算机回到主菜单运行即可

如果没有配对被控设备,选下方的“其它计算机”,然后在被控端输入 PIN 码即可

点击然后在对应计算机输入 PIN 码

然后回到界面点击开完即可。不过 Steamlink 实际体验下来,由于墙的问题,连接并不是很流畅。


投诉或建议

玻璃钢生产厂家花都区玻璃钢人物雕塑河北商场创意商业美陈定制辽宁户外景观玻璃钢雕塑玻璃钢雕塑人物报价招标清单黄骅玻璃钢胸像雕塑成都玻璃钢考拉雕塑公司安徽欧式玻璃钢雕塑定制浙江季节性商场美陈供应商军人浮雕玻璃钢仿铜雕塑实用的玻璃钢雕塑商丘玻璃钢卡通雕塑价格公园卡通玻璃钢雕塑定制玻璃钢梅花鹿雕塑摆件东港玻璃钢雕塑浙江大型商场美陈订购佛山玻璃钢仿铜雕塑如皋玻璃钢雕塑制造厂家户外玻璃钢雕塑施工建瓯玻璃钢艺术雕塑批发河南周年庆典商场美陈制作党建文化玻璃钢人物雕塑规定贵安新区玻璃钢雕塑定做果洛玻璃钢雕塑定制商场顶上美陈挂饰江苏大型主题商场美陈市场价玻璃钢雕塑迎宾深圳特色商场美陈市场价嘉兴玻璃钢雕塑定制莱州玻璃钢动物雕塑好看的玻璃钢艺术雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化