实现局域网唤醒

2018-11-07 09:04
网络安全和信息化 2018年6期
关键词:网卡内存选项

WOL原理

WOL(Wake-up On LAN),也称为局域网唤醒,从根本上来说是计算机硬件设备提供的一项管理功能。该功能可以实现当计算机处于关机或休眠状态时,通过向计算机上的网卡发送一个特定的数据包来命令网卡向主板发送开机指令(就像计算机的开机按钮被按下一样),进而让计算机上电开机。

这个特定的数据包(也被称为唤醒指令),是一个有着特定格式的数据包(Magic Packet,魔幻包),其格式为连续6个字节的“FF”和连续重复16次的目标网卡的MAC(Media Access Control或Medium Access Control,媒体访问控制,或称为物理地址、硬件地址)地址,因此该唤醒指令的总长度为102(=6+16*6)个字节。

由此可见,WOL功能需要两方面的支持:一方面是计算机硬件(主要是主板和网卡)的支持。目前几乎所有品牌的计算机硬件都支持WOL,但出于安全考虑有些计算机硬件默认将WOL关闭。由于每台计算机上的主板和网卡千差万别,所以在启用WOL功能前,需要检查并设置好这两个硬件上的相应参数。另一方面是软件的支持,也就是能够发送“唤醒指令”的软件。这类软件有很多,其中最著名的就是“Magic Packet Utility”软件。

摸索过程

由于以前没有配置过WOL,而且调试工作又不能被干扰,为了尽快熟悉WOL的设置操作,笔者另外找来了一台和计算机A的型号和配置完全相同的笔记本计算机(以下简称计算机B)、一台普通的笔记本计算机(以下简称计算机C)、一台5口交换机以及两根网线单独组建一个微型网络,打算先在这个微型网络中利用这两台计算机搞懂WOL,而后再对计算机A所在的那个小型网络中进行相应的调整。

参考WOL原理,笔者先后在计算机B和计算机C上进行以下设置操作:

操作1:打开BIOS中的WOL功能很简单,只要在计算机B进行冷启动时,按下相应的热键就可进入BIOS模式,将BIOS设置中的“Power Management” 的“Wake On LAN”项设置为“LAN Only”即可,如图1所示。

注意:此处的选项与计算机的主板品牌型号有关,具体以各自型号的设置方法为准。

操作2:正常启动计算机B,进入Windows操作系统的“桌面”,按下“WIN+R”组合键,在弹出的“运行”对话框的“打开”文本框中输入命令“cmd”,再单击“确定”按钮。然后在弹出的“命令提示符”窗口中输入命令“ipconfig /all”,就可查看到计算机B的网卡的MAC地址,如图2所示。

图1 启用WOL参数

图2 MAC地址

图3 WOL软件

操作3:正常关闭计算机B,再在计算机C上运行“Magic Packet Utility”软件,如图3所示,依次点击“Magic Packets”菜单下的“Power On One Host”菜单,在弹出的“Send a Magic Packet to One Host”窗口 中 的“Destination Ethernet Address”文本框中输入计算机B的网卡的MAC地址(地址中的字母不区分大小写)。点击“Send”按钮后,在“Message”文本栏中会显示出“Sent to 255.255.255.255”提示信息,也就是说软件已经将唤醒指令广播出去了,如果一切正常的话,与“Destination Ethernet Address”文本框中的MAC地址相匹配的网卡应该能收到唤醒指令,并开始启动计算机。

注 意:在IP网 络中,广播地址用IP地址“255.255.255.255”来表示,这个IP地址代表同一子网内所有的IP地址。

可是等了好一会儿,计算机B就是没有任何反应。能导致这种情况出现的因素可能有:是计算机B的WOL相关参数设置不正确或未正常生效,或者是连接计算机B的网线存在问题,或者是那台5口交换机有故障。

排查错误

笔者决定先从容易诊断的地方网线,开始排错工作。

1.排错第一步

笔者先将连接计算机B的那根网线用测线仪检测,测线仪显示的指示灯都会亮而且序号也都是正确,这表明网线两头的水晶头及其之间的线缆都没有异常。接着笔者将这根网线放到其它计算机上进行连接测试,也显示正常。对于连接计算机C的那根网线,笔者也如此测试,一切正常。这就排除了网线的问题。

2.排错第二步:

接下来,笔者将那台5口交换机与其它计算机连接,这些计算机访问网络都很正常,也就排除了交换机的问题。看来问题还是出在计算机B的WOL设置上,接下来检查的重点应该落在WOL的相关参数设置上。

3.排错第三步:

笔者先从计算机B的BIOS设置开始查起,相关参数检查了都没发现有错,但参数注释中有一句话“This feature only works when the computer is connected to AC.”(此 功能仅在计算机连接到交流电时才起作用)让笔者警醒,这时才发现计算机B没有插上外界电源插头,正在处于电池供电状态。

