记一次实现远程控制电脑开机过程

一.缘起

先说说为什么有这个想法,比如在游戏首发的时候,想远程控制电脑开始下载;想远程电脑查询电脑 上的资料等等。作为一名IT行业的从业者,在生活和工作中需要电脑的地方很多,我们不能无时无刻把电脑带在身边,但是现在我们身边无时无刻伴随着两样东西:蜂窝网络和手机。因为我的习惯不喜欢电脑长时间的开着,我不用我就关掉,而且我的电脑散热风扇风比较大,我觉得长时间开着影响室内空气质量,所以我就有了远程控制电脑开机的需求,使用蜂窝网络和手机来实现此需求便可以随时随地的控制。

image-20201018205107269

这里需要说明的是,本文讲的是远程控制电脑开机,而非电脑的远程桌面,远程桌面已经有非常多的方案 teamviewer、向日葵、anydesk等等,不过我不喜欢用这些方式(其实比较喜欢 teamviewer,但是经常被提示商用),我的远程桌面方式是搭建内网穿透(frp 内网穿透远程桌面(Windows 10)配置),然后直接使用自带的远程(PC),APP 的话使用的是微软开发的 “Microsoft 远程桌面”。回到正题,下面我分享我的远程控制电脑开机的实现过程。

二.解决方案一:Wake on LAN

Wake on LAN 简称 WOL,简而言之就是可以通过网卡来唤醒电脑,现在的网卡基本上都是支持的。其原理为向网卡发送一个数据包,英文名:Magic Packet,中文:魔术包或幻包,网卡接收到以后便可以启动电脑。

需要以下步骤来进行设置:

  1. 进入主板 BIOS 开启 Wake on LAN 功能,这里需要去查询自己的主板如何设置,一般在电源管理功能里面。
  2. 关闭主板节电设置,关闭后最明显的特征是 USB 口关机后也带电,主板灯关机后也常亮。因为需要网卡带电,才能接受魔术包。
  3. 路由器DHCP静态IP分配

image-20201019222811764

  1. 进入 Windows 设备管理,设置网卡

电源管理:

image-20201019222919337

网卡属性:

image-20201019222958386

设置好以后,重启电脑,下载一个 WOL APP,填写电脑 IP 和 MAC 便可测试,我是 IOS 在 App Store 搜索 WOL 便可以搜到很多 APP

image-20201019223209902

正常情况下,会测试成功,向电脑发送魔术包以后,电脑会立即开启。

注意:如遇到电脑关机长时间以后 WOL 无法唤醒电脑,那么需要进入路由器设置 ARP 绑定,若路由器没有相关功能,则需要 SSH 进入路由器,执行命令 arp -s ip地址 mac地址,需要注意的是此命令执行后,重启路由器就失效了,有解决办法,就是加入路由器开启执行的脚本,这里不做详细讲述,因为不同的路由器ROM是有区别的。执行ARP绑定后就会解决这个问题(PS:这个问题困扰我很久了,还是同事给了这个解决办法)。

1.关于 广域网唤醒

若有公网 ip,那么直接设置端口转发,转发到电脑的 9 端口(一般都是)。没有公网 ip 可以在局域网的某一持续运行的设备设置内网穿透,建议在路由器上设置,若是梅林等固件可以安装现成的插件,我是小米路由器,进入SSH 装了一个 frp 内网穿透,配置如下

[common]
server_addr = <公网服务器ip>
server_port = <公网服务器 frp 端口>
authentication_method = token
token = <认证 token>

[远程桌面]
type = tcp
local_ip = <电脑局域网ip>
local_port = 3389
remote_port = <远程桌面端口>

[WOL广域网]
type = udp
local_ip = <电脑局域网ip>
local_port = 9
remote_port = <WOL远程端口>

2.魔术包

魔术包有一个标准的算法,网上有很多解释算法的文章以及各种语言的代码实现。

C#: //github.com/nikeee/wake-on-lan

java://www.cnblogs.com/heidsoft/p/4011800.html

三.解决方案二:AC Recovery

AC Recovery 又名 来电自动启动(回复),指电脑一通电便可以自动启动。此方法是最简单的,不需要WOL各种设置,不需要主板支持 WOL,但是需要具备两个条件:

1.主板具有来电启动功能

2.智能插座(小米智能插座等等各种智能插座)

我这里使用的是小米智能插座,设置的步骤如下:

1.进入主板BIOS设置来电自动启动功能

2.进入主板BIOS 关闭节电设置(经过我的实验,主板若开启节电无法正常来电启动)

3.正确设置智能插座,接入米家APP,并连上主机插头。

此时控制智能插座 断电->通电 便可以实现来电自启动,若发现断电->通电无法启动,则可以在中间加一个延时,等待主板完全断电,我的设置如下:

image-20201019230309971

四.解决方案三:开机卡

前两种方案都是我亲自实践并且成功了的,这里第三种方案,我只是在某宝看到,并为实验,此方法略微复杂一点。此方法是将独立的开机卡接入主板 PCI-E 插槽,在转接条线到齐上,在通过商家提供的APP来进行控制。这个需要一定的动手能力,想了解的同学可以去某宝搜一下。

五.结束

周末一个下午实验了两种方式,虽然简单,解决了我的生活里一个实际问题也是非常高兴,网上虽然设置的方法都很多,但是实践下来还是遇到了各种坑。

最后提一下关于语音控制,方案一可以通过APP来添加 Siri 快捷指令来进行语音控制,方案二可以通过小爱同学来来进行语音控制。