先说说为什么有这个想法,比如在游戏首发的时候,想远程控制电脑开始下载;向远程电脑查询电脑 上的资料等等。作为一名IT行业的从业者,在生活和工作中需要电脑的地方很多,我们不能无时无刻把电脑带在身边,但是现在我们身边无时无刻伴随着两样东西:蜂窝网络和手机。因为我的习惯不喜欢电脑长时间的开着,我不用我就关掉,而且我的电脑散热风扇风比较大,我觉得长时间开着影响室内空气质量,所以我就有了远程控制电脑开机的需求,使用蜂窝网络和手机来实现此需求便可以随时随地的控制。
这里需要说明的是,本文讲的是远程控制电脑开机,而非电脑的远程桌面,远程桌面已经有非常多的方案 teamviewer、向日葵、anydesk等等,不过我不喜欢用这些方式(其实比较喜欢 teamviewer,但是经常被提示商用),我的远程桌面方式是搭建内网穿透(frp 内网穿透远程桌面(windows 10)配置),然后直接使用自带的远程(PC),App 的话使用的是微软开发的 “Microsoft 远程桌面”。回到正题,下面我分享我的远程控制电脑开机的实现过程。
Wake on LAN 简称 WOL,简而言之就是可以通过网卡来唤醒电脑,现在的网卡基本上都是支持的。其原理为向网卡发送一个数据包,英文名:Magic Packet,中文:魔术包或幻包,网卡接收到以后便可以启动电脑。
需要以下步骤来进行设置:
电源管理:
网卡属性:
设置好以后,重启电脑,下载一个 WOL APP,填写电脑 IP 和 mac 便可测试,我是 IOS 在 App Store 搜索 WOL 便可以搜到很多 APP
正常情况下,会测试成功,向电脑发送魔术包以后,电脑会立即开启。
注意:如遇到电脑关机长时间以后 WOL 无法唤醒电脑,那么需要进入路由器设置 ARP 绑定,若路由器没有相关功能,则需要 SSH 进入路由器,执行命令 arp -s ip地址 mac地址,需要注意的是此命令执行后,重启路由器就失效了,有解决办法,就是加入路由器开启执行的脚本,这里不做详细讲述,因为不同的路由器ROM是有区别的。执行ARP绑定后就会解决这个问题(PS:这个问题困扰我很久了,还是同事给了这个解决办法)。
若有公网 ip,那么直接设置端口转发,转发到电脑的 9 端口(一般都是)。没有公网 ip 可以在局域网的某一持续运行的设备设置内网穿透,建议在路由器上设置,若是梅林等固件可以安装现成的插件,我是小米路由器,进入SSH 装了一个 frp 内网穿透,配置如下若有公网 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 = <WL远程端口>
魔术包有一个标准的算法,网上有很多解释算法的文章以及各种语言的代码实现。
C#: https://github.com/nikeee/wake-on-lan
JAVA:https://www.cnblogs.com/heidsoft/p/4011800.html
AC Recovery 又名 来电自动启动(回复),指电脑一通电便可以自动启动。此方法是最简单的,不需要WOL各种设置,不需要主板支持 WOL,但是需要具备两个条件:
1.主板具有来电启动功能
2.智能插座(小米智能插座等等各种智能插座)
我这里使用的是小米智能插座,设置的步骤如下:
1.进入主板BIOS设置来电自动启动功能
2.进入主板BIOS 关闭节电设置(经过我的实验,主板若开启节电无法正常来电启动)
3.正确设置智能插座,接入米家APP,并连上主机插头。
此时控制智能插座 断电->通电 便可以实现来电自启动,若发现断电->通电无法启动,则可以在中间加一个延时,等待主板完全断电,我的设置如下:
前两种方案都是我亲自实践并且成功了的,这里第三种方案,我只是在某宝看到,并未实验,此方法略微复杂一点。此方法是将独立的开机卡接入主板 PCI-E 插槽,在转接条线到齐上,在通过商家提供的APP来进行控制。这个需要一定的动手能力,想了解的同学可以去某宝搜一下。