笔者马上为计算机B插上外界电源插头,让其通上市电。

笔者以为问题解决了,于是重复操作3的步骤,可计算机B还是没有任何反应。看来其它地方还存在问题,难道是网卡?

图4 开启网卡属性

图5 启用网卡属性

4.排错第四步:

笔者按下计算机B的电源按钮,登录Windows操作系统。打开“设备管理器”中网卡的“属性”对话框对网卡的各项参数进行检查,发现“高级”选项卡中“关机网络唤醒”属性的值居然是“关闭”,如图4所示。

这就难怪了,笔者马上将值选为“开启”,并点击“确定”按钮。然后正常关闭计算机B。

笔者又重复操作3的步骤,计算机B仍旧没有任何响应。不会是计算机B的网卡的参数还没完全设置好吧?

5.排错第五步:

笔者再次手动开启计算机B的电源,登录Windows操作系统。继续对网卡的参数进行检查,这时又发现在“电源管理”选项卡中“允许计算机关闭此设备以节约电源”选项未被勾选,如图5所示。

笔者记得好像这个选项默认是勾选的,难道和它有关?笔者试着选中这个选项,点击“确定”按钮后正常关闭计算机B。

这时笔者尝试着再一次重复操作3的操作,计算机B的电源灯突然亮了,接着整个键盘灯也亮了,马上计算机B的品牌徽标就显示出来,不一会儿就出来了Windows系统的登录界面,远程启动计算机B成功了。

笔者又反复操作了多次,计算机B每次都能唤醒成功。

笔者又对计算机C“依法炮制”,同样能通过计算机B唤醒计算机C,至此WOL设置才算熟悉了。

而后笔者对计算机A进行相应调整,终于实现了让计算机A远程开机的功效。

继续探究

虽然当初的目的已经达到,但是笔者觉得还需对WOL继续进行探究。Windows系统提供了不同的电源选项,可供用户选择让计算机进入“睡眠、休眠、关机、待机”等不同模式。这几种模式的区别主要是:

1.关机

Windows首先要关闭所有运行中的程序,然后关闭系统后台的服务,接着向主板和电源发出特殊的信号,让电源切断对所有设备的供电,计算机彻底关闭。

2.待机

Windows会自动向电源发出另一种特殊信号,随后电源会切断除了内存外其他设备的供电,内存中依然保存了系统运行中的所有数据。下次开机,只要通电,Windows就会继续从内存中保存的上一次的“状态数据”下运行。但有一个致命的缺陷:不能停止对内存的供电,否则内存中的数据将丢失,下次开机将会像关机状态那样启动。

3.休眠

Windows会将内存中的数据保存到硬盘上系统盘根目录下的一个文件中(即内存状态的“镜像”)。下次开机后则从硬盘上的那个“镜像”文件内读取数据,并载入物理内存,从而恢复到上一次的“休眠”前的运行状态。它改进了“待机”模式的缺点——断电后数据不会丢失。

4.睡眠

Windows会首先将内存中的数据保存到硬盘上(这一点类似休眠),同时切断除了内存外其他设备的供电(这一点类似待机)。在恢复时,如果没有断过电,那么系统会从内存中直接恢复;否则将硬盘中保存的内存的状态镜像恢复到内存中。

上述操作成功的只是计算机B处于“关机”模式下的,那其它模式下是不是也能WOL呢?所以笔者觉得需要继续进行摸索。

测试操作一:睡眠模式

笔者首先让计算机B进入“睡眠”状态,然后重复操作3的步骤,计算机B没有任何响应。为什么会这样呢?笔者估摸问题应该还是出在计算机B的相关参数设置上。

这时笔者突然想起,在计算机B的网卡的“电源管理”选项中,“允许计算机关闭此设备以节约电源”选项未被勾选时,其下的“允许此设备唤醒计算机”选项是灰色的,不可选。而一旦“允许计算机关闭此设备以节约电源”被勾选,则“允许此设备唤醒计算机”选项也就有效,能被勾选。

笔者思考了一下,决定勾选“允许此设备唤醒计算机”选项并保存。然后让计算机B再次进入“睡眠”状态,接着重复操作3的操作,计算机B居然能被唤醒。

之所以会这样,笔者分析可能是:计算机B进入“睡眠”状态后,网卡也和除了内存外的其它硬件一样被断电了,“允许此设备唤醒计算机”选项被勾选则等于通知Windows在计算机进入“睡眠”状态后不切断网卡的供电,这样就让网卡处于活跃状态,也就能收到网线上传过来的唤醒指令,从而唤醒计算机。

而且笔者发现,“允许此设备唤醒计算机”选项被勾选后,即使计算机B被关机也同样能被远程唤醒,所以建议在勾选“允许计算机关闭此设备以节约电源”选项时一并勾选该选项,这样计算机不管是处于“关机”状态还是“睡眠”状态都能被远程唤醒。

