2008年2月15日 星期五

網路喚醒的應用(Application of WOL)

網路喚醒(Wake On LAN)」已經不是什麼新名詞!新主機板上的內建網路晶片,幾乎都具有這功能,就連最多人有的D牌網路卡(PCI介面),也都支援此功能。

不過...一般人要用到這功能的機會不多,自己在家時,走過去按下電源鍵還比較快,更別提要透過另一台電腦來遠端喚醒,有這種需求的人,應該是工作地點不一定人力卻相當吃緊的工作環境,以現在愈來愈吃緊的IT人力來說,應該有不少人需要吧!?

況且這功能從LAN的字意上來看,它原本就是設計在區域網路(LAN)下使用,如果想要在廣域網路(WAN)的環境下使用該功能,你的IP分享器或是ROUTER就要有提供「Subnet Directed Broadcasts」或類似的功能(一般家用機種應該都沒有),不然就是讓電腦直接上網,不經過其它設備,只是用這種方法所增加的風險過高,所以我是用一台長時間開機的主機(LINUX或WINDOWS皆可)當中介點來達到此目的。

提醒大家一下,無論採用何種方法都有風險,端看自己怎麼衡量...

我採用的方式是經過一台不關機的LINUX(CENTOS v5.1)來當中介點,只對特定網域開放SSH的服務(或是透過網頁來動態開啟SSH可存取的IP,可以參考鳥哥的教學)再透過中介點來網路喚醒區網內特定一台的PC,再透過遠端存取技術(VNC、遠端桌面...等)來獲取遠端電腦裡的資料,甚至可以透過中介點來掛載(MOUNT)被開啟的電腦,也能夠讓在外奔波的IT人,在情急且人力不足的狀況下,得到公司內部裡的資料。

雖然類似的功能在某些中高階的網路設備也有,但是對於預算永遠不夠的IT部門來說,自力更生是不變的法則,現在就來導入正題吧!

首先還是要介紹一下WOL所需的條件為何?

1.主機板支援Wake On LAN的功能。(BIOS開啟)
2.網路卡支援Wake On LAN。
3.PCI的網卡與主機板以三線的接線連結(若支援PCI2.2者免)
4.需保留電源給網路卡。(現在的ATX均可支援,設定如下)



除了以上的條件之外,在WOL的步驟裡還有一個很重要的東西,那就是魔法封包(Magic Packet)的產生,因為我採用的是LINUX的系統,所以我是用了一個很小的程式(ether-wake.c)來產生魔法封包,實際的運作方式如下圖所示:

1.下載ether-wake.c:指令「wget 加上網址」



2.產生名為wol(可自訂)的執行檔:

指令:cc -O -Wall -o wol ether-wake.c
       ↑   ↑  
     編譯參數 輸出檔名


說明:雖然有警告訊息,但是產生出來的執行檔仍然可以正常使用,據朋友指出,可能是不同版本LINUX有關。(目前尚未找出該訊息的含意,若有好心人士歡迎指教)

3.利用執行檔來網路喚醒:./wol -v -b MAC -i interface



常用參數說明:
-v 追蹤封包與顯示版本
-b 要喚醒電腦的網卡MAC
-i 透過那張網路卡發送魔法封包
除了LINUX的程式之外,WINDOWS當然也有產生魔法封包的程式,可以參考WOLCMDWake on Lan for Windows GUI

如此一來就能夠開啟具備WOL功能的PC了,再來就是透過資料掛載遠端控制(視頻寬而定),來存取公司內部的資料。

不過,在喚醒電腦之後,要怎麼進到那台電腦裡存取資料,是另一個層面的問題,尤其是安全便利性的考量。所以在決定怎麼應用之前,還是得事先做好準備,以免主機是開了沒錯,反而會讓自己陷入「看得見,吃不著」、「好東西與好朋友共享」的窘境之中。

PS:
後續有時間,會再補上實作時需注意的細節。(歡迎指教)