手把手教学,多种方法远程唤醒家中电脑orNAS
远程一直是我试图解决的问题,我期望可以远程下载,远程控制电脑与手机,远程玩游戏,远程备份照片,让我可以方便的获取我想要的私人信息,随时控制自己的私人设备。所以我就想写这样一系列教程,分享给大家。
本教程基于你有固定的公网IP(这种情况太少了)或者你只有动态公网IP,而且你已经熟练了解动态域名解析,端口转发的情况下,自己能从广域网访问自己家的路由器或者NAS为基础前提。如果你不了解可以看看我以前写的《搭建nas不远程访问怎么行?》二三四篇,从逻辑到操作都解释的很清楚了。本文会非常详细的梳理操作逻辑与流程,采用不同的方法通过苹果or安卓手机,windows或者MACOS,语音控制或者APP的方法来完成远程唤醒,虽然你最终之会用到一种方法,但整套的逻辑我都会讲清楚,当你操作出问题的时候也可以及时解决。
一,bios设置
二,电脑网卡开启魔术包
三,局域网路由器唤醒测试
四,远程唤醒之SSH唤醒
五,远程唤醒之广域网唤醒
六,能通过NAS来唤醒PC设备吗?
七,远程关机之SSH关机
看目录你应该会知道我本文的行文逻辑,首先要达到局域网能唤醒,在延伸到广域网可以唤醒,在扩展到不同的操作系统,唤醒方法,最终选择一个适合自己的稳定方法。
首先讲局域网唤醒电脑,首先进到被唤醒PC的bios里,不同主板进入bios的设置不同,我没办法一一展示,这部分内容请读者朋友参考其它类似文章匹配自己的主板类型来操作,我这是微星的X470主板,操纵的主要逻辑就是把PCIE或者网口唤醒打开,有的时候它不叫wol或者网络唤醒,所以你还需要转换理解找一下类似的,还有就是把快速启动电源管理之类的东西关掉。
首先是PCIE唤醒,就是网卡唤醒下面有文字解释。
还有就是电源管理的功能要关掉,我这里叫Erp ready。
别的也没了,bios这边算是一个难点,主要就是标准不统一,不同的主板查起来也费劲,主要是并不知道是否都设置全了。
BIOS这里大家就自己多上网查查,看到类似的就设置了。
1,网卡电源设置
进入window系统,选择【此电脑】鼠标右键-【管理】-【设备管理器】-【网络适配器】找到自己电脑连接网线的那个网卡网卡,我的网卡是intel的I211网卡,
双击来到高级,这里是很多属性都是中文的,如果你是英文的,说明你需要更新网卡驱动了,一会我说怎么更新驱动。这里按照其它教程要打开【唤醒魔包】,或者【魔术包】,或者打开【关机网络唤醒】之类的,总之你看到类似的语句就都开启。重点是这个PME,如果有的话,也要开启,我看了好多教程,只有少量提到了PME,这一步折腾了我好久。
然后来到【电源管理】,前两个一定要打勾,家用的话最后一个可勾可不勾,公司的网络比较复杂,最好勾上,就怕谁来点什么数据就给你电脑唤醒了。
完成以上几步,你关机再去看电脑插网线的网口,会一闪一闪的,之前没完成设置前,电脑关机的情况下,网口是完全不亮的。然后再说说驱动的问题,如果你的网卡管理不是最新的驱动,就会是英文界面,找起来很费劲,下载驱动大师之类的驱动软件更新之后也不是最新的驱动。需要你去英特尔官网下载最新的驱动,安装之后就是中文了。
别关机,还没完,还需要把控制面板的电源再改一下,【控制面板】-【电源选项】-【选择电源按钮的功能】-取消打勾【启动快速启动】。如果你像我这样【启动快速启动】是灰色的不让改,你可以点击上面的【更改当前不可用设置】之后就可以取消打勾了。取消快速启动这一步有的网友说有的主板的网卡不取消也可以唤醒,比如我这个I211就可以不取消打勾,这就需要你试一试了。
然后你需要测试一下,是否可以局域网唤醒了,openwrt里有个网络唤醒的插件,【服务】-【网络唤醒】-需要填写你需要唤醒的电脑的MAC地址。
这个唤醒程序有两个程序,一个是etherwake,另一个是wol,使用etherwake需要选择使用的网络接口,就用默认的br-lan就好。
在我的使用中,用etherwake可以局域网唤醒,用WOL就不行了。
按照插件WOL唤醒程序,只需要提供电脑MAC就可以,我的电脑怎么都唤醒不了,所以你两个插件都要试一下。
使用终端代码唤醒
那除了openwrt的插件,也可以用openwrt的终端手动输入代码来测试下局域网
在这里使用etherwake可以输入etherwake -i br-lan 11:22:33:44:55:66
使用WOL可以输入wol -I 192.168.1.101 11:22:33:44:55:66
这里-i后面是电脑的IP地址,从这里开始我们就假设电脑的IP地址是192.168.1.101,看到这个地址你直接替换自己的ip就可以了
到这里就测试完毕了,如果没有问题,就证明可以局域网唤醒了。
不过我还是想解释一下WOL的代码,回看一下上一步openwrt上使用WOL插件的代码,插件用的是-v,我在终端代码手动输入的是-i,而且后面还加了ip地址。我看有人解释-i是在同一个网段做广播,比如就是在192.168.1.X这个网段上都发一份数据包,谁对的上这个ip地址与MAC地址就唤醒谁,-v就可以垮网段唤醒,额,我不懂代码,不知道跨网段能怎么垮,应该是家里路由器有多个层级,比如在192.168.1.x的网段下还有个连路由器Wan口,多了一层NAT,就会有一个192.168.2.x的网段,这时候用-v这个代码?不清楚是不是这样,求大佬解惑。
局域网唤醒成功我们就来研究广域网唤醒(远程开机),远程有几种方法,
1,智能插座通电开机。
2,通过浏览器远程登陆路由器后台通过etherwake或者wol的插件与代码唤醒电脑。
3,通过siri的shell脚本走SSH来远程唤醒,适合iphone,window与macos
4,通过APP广域网远程唤醒,适合安卓手机。
1,通电开机与浏览器域名解析就不讲了
这四种方法第一种最简单,设置下BIOS通电开机,用智能插座就能解决,缺点是关闭机器之后还要记得关闭智能插座,有点麻烦。
第二种有公网的话,做好DDNS,端口转发,没公网用下zeroTier或者花生壳能远程访问路由器后台,通过wol插件就能唤醒成功。
我主要说下第三与第四种方法。
2,通过SSH脚本siri语音远程唤醒
这个方法的逻辑是通过终端软件远程登陆路由器的SSH,输入WOL代码进行唤醒,这个方法和局域网唤醒很像,局域网用什么代码,这里用一样的代码,只是把代码远程传到路由器而已,如果你用iphone手机,还可以通过一些捷径设置达成语音唤醒。
首先做好DDNS,打开路由器的SSH,Openwrt的SSH在【系统】【管理权】【SSH访问】
然后设置SSH的端口转发,SSH的端口号是22,指向内网Openwrt路由器的IP地址,路由器端的设置就结束了。
然后我们设置iphone语音唤醒步骤,用Iphone打开【快捷指令】,点击右上角【加号】,点击【添加操作】,选择【脚本】,往下拉,最下面有一个【通过SSH运行脚本】
代码填写wol代码或者etherwake都行,主机就填你的域名,端口号写22(添你路由器上做的端口转发的外网端口),用户与密码是你登陆路由器的账号与密码,全填完可以点下屏幕右下角的播放键,跑一下代码看能不能唤醒。如果唤醒成功就把顶部的名字改一下,我是改为了【打开电脑】,这样当我唤醒siri,直接说【打开电脑】就可以运行脚本了。
3,如果只有终端可以操作怎么办?
SSH这个方法比较实用,在windows上可以使用SSH软件Putty或者Mobaxterm,也可以使用WIN或者MAC自带终端,部分安卓手机也有自己的捷径,只是不知道有没有SSH的脚本,或者还可以使用tasker触发器配合安卓SSH软件进行使用,也可以一键完成唤醒,这部分我就没需求了,留给读者自己探索把。然后我再来说一下在终端上怎么唤醒,苹果电脑直接就有叫【终端】那个软件,windows可以在搜索栏查询cmd就可以打开终端。
然后输入ssh 路由器账号@你的域名,这里要强调一下,如果你端口转发的时候外网端口写的也是默认的22,这里就可以不填端口号,如果你填的是23,就需要在域名后面添【空格-p空格23】
如果你是第一次使用可能会需要一次确认,需要输入yes,再就是让你输入路由器的登录密码了。
然后输入上面的代码,使用wol 或者etherwake都行。
SSH这个方法非常好用,尤其对iphone非常友好,只要DDNS在生效,域名可以对应上ip地址就一定会成功。
掌握了这个方法,也可以用来唤醒群晖NAS,也是先在NAS的bios开启wol,NAS系统里开启网络唤醒就可以了。
这个方法基于单独的APP,安卓苹果都有客户端,我觉得还是更适合安卓系统,因为安卓没有系统级的远程SSH登陆方式,还需要第三方软件,那不如就安装一个专门用来唤醒的APP来的方便,这部分我会把逻辑讲透,看完本篇你一定会清楚自己的手机应该如何设置。
1,使用Remoteboot WOL
广域网设置起来相对复杂一点,这个方法最难啃的就是要搞定路由器的APR绑定,解决这个问题,其它都好说。我用的软件是Remoteboot WOL,这个软件安卓,IOS都有,优点是手机随时都在身边,随时唤醒,可以记录多台电脑设备的信息,缺点是有广告。
我们先把简单的解决,先说Remoteboot WOL的设置如何填写,打开软件点击右上角加号,然后信息按照如下填写
以上信息需要注意两点,第一,端口号是9,所以一会还要在路由器上填写个端口转发,内网端口添9,外网端口就添APP里添的端口。第二,最后一行【ip or hostname for ping】需要说明一下,经过测试填不填都可以远程唤醒成功,如果填了电脑的IP地址(局域网地址),在本地局域网状态,电脑开机情况下会亮绿灯,电脑关机就灭灯,就是一个局域网的状态显示。手机在广域网状态则不亮灯,也就没有状态显示。经过测试,这种填写方式,手机在局域网或者广域网都可以一键唤醒,不需要更改资料。
2,ARP绑定与DHCP分配的区别(为什么广域网唤醒一定要ARP绑定)
广域网唤醒需要设置ARP绑定,APR绑定就是将设备的IP地址与MAC做绑定,有的小伙伴会说,那不是和DHCP的功能一样吗?实际上是有区别的。
(1),什么是DHCP?
这里用一个班级来举例,假设班级里有个班长来负责分配学号,DHCP就是这个班长,这个班长行为比较特殊,当有人学生进入教室就给发一张纸条,纸条上就是学生对应的学号(此处类比电脑开机后DHCP才会给电脑分配IP地址),当这个学生走出教室,班长还会把写有学号的纸条收回(此处类比设备关机,DHCP就解绑了)。
(2),什么是ARP绑定?
那【ARP绑定】就是这个班级的通讯录,上面对应着每一个学生的学号,不管这个学生是否留在教室,学号与学生都是绑定关系(相当于MAC地址与IP地址在ARP表上是绑定的),对比DHCP与ARP来说,DHCP的关键字是【分配】,而APR的关键字是【绑定】,关机唤醒正是要在学生未进入教室前(电脑未开机前)来操作的,需要按照MAC地址来找到这个教室外学生做唤醒操作,所以在广域网唤醒这个需求面前,必须是完成【ARP绑定】才能唤醒。
3,ARP绑定操作
逻辑讲清楚了下面开始操作,在此之前你要在路由器上做好DDNS就不用多说了,然后要填一个端口转发,这次的端口号是9,重点是这个IP地址。你需要给电脑选择一个IP地址,选择一个不在DHCP分配范围的IP地址。比如说你的路由器DHCP的分配范围是100-255,DHCP给你的电脑分配的IP地址是192.168.1.101,你给电脑分配的ARP绑定IP地址就可以是192.168.1.9。要求是两个IP地址是不冲突的,同时192.168.1.9这个地址不在DHCP分配的100-255之内,相当于这个学生有两个学号,班长分配了一个,通讯录上是另一个,当在教室外找学生的时候用的是通讯录上的学号能找到学生,当学生进入教室用班长分配学号也能找到学生。
具体逻辑之后我再解释,端口转发之后来做【ARP绑定】,在openwrt上【网络】-【IP/MAC绑定】。你可以看一下蓝色字的说明,这就是ARP绑定,这次需要填写的IP地址就是192.168.1.9。
然后重启一下路由器,看一下在路由器的终端输入ip neigh找到192.168.1.9那行后面有没有电脑的Mac地址,结尾是不是PERMANENT这个单词(翻译为永久),如果都达成了,就打开手机上的Remoteboot WOL,唤醒一下试试。
4,解释一下逻辑
为什么要再为ARP另外再分配一个IP地址呢?
首先我推荐一下这个文章《为广域网WoL远程开机解决OpenWrt ARP绑定(IP/MAC绑定)无效的问题》
这篇文章写的非常详细,解题思路,解决方案都写出来了,但我发现按照文章设置之后,长时间关机还是会唤醒失败。后来我又研究了一下,才发现另外为ARP设置单独IP地址的方法,我现在明白其中的逻辑了,如果DHCP分配的IP与ARP绑定的IP相同,DHCP在设备关机后收回绑定IP地址的这个行为会导致ARP地址也解绑了,那唤醒自然也就会不成功。其实DHCP班长与ARP通讯录分配的学号是可以不同的,相当于DHCP班长与ARP通讯录实际上只是共用了一套阿拉伯数字的学号体系,实际上他们之间是各分各的,如果分配同一个学号,DHCP班长在学生出教室收回学号这个行为就导致了唤醒失败。经过测试我提到这个方法,就算电脑长时间不开机,也不会唤醒失败,非常好用。
另外我还是建议读者看看这篇文章,《为广域网WoL远程开机解决OpenWrt ARP绑定(IP/MAC绑定)无效的问题》,主要是了解下在路由器上使用【ip neigh】这个代码如何查看IP地址与MAC地址的试试关系。
REACHABLE(到达,只能表示是设备关机状态,显示这个关机唤醒会失效)
PERMANENT(永久,说明ARP绑定成功,显示这个关机唤醒就会成功)
FAILED(失败,并不显示MAC地址,说明设备已经关机,DHCP分配的地址解绑)
5,Remoteboot WOL也可以语音唤醒
使用Remoteboot WOL软件也可以通过siri来语音控制,打开【快捷指令】点击右上角加号,点击添加操作,选择APP,找到Remoteboot WOL,可以选择单独某个电脑开机,也可以选择boot selected items,就是所有打勾的都唤醒,然后在修改快捷指令顶部的名称,就可以语音唤醒了。与SSH语音控制的体验有一点差别,快捷指令唤醒不需要解锁屏幕,而Remoteboot WOL需要解锁屏幕才能唤醒。
6,windows有这种软件吗?
也有,微软商店里就有个Easy WOL (Wake on LAN),怎么填写你应该会了,逻辑上都是一通百通的,
有的小伙伴家里路由器并不是openwrt系统,没有SSH也没有终端,只能添个动态域名解析,端口转发啥的,我能用家里NAS的SSH来换行吗?经过我测试发现并不能成功,我文章提到的远程唤醒是基于IP地址与MAC的绑定关系,而这种关系只有在路由器端能获取到,所以如果你不用NAS来分配DHCP,应该就不行。我尝试获取群晖root权限,在群晖的ARP表中添加了一条绑定关系,还是唤醒不了,也就是说,DHCP功能在哪,就用哪个设备唤醒,其它设备是不行的。
还能通过SSH的方式来关闭电脑,这个操作一定要在电脑的SSH上操作,所以要开启电脑的SSH。(为什么不建议在路由器上操作呢,怕操作不当把路由器关掉了,那就彻底与家庭网络失联了。)
开启电脑的SSH先进入【设置】,找到【可选功能】,或者你直接在搜索栏搜可选功能也可以。
在已安装里搜索SSH,需要安装【OpenSSH客户端】与【OpenSSH服务器】两个,
如果没在已安装功能找到,说明你还没安装呢,就点开查找功能,搜索SSH,安装可以了,时间上可能有点慢,不要着急。
然后再搜索栏搜索【服务】,打开
找到【OpenSHH SSH server】,启动类型改成自动,并点左边的启动。
这时候已经开启电脑的SSH服务了,按照道理在局域网内的终端已经可以通过【SSH 账号@IP地址】的方式的方式来访问了,既然要远程关机,还要写一个端口转发,这里面外网端口你要添一个除了22的数字,因为刚才外网访问路由器已经把外网22端口给用过了。
然后你就可以在iphone的快捷指令里添加命令了,这里要添的外网端口号是刚才在端口转发里写的外网端口,用户名是你电脑的开机账号密码。
用的是shutdown命令【shutdown /s /t 30 /c “电脑即将关机"】。这里面【/s /t 30】代表着30秒之后关机。【/c “电脑即将关机"】代表将会有一个提示框,两个半角引号中间就是提示的内容,英文中文都可以。
这篇算是写的比较细致了,之后我也有计划继续更新,比如远程控制电脑,控制手机,远程玩PS5之类的,我慢慢写,希望对大家有所帮助。