图6 Windows XP的主板和网卡参数

测试操作二:休眠模式

实际上“睡眠”模式是“待机”模式和“休眠”模式的功能的集合,所以“休眠”模式可算得上是“睡眠”模式的一个子系统。笔者经过测试,发现在参数设置上“休眠”模式和“睡眠”模式完全相同,所以可参照上述设置操作。

图7 Windows XP的BIOS参数

测试操作三:待机模式

“待机”模式是Windows Vista以下版本的系统(如:Windows XP)中才有的,而从Vista开始的版本(如:Windows Vista、7、8、10 等)更换为“睡眠”模式。

于是笔者找来了一台安装Windows XP系统的台式计算机,经过检查,主板和网卡都支持WOL。于是笔者参照前述的操作进行配置,这台XP计算机能够在“关机”和“待机”状态被正常远程唤醒。区别之处只是相关参数的名称和前面的不太一样而已,如图6所示。

在XP系统的配置过程中,也曾发生过唤醒失败的情况,经检查系这台台式计算机的BIOS中的“Power Management”的“Low Power Mode”项中的“Enable Low Power Mode”参数被勾选导致的,如图7所示。因为这与“Remote Wake Up”选项中 的“Enable with Boot to NIC”参数产生冲突。取消勾选“Enable Low Power Mode”参数后问题得以解决。

计算机处于不同电源模式下的WOL问题已经得到解决。

跨网段唤醒

经过笔者一番摸索,发现若要想实现跨网段的WOL,则需要借助相应的第三方软件(如LanHelper)来实现。

之所以要更换软件是因为AMD推出的这款“Magic Packet Utility”软件采用了广播的方式发送“唤醒指令”数据包,而广播只能在同一个网段中有效,跨网段则会被路由器过滤掉。所以跨网段的广播必须得到路由器的“IP directed broadcast(IP定向广播)”支持。由于IP定向广播经常会成为黑客进行“smurf”式“拒绝服务”攻击(Denial of Service,DoS)的工具,所以现在基本上所有的路由器都是默认关闭的,且笔者也不赞成在局域网内开启该广播。

注 意 :Smurf攻 击 是通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包,来淹没受害主机,最终导致该网络的所有主机都对此ICMP应答请求做出答复,导致网络阻塞。

LanHelper软件的操作比较简单,应该很容易熟悉。要想对计算机进行远程开机,需要先添加目标计算机而后才能操作。

操作一:添加目标计算机

具体操作是:先单击“工具”-->“远程开机”菜单,再单击“远程开机”窗口-->“常规”选项卡-->“添加”按钮,接着在“目标设置”对话框中输入“名称”、“IP广播地址”、“MAC地址”等参数,最后再单击“确定”按钮两次,就能在“远程开机”窗口中显示出来,如图8所示。

图8 添加目标计算机

图9 LanHelper发送唤醒指令

操作二:远程开机

要想打开远程计算机,操作很简单。具体步骤是:先单击“工具”-->“远程开机”菜单,再单击“远程开机”窗口-->“常规”选项卡中要想操作的计算机,接着单击“开机”按钮,会弹出相应的提示信息,如图9所示,告知唤醒指令已经发送给指定的计算机了。如果一切正常的话,远程计算机应该会正常被唤醒。

操作三:选择发送方式

LanHelper软件提供了多种发送“唤醒指令”的方式:本地子网、单播、因特网和定向广播,这几种方式既能唤醒同网络中的计算机,也能唤醒不同网段中的计算机。利用“定向广播”方式就能实现在“IP directed broadcast(IP定向广播)”关闭的情况下,跨网络发送“唤醒指令”从而唤醒其它网段中的计算机。

这几种方式的设置方法:先单击“工具”-->“选项”菜单,再单击“选项”窗口-->“远程开机”选项卡,接着单击“IP广播地址”选项-->“发送选项”下拉列表框中的选项,就可设置不同的发送指令方式,实现对不同位置的计算机进行操作。

总结:

WOL功能的启用有两点需要注意:第一,由于WOL功能与计算机的主板和网卡相关,所以对于一些早先型号的计算机(如2000年以前的),有可能会出现计算机的主板和网卡只有其一支持或者都不支持的情况。第二,对于硬件配置较老旧的计算机,如果计算机非正常关机(比如直接按下主机的电源开关来强制关闭计算机)是无法WOL的。只有正常关机后,网卡才会被正常供电而处于活动状态,这样才能接收到网络数据。N

猜你喜欢
网卡内存选项
部署Linux虚拟机出现的网络故障
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
Server 2016网卡组合模式
跟踪导练(四)
阅读理解
跟踪导练(5)
单项填空精选练习100道
内存搭配DDR4、DDR3L还是DDR3?
挑战Killer网卡Realtek网游专用Dragon网卡