Jumat, 05 November 2010

7.Tutorial Wake-on-LAN dengan PHP Script

Beberapa waktu yang lalu saya pernah ditanya sama sepupu saya tentang bagaimana cara menghidupkan computer dari Jaringan. Saya jelaskan bahwa saya pernah melihat sekilas di setting BIOS bahwa ada fitur Wake-on-LAN (yang terus terang saya sendiri belum pernah mencobanya). Dan seperti yang saya duga, sepupu saya yang aneh dan BF (Bujang Forever) itu kurang puas dengan jawaban saya. Sori Bro :). Maklum sekarang udah ndak banyak bergaul dengan komputer lagi.

Nah kebetulan sekali saat browsing seolah-olah menjawab pertanyaan itu, saya menemukan sebuah artikel untuk membuat PHP Script yang tugasnya membangunkan computer kita melalui LAN. Ok, ini artikelnya siapa tau kamu pengen nyoba.
Buat kamu yang sering ngoprek BIOS/CMOS setting pasti udah ndak asing lagi dengan cara melakukannya. Nah buat kamu yang belum familiar, akses ke BIOS computer ini biasanya dilakukan saat booting dengan menekan tombol F1, F2 atau Delete. Ingat kamu harus menekan tombol itu sebelum operating system mulai jalan.

Mungkin kamu yang udah sering ngoprek BIOS hapal dengan semua setting yang ada di BIOS, nah khusus yang satu ini Wake-on-LAN kayaknya belum banyak yang tahu fungsinya. Fungsi Wake-on-LAN ini akan membuat komputer untuk booting berdasarkan perintah khusus yang dikirim melalui jaringan dan diterima di Card Network kita. Keren kan ?

Bagaimana Cara Kerjanya

Wake-on-LAN sepertinya tidak memiliki cukup dokumen yang menjelaskan fungsinya secara detil. Namun demikian, kira-kira cara kerjanya seperti ini: dengan mengaktifkan fungsi tersebut, maka kamu membuat perangkat jaringan di PC kamu dalam keadaan setengan bangun sementara peralatan computer lainnya dalam kondisi mati. Dalam kondisi tersebut, konsumsi daya listrik akan sangat minimal selama keadaan setengah bangun tadi, sedangkan card network tetap memonitor paket-paket yang diterimanya dari jaringan bagaikan singa menanti mangsanya.

Si card jaringan tadi menantikan sebuah paket ajaib yang berisi byte FF FF FF FF FF FF yang diikuti dengan MAC Address network card tersebut.

Cara Membuat Paket Ajaib

Paket Ajaib tersebut dapat dibuat dengan PHP Script dengan cukup mudah. Kamu bisa juga donlot freeware di depicus untuk mengaktifkan komputer kamu dari jarak jauh tanpa harus membuat PHP Script. Namun kalau kamu pengen mencoba bikin sendiri script PHPnya, kamu bisa coba PHP Script berikut:

1.
2. # Wake on LAN - (c) HotKey@spr.at, upgraded by Murzik
3. # Modified by Allan Barizo http://www.hackernotcracker.com
4. flush();
5. function WakeOnLan($addr, $mac,$socket_number) {
6. $addr_byte = explode(':', $mac);
7. $hw_addr = '';
8. for ($a=0; $a <6; $a++) $hw_addr .= chr(hexdec($addr_byte[$a]));
9. $msg = chr(255).chr(255).chr(255).chr(255).chr(255).chr(255);
10. for ($a = 1; $a <= 16; $a++) $msg .= $hw_addr;
11. // send it to the broadcast address using UDP
12. // SQL_BROADCAST option isn't help!!
13. $s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
14. if ($s == false) {
15. echo "Error creating socket!\n";
16. echo "Error code is '".socket_last_error($s)."' - " . socket_strerror(socket_last_error($s));
17. return FALSE;
18. }
19. else {
20. // setting a broadcast option to socket:
21. $opt_ret = socket_set_option($s, 1, 6, TRUE);
22. if($opt_ret <0) {
23. echo "setsockopt() failed, error: " . strerror($opt_ret) . "\n";
24. return FALSE;
25. }
26. if(socket_sendto($s, $msg, strlen($msg), 0, $addr, $socket_number)) {
27. echo "Magic Packet sent successfully!";
28. socket_close($s);
29. return TRUE;
30. }
31. else {
32. echo "Magic packet failed!";
33. return FALSE;
34. }
35.
36. }
37. }
38. // Port number where the computer is listening. Usually, any number between 1-50000 will do. Normally people choose 7 or 9.
39. $socket_number = "7";
40. // MAC Address of the listening computer's network device
41. $mac_addy = "00:12:4G:SF:12:13";
42. // IP address of the listening computer. Input the domain name if you are using a hostname (like when under Dynamic DNS/IP)
43. $ip_addy = gethostbyname("myhomeserver.dynamicdns.org");
44.
45. WakeOnLan($ip_addy, $mac_addy,$socket_number)
46.
47.
48. ?>


Masalah Yang Sering Terjadi
Meskipun kamu bisa membuat komputer kamu bangun dari jarak jauh, namun ada beberapa hal yang perlu menjadi perhatian kamu saat melakukan implementasinya:

Wake-on-LAN sepertinya hanya bekerja untk Ethernet. Sori ya para fans WiFi nampaknya sementara harus gigit jari.

Card Jaringan dan BIOS yang tidak kompatibel. Artinya tidak semua computer punya fitur menarik ini.

Infrastruktur Jaringan. Agar Wake-on-LAN dapat bekerja, paket ajaib tadi harus melalui rute langsung khusus berdasarkan alamat IP. Hal ini berarti bahwa jika kamu mengakses Wake-on-LAN melalui router atau computer kamu menggunakan IP bersama (shared IP) maka kamu harus melakukan mapping khusus saat mengirimkan paket ajaib tadi melalui Internet.


Tips tambahan

Kalau kamu masih mengalami masalah saat mencoba WOL, kamu bisa mencoba untuk menggunakan IP broadcast di segmen network tempat computer kamu berada. IP broadcast adalah IP di segmen network yang bisasanya diakhiri dengan angka 255 (misalnya 192.168.0.255).

Selamat mencoba.



Tidak ada komentar:

Posting Komentar