实现远程控制电脑开机过程

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

实现远程控制电脑开机过程

文章插图
 
这里需要说明的是,本文讲的是远程控制电脑开机,而非电脑的远程桌面,远程桌面已经有非常多的方案 teamviewer、向日葵、anydesk等等,不过我不喜欢用这些方式(其实比较喜欢 teamviewer,但是经常被提示商用),我的远程桌面方式是搭建内网穿透(frp 内网穿透远程桌面(windows 10)配置),然后直接使用自带的远程(PC),App 的话使用的是微软开发的 “Microsoft 远程桌面” 。回到正题,下面我分享我的远程控制电脑开机的实现过程 。
二.解决方案一:Wake on LANWake on LAN 简称 WOL,简而言之就是可以通过网卡来唤醒电脑,现在的网卡基本上都是支持的 。其原理为向网卡发送一个数据包,英文名:Magic Packet,中文:魔术包或幻包,网卡接收到以后便可以启动电脑 。
需要以下步骤来进行设置:
  1. 进入主板 BIOS 开启 Wake on LAN 功能,这里需要去查询自己的主板如何设置,一般在电源管理功能里面 。
  2. 关闭主板节电设置,关闭后最明显的特征是 USB 口关机后也带电,主板灯关机后也常亮 。因为需要网卡带电,才能接受魔术包 。
  3. 路由器DHCP静态IP分配

实现远程控制电脑开机过程

文章插图
 
  1. 进入 Windows 设备管理,设置网卡
电源管理:
实现远程控制电脑开机过程

文章插图
 
网卡属性:
实现远程控制电脑开机过程

文章插图
 
设置好以后,重启电脑,下载一个 WOL APP,填写电脑 IP 和 mac 便可测试,我是 IOS 在 App Store 搜索 WOL 便可以搜到很多 APP
实现远程控制电脑开机过程

文章插图
 
正常情况下,会测试成功,向电脑发送魔术包以后,电脑会立即开启 。
注意:如遇到电脑关机长时间以后 WOL 无法唤醒电脑,那么需要进入路由器设置 ARP 绑定,若路由器没有相关功能,则需要 SSH 进入路由器,执行命令 arp -s ip地址 mac地址,需要注意的是此命令执行后,重启路由器就失效了,有解决办法,就是加入路由器开启执行的脚本,这里不做详细讲述,因为不同的路由器ROM是有区别的 。执行ARP绑定后就会解决这个问题(PS:这个问题困扰我很久了,还是同事给了这个解决办法) 。
1.关于 广域网唤醒若有公网 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远程端口>
2.魔术包魔术包有一个标准的算法,网上有很多解释算法的文章以及各种语言的代码实现 。
C#: https://github.com/nikeee/wake-on-lan
JAVA:https://www.cnblogs.com/heidsoft/p/4011800.html
三.解决方案二:AC RecoveryAC Recovery 又名 来电自动启动(回复),指电脑一通电便可以自动启动 。此方法是最简单的,不需要WOL各种设置,不需要主板支持 WOL,但是需要具备两个条件:


推荐阅读