前言

自己电脑资料比较多,各种软件常年不关,便想找个比较理想的远程方案随时随地控制电脑,折腾了半天也算研究的差不多了。主要解决两个问题,如何远程开机,以及如何流畅地远程连接。

我最终选择了自带WOL功能的路由器实现开机/唤醒,用Rustdesk自建服务器的方式远程连接,实测下来效果还是不错的。

因为涉及到很多设备、软件的选择,每个人的配置和方案都不同,因此并不是精简具体的教程,大概讲一下思路与关键设置,比较杂,各人要按需配置。

远程开机

远程控制第一步,先把电脑给开了再说。目前主流方案是利用WOL(网络唤醒,Wake On LAN)功能来启动电脑,原理是现代电脑睡眠/休眠/关机状态下主板仍可以对部分硬件(网卡)保持供电,对于支持WOL的网卡与主板可以通过向网卡发送相应的数据包来唤醒电脑。

这一步你需要设置路由器、BIOS、以及操作系统,你需要有一台带arp绑定/DDNS/端口转发的路由器以及公网ip,或者直接带有WOL功能的路由器。还需要支持网络唤醒功能的电脑(基本不是老古董都支持)。

我的配置:windows11专业版,华硕B660-A WIFI D4主板,Intel I225-V网卡有线连接华硕RT-AX57路由器,官方固件,动态公网IP路由器拨号,使用华硕路由器app自带的WOL功能唤醒。

BIOS

进入BIOS设置,找到启用网络唤醒(也有可能叫WOL、Wake On LAN或者通过PCIE设备唤醒以及类似的名字,通常在电源管理里找),选择打开,大多数主板这个功能应该是默认开启的,如果你的主板有省电模式,如果你打开它可能会关闭网络唤醒功能,注意检查。另外,如果你的主板支持来电后恢复或者开机也可以打开,以避免意外断电恢复后主板不给网卡送电。

操作系统(windows)

以win11为例,在设备管理器 -> 网络适配器 -> 你正在使用的有线网卡 -> 属性 -> 电源管理,把三个选项全部勾上。如果没有这个界面请尝试更新网卡驱动。少数网卡可能需要在高级页面调整设置,一般保持默认就可以了。

网卡电源管理

如果你的系统是windows10及以上,在控制面板 -> 电源选项 ->选择电源按钮的功能,取消“启用快速启动”,如果无法更改,请点击“更改当前不可用的设置”。这是由于win10以上的关机默认使机器进入S4状态禁用WOL,windows只允许从S3以及处于休眠状态的S4唤醒。关闭该选项后系统关机进入S5状态,此时远程开机的功能是交由主板和网卡负责的。当然这一部分也跟硬件有关,详细了解可以直接去Microsoft Learn了解。不过这玩意不管他直接关了也行,系统装在固态的话快速启动基本也快不了多少。

最后记一下ip和MAC地址,在设置 -> 网络和Internet -> 属性里面,ipv4地址和物理地址就是。

网络地址

路由器

路由器的配置是最麻烦的,想通过外网访问就得先过路由器这一关,而每个人的路由器品牌、固件、上网方式都不一样,因此解决方法各异。但在此之前,可以先试一下内网开机/唤醒,确保之前的配置是正确的。

准备同一个网络环境下的手机或计算机,商店或者浏览器搜索WOL,随便下个软件就可以。填入需要唤醒的设备ip和mac地址,在IP/host/广播地址栏填写设备IP,最后一部分换成255,端口填9,不出意外的话应该就可以内网唤醒了。

内网开机

如果唤醒成功的话,接下来就要尝试外网唤醒了。

如果你的路由器本身就支持网络唤醒,那么恭喜你,只需要在路由器里设置一下就好了。我用的是华硕RT-AX57官方固件,在路由器面板 -> 网络工具 -> 通过网络唤醒,将需要唤醒的设备添加即可,然后你就可以随时通过华硕路由器app唤醒设备了。

华硕路由器设置

如果你的路由器不支持网络唤醒功能,那就得用比较传统的方法设置了,我一开始就打算用这种方法,配置了一堆,最后发现路由器不支持arp绑定,就重新买了个华硕路由器,结果发现之前折腾了半天没搞成结果华硕一步就好了,真香。

