WOL(Wake-up On LAN),也稱為局域網喚醒,從根本上來說是計算機硬件設備提供的一項管理功能。該功能可以實現當計算機處于關機或休眠狀態(tài)時,通過向計算機上的網卡發(fā)送一個特定的數據包來命令網卡向主板發(fā)送開機指令(就像計算機的開機按鈕被按下一樣),進而讓計算機上電開機。
這個特定的數據包(也被稱為喚醒指令),是一個有著特定格式的數據包(Magic Packet,魔幻包),其格式為連續(xù)6個字節(jié)的“FF”和連續(xù)重復16次的目標網卡的MAC(Media Access Control或Medium Access Control,媒體訪問控制,或稱為物理地址、硬件地址)地址,因此該喚醒指令的總長度為102(=6+16*6)個字節(jié)。
由此可見,WOL功能需要兩方面的支持:一方面是計算機硬件(主要是主板和網卡)的支持。目前幾乎所有品牌的計算機硬件都支持WOL,但出于安全考慮有些計算機硬件默認將WOL關閉。由于每臺計算機上的主板和網卡千差萬別,所以在啟用WOL功能前,需要檢查并設置好這兩個硬件上的相應參數。另一方面是軟件的支持,也就是能夠發(fā)送“喚醒指令”的軟件。這類軟件有很多,其中最著名的就是“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操作系統(tǒng)的“桌面”,按下“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地址(地址中的字母不區(qū)分大小寫)。點擊“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口交換機有故障。
筆者決定先從容易診斷的地方網線,開始排錯工作。
筆者先將連接計算機B的那根網線用測線儀檢測,測線儀顯示的指示燈都會亮而且序號也都是正確,這表明網線兩頭的水晶頭及其之間的線纜都沒有異常。接著筆者將這根網線放到其它計算機上進行連接測試,也顯示正常。對于連接計算機C的那根網線,筆者也如此測試,一切正常。這就排除了網線的問題。
接下來,筆者將那臺5口交換機與其它計算機連接,這些計算機訪問網絡都很正常,也就排除了交換機的問題??磥韱栴}還是出在計算機B的WOL設置上,接下來檢查的重點應該落在WOL的相關參數設置上。
筆者先從計算機B的BIOS設置開始查起,相關參數檢查了都沒發(fā)現有錯,但參數注釋中有一句話“This feature only works when the computer is connected to AC.”(此 功能僅在計算機連接到交流電時才起作用)讓筆者警醒,這時才發(fā)現計算機B沒有插上外界電源插頭,正在處于電池供電狀態(tài)。
筆者馬上為計算機B插上外界電源插頭,讓其通上市電。
筆者以為問題解決了,于是重復操作3的步驟,可計算機B還是沒有任何反應??磥砥渌胤竭€存在問題,難道是網卡?
圖4 開啟網卡屬性
圖5 啟用網卡屬性
筆者按下計算機B的電源按鈕,登錄Windows操作系統(tǒng)。打開“設備管理器”中網卡的“屬性”對話框對網卡的各項參數進行檢查,發(fā)現“高級”選項卡中“關機網絡喚醒”屬性的值居然是“關閉”,如圖4所示。
這就難怪了,筆者馬上將值選為“開啟”,并點擊“確定”按鈕。然后正常關閉計算機B。
筆者又重復操作3的步驟,計算機B仍舊沒有任何響應。不會是計算機B的網卡的參數還沒完全設置好吧?
筆者再次手動開啟計算機B的電源,登錄Windows操作系統(tǒng)。繼續(xù)對網卡的參數進行檢查,這時又發(fā)現在“電源管理”選項卡中“允許計算機關閉此設備以節(jié)約電源”選項未被勾選,如圖5所示。
筆者記得好像這個選項默認是勾選的,難道和它有關?筆者試著選中這個選項,點擊“確定”按鈕后正常關閉計算機B。
這時筆者嘗試著再一次重復操作3的操作,計算機B的電源燈突然亮了,接著整個鍵盤燈也亮了,馬上計算機B的品牌徽標就顯示出來,不一會兒就出來了Windows系統(tǒng)的登錄界面,遠程啟動計算機B成功了。
筆者又反復操作了多次,計算機B每次都能喚醒成功。
筆者又對計算機C“依法炮制”,同樣能通過計算機B喚醒計算機C,至此WOL設置才算熟悉了。
而后筆者對計算機A進行相應調整,終于實現了讓計算機A遠程開機的功效。
雖然當初的目的已經達到,但是筆者覺得還需對WOL繼續(xù)進行探究。Windows系統(tǒng)提供了不同的電源選項,可供用戶選擇讓計算機進入“睡眠、休眠、關機、待機”等不同模式。這幾種模式的區(qū)別主要是:
Windows首先要關閉所有運行中的程序,然后關閉系統(tǒng)后臺的服務,接著向主板和電源發(fā)出特殊的信號,讓電源切斷對所有設備的供電,計算機徹底關閉。
Windows會自動向電源發(fā)出另一種特殊信號,隨后電源會切斷除了內存外其他設備的供電,內存中依然保存了系統(tǒng)運行中的所有數據。下次開機,只要通電,Windows就會繼續(xù)從內存中保存的上一次的“狀態(tài)數據”下運行。但有一個致命的缺陷:不能停止對內存的供電,否則內存中的數據將丟失,下次開機將會像關機狀態(tài)那樣啟動。
Windows會將內存中的數據保存到硬盤上系統(tǒng)盤根目錄下的一個文件中(即內存狀態(tài)的“鏡像”)。下次開機后則從硬盤上的那個“鏡像”文件內讀取數據,并載入物理內存,從而恢復到上一次的“休眠”前的運行狀態(tài)。它改進了“待機”模式的缺點——斷電后數據不會丟失。
Windows會首先將內存中的數據保存到硬盤上(這一點類似休眠),同時切斷除了內存外其他設備的供電(這一點類似待機)。在恢復時,如果沒有斷過電,那么系統(tǒng)會從內存中直接恢復;否則將硬盤中保存的內存的狀態(tài)鏡像恢復到內存中。
上述操作成功的只是計算機B處于“關機”模式下的,那其它模式下是不是也能WOL呢?所以筆者覺得需要繼續(xù)進行摸索。
筆者首先讓計算機B進入“睡眠”狀態(tài),然后重復操作3的步驟,計算機B沒有任何響應。為什么會這樣呢?筆者估摸問題應該還是出在計算機B的相關參數設置上。
這時筆者突然想起,在計算機B的網卡的“電源管理”選項中,“允許計算機關閉此設備以節(jié)約電源”選項未被勾選時,其下的“允許此設備喚醒計算機”選項是灰色的,不可選。而一旦“允許計算機關閉此設備以節(jié)約電源”被勾選,則“允許此設備喚醒計算機”選項也就有效,能被勾選。
筆者思考了一下,決定勾選“允許此設備喚醒計算機”選項并保存。然后讓計算機B再次進入“睡眠”狀態(tài),接著重復操作3的操作,計算機B居然能被喚醒。
之所以會這樣,筆者分析可能是:計算機B進入“睡眠”狀態(tài)后,網卡也和除了內存外的其它硬件一樣被斷電了,“允許此設備喚醒計算機”選項被勾選則等于通知Windows在計算機進入“睡眠”狀態(tài)后不切斷網卡的供電,這樣就讓網卡處于活躍狀態(tài),也就能收到網線上傳過來的喚醒指令,從而喚醒計算機。
而且筆者發(fā)現,“允許此設備喚醒計算機”選項被勾選后,即使計算機B被關機也同樣能被遠程喚醒,所以建議在勾選“允許計算機關閉此設備以節(jié)約電源”選項時一并勾選該選項,這樣計算機不管是處于“關機”狀態(tài)還是“睡眠”狀態(tài)都能被遠程喚醒。
圖6 Windows XP的主板和網卡參數
實際上“睡眠”模式是“待機”模式和“休眠”模式的功能的集合,所以“休眠”模式可算得上是“睡眠”模式的一個子系統(tǒng)。筆者經過測試,發(fā)現在參數設置上“休眠”模式和“睡眠”模式完全相同,所以可參照上述設置操作。
圖7 Windows XP的BIOS參數
“待機”模式是Windows Vista以下版本的系統(tǒng)(如:Windows XP)中才有的,而從Vista開始的版本(如:Windows Vista、7、8、10 等)更換為“睡眠”模式。
于是筆者找來了一臺安裝Windows XP系統(tǒng)的臺式計算機,經過檢查,主板和網卡都支持WOL。于是筆者參照前述的操作進行配置,這臺XP計算機能夠在“關機”和“待機”狀態(tài)被正常遠程喚醒。區(qū)別之處只是相關參數的名稱和前面的不太一樣而已,如圖6所示。
在XP系統(tǒng)的配置過程中,也曾發(fā)生過喚醒失敗的情況,經檢查系這臺臺式計算機的BIOS中的“Power Management”的“Low Power Mode”項中的“Enable Low Power Mode”參數被勾選導致的,如圖7所示。因為這與“Remote Wake Up”選項中 的“Enable with Boot to NIC”參數產生沖突。取消勾選“Enable Low Power Mode”參數后問題得以解決。
計算機處于不同電源模式下的WOL問題已經得到解決。
經過筆者一番摸索,發(fā)現若要想實現跨網段的WOL,則需要借助相應的第三方軟件(如LanHelper)來實現。
之所以要更換軟件是因為AMD推出的這款“Magic Packet Utility”軟件采用了廣播的方式發(fā)送“喚醒指令”數據包,而廣播只能在同一個網段中有效,跨網段則會被路由器過濾掉。所以跨網段的廣播必須得到路由器的“IP directed broadcast(IP定向廣播)”支持。由于IP定向廣播經常會成為黑客進行“smurf”式“拒絕服務”攻擊(Denial of Service,DoS)的工具,所以現在基本上所有的路由器都是默認關閉的,且筆者也不贊成在局域網內開啟該廣播。
注 意 :Smurf攻 擊 是通過使用將回復地址設置成受害網絡的廣播地址的ICMP應答請求(ping)數據包,來淹沒受害主機,最終導致該網絡的所有主機都對此ICMP應答請求做出答復,導致網絡阻塞。
LanHelper軟件的操作比較簡單,應該很容易熟悉。要想對計算機進行遠程開機,需要先添加目標計算機而后才能操作。
具體操作是:先單擊“工具”-->“遠程開機”菜單,再單擊“遠程開機”窗口-->“常規(guī)”選項卡-->“添加”按鈕,接著在“目標設置”對話框中輸入“名稱”、“IP廣播地址”、“MAC地址”等參數,最后再單擊“確定”按鈕兩次,就能在“遠程開機”窗口中顯示出來,如圖8所示。
圖8 添加目標計算機
圖9 LanHelper發(fā)送喚醒指令
要想打開遠程計算機,操作很簡單。具體步驟是:先單擊“工具”-->“遠程開機”菜單,再單擊“遠程開機”窗口-->“常規(guī)”選項卡中要想操作的計算機,接著單擊“開機”按鈕,會彈出相應的提示信息,如圖9所示,告知喚醒指令已經發(fā)送給指定的計算機了。如果一切正常的話,遠程計算機應該會正常被喚醒。
LanHelper軟件提供了多種發(fā)送“喚醒指令”的方式:本地子網、單播、因特網和定向廣播,這幾種方式既能喚醒同網絡中的計算機,也能喚醒不同網段中的計算機。利用“定向廣播”方式就能實現在“IP directed broadcast(IP定向廣播)”關閉的情況下,跨網絡發(fā)送“喚醒指令”從而喚醒其它網段中的計算機。
這幾種方式的設置方法:先單擊“工具”-->“選項”菜單,再單擊“選項”窗口-->“遠程開機”選項卡,接著單擊“IP廣播地址”選項-->“發(fā)送選項”下拉列表框中的選項,就可設置不同的發(fā)送指令方式,實現對不同位置的計算機進行操作。
WOL功能的啟用有兩點需要注意:第一,由于WOL功能與計算機的主板和網卡相關,所以對于一些早先型號的計算機(如2000年以前的),有可能會出現計算機的主板和網卡只有其一支持或者都不支持的情況。第二,對于硬件配置較老舊的計算機,如果計算機非正常關機(比如直接按下主機的電源開關來強制關閉計算機)是無法WOL的。只有正常關機后,網卡才會被正常供電而處于活動狀態(tài),這樣才能接收到網絡數據。N