2009年5月15日 星期五

Wake on LAN 軟體和介紹

Wake on LAN,就是透過Ethernet來啟動主機,主機有些需求及設定(參考相關文章),
軟體方面就是送個magic packet...
可以在LAN運作,也可以跨網來運作,不過跨網運作,需要Router支援

基本上這個magic packet是個UDP封包,不過它的DATAGRAM,包括了一串6個位元組的0xFF同步串流(Sync Stream),然後是重複16次要喚醒主機的MAC位址,所以DATAGRAM長度是102個位元組

建議是用UDP port 7,不過用Wireshark來監看時,它會以為是ECHO協定的request...
PS : 在公司測試時,發現有一台機器會回我ECHO協定的Response(我又不方便問這台機器是做啥的),不過也許是這個原因,讓Solarwind的Wake-On-LAN軟體(只能用port 7),沒法成功喚醒我希望喚醒的主機


例如AMD的magic_pkt.exe是用Port 2304,Wireshark可以辨識出來,
基本上,如果不是用了一些有名號的協定所用的port,Wireshark都可以分辨出來
或者,用Port 9,也是建議選項(也許我應該找協定規格看看....)

關於Router的支援:

就我的認知,Router(或IP分享器)的支援,需要開放一個Port(7或9),所有進來的封包,都要修改IP目的位址為255.255.255.255,這樣封包的目的MAC位址也會變成FF-FF-FF-FF-FF-FF,然後送到LAN廣播去

我們不需要將目的MAC位址換成要喚醒主機的MAC位址,被喚醒的主機是檢查UDP的DATAGRAM來確定是否要喚醒,當然,也許置換成喚醒主機的MAC位址,也可以,不過沒試過...

這樣的設定,有很大的風險,只要透過這個Port,就可以對LAN內的機器做廣播,要是某一台機器有一些漏洞,那就中招了,所以應該多些規則來限制,例如只能是UDP封包,還有能辨識出Magic Packet的封包,取出要喚醒機器的MAC位址,來和設定允許主機的MAC位址列表來比對,不過這樣Router的Loading就大了(或者稱是特殊型的NAT)

PS 1:出個題目,用Linux主機來設定這樣的功能,有機會試試看!!!
PS 2:我不知道有哪些IP分享器有支援,事實上,跨網的運作我也沒試過...
PS 3:下面連結,介紹了三款軟體,在LAN內測試時,
        若有需要IP位址,就輸入255.255.255.255,若有需要NETMASK,也輸入255.255.255.255

注意事項:
1. 有些舊機型,雖然有支援,不過如果有斷電的情形(像是插頭拔掉再插回去),會無法initial,監控magic packet
2. 如果機器是按著power鍵來關掉的,即使有支援,機器也會無法監控magic packet

Qt Creator練習:這個題目很簡單,拿來練習工具的使用,蠻好的,之後也許寫篇"Qt Creator的使用心得"
下載

用C++ Builder寫Wake on LAN的功能:
http://hugolin888.blogspot.com/2007/02/wake-on-lan.html

透過網站服務來傳送magic packet...蠻方便的,不過還沒試過
http://www.dslreports.com/wakeup
http://www.wakeonlan.me/

軟體:
http://www.amd.com/us-en/assets/content_type/utilities/magic_pkt.exe
http://www.solarwinds.com/products/freetools/wake_on_lan.aspx
http://www.depicus.com/wake-on-lan/wake-on-lan-gui.aspx

參考連結:
http://www.wretch.cc/blog/josephphoto/3511150
http://www.wells.hk/ws_toolsdetail.php?tools_id=1103103253
http://myhome.ethome.com.tw/xanche/p200708300.htm
http://www.smallnetbuilder.com/content/view/29941/53/
http://wordpress.morezman.com/?p=100
維基百科