首先你需要你的路由器支持arp绑定功能,只有部分中高端路由器有这个功能,并且有些品牌可能要刷开发版固件或开启ssh后才可使用,务必提前了解。动手能力比较强的也可以刷第三方固件。我使用的方案是ddns+端口转发,因此需要去要一个公网ip,给打个电话即可,不同地区与运营商政策不同,有些地区公网ip有低消要求或者直接不给,苏州电信是直接给的。有公网ip后,联系装宽带的上门/向他要光猫超密,将光猫改成桥接模式,然后使用路由器拨号上网。

物理条件准备完成后,接下来使用路由器的静态DHCP,将你电脑的内网ip与MAC地址绑定,这样你的电脑以后上网都会默认使用这个ip。接下来开启路由器的端口转发功能,端口都选9,本地ip输入电脑的ip地址。完成这一步后就已经可以通过外网唤醒电脑了,但是普通用户的公网ip是动态的,一般每隔2-3天或重启路由器都会换一次,唤醒经常需要重输ip很麻烦,使用路由器的DDNS功能可以将路由器和相应服务商提供的域名绑定,这样可以直接通过固定的域名找到路由器,具体操作流程参考DDNS服务商与路由器厂商说明。外网唤醒需要在IP/host/广播地址栏填写你的域名或IP地址,mac填写电脑的mac,端口填9。

外网开机

其实到这里我们就已经可以用固定的设置外网开机了,但是在电脑关机一段时间后便会失效,这是由于下线后路由器内储存的电脑的mac地址信息丢失造成的,外网传来的数据包路由器不知道该转发到哪,这里就需要arp绑定让路由器记住你电脑的ip和mac地址关系。具体绑定方法因路由器品牌型号而异。

远程控制

目前主流的控制软件包括向日葵、todesk、teamviewer、系统自带等,个人使用的是Rustdesk自建服务器,使用了一段时间,个人感觉还不错。

使用方法

参考官方文档,支持linux、windows和docker部署,个人使用CentOS7+宝塔面板。下载相应的包,放行21115(tcp), 21116(tcp/udp), 21118(tcp), 21117(tcp), 21119(tcp),在宝塔软件商店里下载一个进程守护管理,添加两个守护进程,分别运行 Rustdesk根目录/hbbsRustdesk根目录/hbbr,如果正常启动的话就没问题了。首次启动后Rustdesk根目录会生成一个id_ed25519.pub文件,里面的内容就是key,记下key和你的服务器ip。

守护进程

使用时,被控端请务必将Rustdesk安装在电脑上,而不要使用免安装版本,否则在部分界面会出现无法操控的情况(比如你没有办法输入密码开机!)安装完成后请将rustdesk.exe文件改名为“rustdeskhost=<服务器ip>,key=“,打开后在设置中修改ID/中继服务器中ID服务器为服务器IP。正常情况下主界面下方应显示就绪,关于界面中显示key与host。在其他控制端设备上填入相应的ID/中继服务器,ID与密码即可开始远程控制。

被控端设置

配合远程开机,可以将rustdesk设成开机启动。按win+r,输入shell:startup,回车,把rustdesk创建个快捷方式扔进去就可以了。

效果

被控端:苏州电信500m,公网ip,有线连接,1080p

控制端:苏州电信100m,有线连接

服务器:上海

使用了大半个月,非常流畅,没有遇到过明显卡顿,画面延迟70ms左右,只有很轻微的操作迟钝感的。静态窗口与快速切换分辨率都接近原生(1080p),连续动画会局部降分辨率,静态部分的画面是不刷新的,所以还是维持较高分辨率。整体感觉优点在于画面流畅操作舒服,画面清晰度在大多数情况下都可以接受,可以轻度游戏,翻动网页、文档的时候阅读可能稍有些费眼睛。4K画面体验不佳,pc端似乎优化有问题,延迟极高无法使用,手机端有明显延迟且轻微卡顿,不建议使用,如果两边带宽都够高的话可以试试。

延迟,静态窗口,看视频。
延迟

静止窗口

看视频