Wake On Lan 網路喚醒設定程序:
1. 首先確定主機的主機板帶有網路卡及WOL功能,開啟電腦及進入BIOS,找出Power On或Wake On Lan等功能,及設定為「Enable」。
2. 然後進入Windows XP的「控制台」-->「系統」-->「硬體」-->「裝置管理員」-->「網路介面卡」中的正使用的網路卡。進入「內容」-->「電源管理」,勾選「允許這個裝置重新啟動待命狀態的電腦」。有些網路卡更提供特別的WOL的開啟設定,到它的「進階」頁,選「WakeOnLAN From PowerOff」,設定為「Enable」。
3. 查找所使用的網路卡所用的MAC Address,到DOS模式下,輸入「ipconfig /all」,找出正使用的網路卡上的「IP Address」位置是甚麼,例如:「192.168.1.100」。
4. 由於例子「192.168.1.100」為內部的虛擬IP,只限於在內部網路範圍才能適用。如要在外面透過「寬頻IP分享器router」來啟動內聯網的電腦,便需取得「寬頻IP分享器router」的對外真實固定IP才能使用。如果「寬頻IP分享器router」亦帶有防火牆功能,WOL便需使用特別開啟的Port。
5. 首先到「IP分享器router」的設定內(進入方法參考各家說明書),進入「通訊埠轉送Port Forwarding」一項,將Port 9及32767開啟,並輸入要以WOL啟動的電腦IP位址如「192.168.1.100」,便可讓Magic Packet透過「寬頻IP分享器router」傳送到要啟動的電腦。
6. 再進入「Router Status」路由器狀態一頁,查找「Internet Port」的IP Address。注意:一般重新啟動「寬頻IP分享器router」,若有設定DHCP,須注意IP Address會不會重新更新。
7. 關掉要啟動的電腦。
WOL啟動電腦的程序:
1. 要以WOL Magic Packet來啟動電腦,可嘗試使用免費的「AMD PCnet Magic Packet Utility」工具。(下載網址:magic_pkt.exe)
2. 啟動程式,進入「Power On One Host」,再輸入從「寬頻IP分享器router」得到或電腦本身的IP位址及網路卡的MAC Address,按下「Send」鍵便可送出要啟動的Magic Packet訊息來啟動遠方的電腦了。
3. 另外,亦可透過互聯網方式來啟動電腦,到這網址:http://www.dslreports.com/wakeup,輸入IP位址及MAC Address,便可輕易啟動電腦。(IP位址就是IP共享器的固定IP,MAC Address就是指向要啟動電腦的MAC Address)
4. 注意:如不能以WOL啟動電腦,請再檢查所提供的要求設定。或者要使用「寬頻IP分享器router」的DMZ功能,但啟動了DMZ功能,便不能為電腦提供硬體式的防火牆保護。另外要確定電腦已接上電源,只差沒按「開關」鍵而已 (即要將電腦處於Soft-off的狀態)。
------------------------------------------------------------------------------------
接下來我將說明遠端喚醒程式的原理與實作方式,由於牽涉到程式寫作,一般而言,實作遠端喚醒功能的方式有許多種,其中一種 AMD 稱為 Magic Package (神奇封包),他的原理相當簡單,就是網路卡它會利用極低的電壓,來維持一個基本運作,它會不斷的偵測外界傳來的訊號,如果該封包的訊號包含有一組 Magic Package 時,它就會發出開機訊號給主機板,讓主機板啟動,你的電腦當然也就能夠遠端喚醒,再加上遠端控管的軟體,又省電,又方便!
問題是這個 Magic Package 是怎樣的格式呢?根據 AMD 的說法,這個 Magic Package 必須要是這樣的格式
DESTINATION SOURCE MISC FF FF FF FF FF FF 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 MISC CRC
仔細觀察這段格式,可以發現,連續有六個位元組(Bytes),其值為 FF,這是同步訊號,接下來,連續重複 16 次出現的11 22 33 44 55 66,則是遠端要被啟動開機電腦網路卡的 MAC 位址,這是神奇封包的最主要部分,其餘部分,在實作時可以忽略,因為主要部分只要符合前述的規定(6 bytes 的同步訊號 FF + 連續16次網卡的MAC 位址),它是可以位於封包的任何位置。
瞭解了原理,我們就可以開始撰寫簡易的遠端喚醒程式,由於要送出網路封包,所以,我們將運用 TCP/IP 協定來實作,一方面是較容易撰寫,二方面是TCP/IP協定的運用層面較廣,但運用TCP/IP來實作,有幾點是必須注意的:
(1) TCP/IP協定在傳輸層,分為TCP與UDP,我們必須選哪個?由於TCP的協定,是屬於可信賴性的協定,也就是溝通的雙方必須都要交握確認成功後,才開始傳資料,否則將產生錯誤訊息,顯然,選擇TCP協定將導致遠端喚醒程式無法運作,因為,被喚醒端尚未開機,所以,TCP在雙方交握確認階段是不可能成功的,當然資料也就傳不出去。
(2) 不管TCP或UDP都必須指定IP及Port號,IP位址部分應該填該網段的廣播位址,至於Port 號,由於遠端喚醒功能是由OSI的第二層鏈結層在處理,因此這部分可以不考慮,隨便填一個就好,80埠是相當不錯的選擇,因為它可以通過大部分的防火牆,但一般WOL都選用7或9,為了不跟Port 80相衝。
(3) MAC如何的取得?最正規的作法是利用ARP協定,透過程式事前取得,並建立成資料庫,但又是另一個主題了,本文將不介紹這部分,留待來日再談…….至於MAC位址,讀者就先啟動被喚醒端的電腦,利用 ipconfig/all 指令,先記下其 MAC 位址,以便測試時填入。
所以傳送協定可以採用UDP,Port 為7或9。
沒有留言:
張貼留言