http://seunghan.tistory.com/329
http://dorigom.springnote.com/pages/1519772
1. Á¶°Ç
- ·£Ä«µå¿¡¼ Wake-on-LAN ±â´É Áö¿ø
- Wake-on-LAN ±â´ÉÀ» Áö¿øÇÏ´Â ÀÎÅͳݰøÀ¯±â
2. ¹ÙÀÌ¿À½º ¼³Á¤
- Award BIOS
.PCI configuration > Onboard LAN Boot ROM : Enable
.Power > Power Up Control > Power Up On PCI Card :Enable
- Phoenix BIOS
.Wake On Lan : Enable
3. ·£Ä«µå ¼³Á¤
- Realtek Ĩ¼Â
.Àü¿øÀ» Àý¾àÇϱâ À§ÇØ ÄÄÇ»ÅͰ¡ ÀÌ ÀåÄ¡¸¦ ²ø ¼ö ÀÖÀ½ : »ç¿ë
.ÀÌ ÀåÄ¡·Î ÄÄÇ»Å͸¦ ´ë±â»óÅ¿¡¼ ºüÁ®³ª¿À°ÔÇÔ : »ç¿ë
.°ü¸® ½ºÅ×À̼ǿ¡¼¸¸ ´ë±â ¸ðµå »óÅÂÀÇ ÄÄÇ»Å͸¦ ÇØÁ¦ ½Ãų ¼ö ÀÖÀ½ : »ç¿ë
- Intel Ĩ¼Â
.Àü¿øÀ» Àý¾àÇϱâ À§ÇØ ÄÄÇ»ÅͰ¡ ÀÌ ÀåÄ¡¸¦ ²ø ¼ö ÀÖÀ½ : »ç¿ë
.ÀÌ ÀåÄ¡·Î ÄÄÇ»Å͸¦ ´ë±â»óÅ¿¡¼ ºüÁ®³ª¿À°ÔÇÔ : »ç¿ë
4. ½Ã½ºÅÛ Äѱâ
- ¸ÅÁ÷ÆÐŶ º¸³»´Â À¯Æ¿ , »çÀÌÆ®
.WakeOnLanGui ¶Ç´Â www.depicus.com/wake-on-lan/woli.aspx
ÁÖ¼Ò , IP , ¼ºê³Ý , Æ÷Æ® ÀÔ·ÂÈÄ Àü¼Û
- WAKE ON LAN ¸ÅÁ÷ ÆÐŶ ÇÁ·Î±×·¥ (÷ºÎÆÄÀÏ ´Ù¿î·Îµå)
.LAN »ó¿¡¼ÀÇ ³»ºÎ IP »ç¿ëÇÑ ºÎÆÃ
¸Æ ¾îµå·¹½º, LAN IP(³»ºÎ IP), ¼ºê³Ý 255.255.255.0, Local Subnet ¼±ÅÃ, ¿ø°ÝÆ÷Æ®¹øÈ£X
.WAN »ó¿¡¼ÀÇ IP »ç¿ëÇÑ ºÎÆÃ
¸Æ ¾îµå·¹½º, WAN IP(¿ÜºÎ IP), ¼ºê³Ý 255.255.255.255, internet ¼±ÅÃ
WOL(Wake on Lan)ÆíÁýÇϱâ http://kldp.org/Translations/html/WakeOnLan-KLDP/index.html
What?
Ưº°È÷ ¼³°èµÈ ³×Æ®¿÷ ÆÐŶÀ» »ç¿ëÇÏ¿© ¿ø°ÝÀÇ ÄÄÇ»Å͸¦ ±âµ¿ÇÏ´Â °ÍÀÌ´Ù. ÀÌ ±â´ÉÀº ³×Æ®¿÷ Ä«µå¿Í ¸¶´õº¸µå°¡ Wake on LanÀ» Áö¿øÇؾ߸¸ Á¦´ë·Î µ¿ÀÛÇÑ´Ù.
How?
WOL Àº ´ÙÀ½°ú °°Àº ¿ø¸®·Î µ¿ÀÛÇÑ´Ù:
PC ¸¦ Á¾·áÇÒ ¶§ NIC (³×Æ®¿÷ Ä«µå) Àº ¿ÏÀüÈ÷ ²¨Áø °ÍÀº ¾Æ´Ñ »óÅ·Π¿©ÀüÈ÷ ÄÑÁ® ÀÖÀ¸¸ç, '¸ÅÁ÷' ÆÐŶÀÌ ¿À´ÂÁö »ìÆìº¸°í ÀÖ´Ù. ÀÌ ÆÐŶÀº ƯÁ¤ÇÑ ¹®ÀÚ¿ (byte-sequence) ÀÌ Æ÷ÇԵǾî ÀÖ¾î¾ß Çϸç, ¾Æ¹« ÇÁ·ÎÅäÄÝ (À̸¦Å׸é IPX, IP µûÀ§) ¿¡³ª ¾ñÇô¿À¸é µÈ´Ù. '¸¶¹ýÀÇ' ¹®ÀÚ¿À» ¸¸µå´Â Äڵ带 ÂüÁ¶Çϱ⠹ٶõ´Ù.
ÀÌ ÇÁ·Î±×·¥Àº UDP ¸¦ »ç¿ëÇØ¼ ÆÐŶÀ» º¸³½´Ù. ÀÌ´õ³Ý ÀÎÅÍÆäÀ̽º·Î Àü´ÞµÇ´Â UDP ÆÐŶÀÇ ¿ÏÀüÇÑ ¸ð½ÀÀº ¾Æ·¡¿Í °°Àº °ÍÀÌ´Ù:
[ethernet header][IP header][UDP header][Magic sequence][CRCS]
½ºÅ©¸³Æ®´Â ´ÜÁö ÀÌ ÆÐŶÀ» º¸³»´Â °ÍÀ¸·Î Á·ÇÏ´Ù. NIC Àº ¼ö½Å¸¸ ÇÒ »ÓÀÌ¸ç ¹«¾ð°¡ ÀÀ´äÇÏ´Â °ÍÀÌ ¾øÀ¸¹Ç·Î, ÀÌ ÆÐŶÀ» º¸³½ ÈÄ µ¹¾Æ¿À´Â µ¥ÀÌÅÍ µî¿¡ ´ëÇØ¼´Â ½Å°æ¾²Áö ¾Ê¾Æµµ ÁÁ´Ù.
ÇÁ·ÎÅäÄÝ¿¡ ´ëÇÑ Á» ´õ »ó¼¼ÇÑ ¼³¸íÀº AMD ¹é¼¸¦ Âü°íÇ϶ó.
http://www.chocomug.com/tt/chocomug/292
http://www.remotewakeup.com/
http://en.wikipedia.org/wiki/Wake-on-LAN
¿¹Á¦¼Ò½º
Wake-On-Lan
It¡¯s so sweety to maintain all workstations automatically in, say, 3am at night :) But this requires to turn it all on, and switch off after maintenance. Shutdowning is not a problem, but turning on¡¦ Turning on is not a problem too, but <=> your workstations support Wake-On-Lan technology.
Here a small C example how to invoke Wake-On-Lan.
Algo is simple - broadcast UDP magic-packet.
Magic packet consists of:
Six 0xFF bytes
Target MAC address repeated sixteen times.
If, say, target MAC is 32:00:00:23:11:13. Magic packet is
FF FF FF FF FF FF 32 00 00 23 11 13 32 00 00 23 11 13 32 00 00 23 11 13
32 00 00 23 11 13 32 00 00 23 11 13 32 00 00 23 11 13 32 00 00 23 11 13
32 00 00 23 11 13 32 00 00 23 11 13 32 00 00 23 11 13 32 00 00 23 11 13
32 00 00 23 11 13 32 00 00 23 11 13 32 00 00 23 11 13 32 00 00 23 11 13
32 00 00 23 11 13
Ok, ive stop bugging you and here is the code:
/**
* wol.c - Wake-On-Lan example.
*
* 2008, Michelle Beloshitsky (itanko@li.ru)
*
**/
#include "winsock2.h"
#include "stdio.h"
#define MYPORT 2050
#define MAGIC_PACKET_SIZE 6*17
/**
* Creates magic packet
**/
char* do_magic(char* mac)
{
int i; int j;
char * res = malloc(MAGIC_PACKET_SIZE);
memset(res, 0xFF, MAGIC_PACKET_SIZE);
for(i=1;i<17;i++)
{
for(j=0;j<6;j++)
{
res[i*6+j] = mac[j]; // expected to be at least 6 chars
}
}
return res;
}
int main()
{
unsigned char test_mac[6] = {0x00, 0x29, 0xED, 0x46, 0xE2, 0x06};
WSADATA wsadata;
if ( WSAStartup(MAKEWORD(2,2), &wsadata) != 0 )
{
printf("WSAStartup() error %i\n", WSAGetLastError());
return 1;
}
SOCKET sock;
sock = socket(AF_INET,SOCK_DGRAM,0);
if (sock == INVALID_SOCKET)
{
printf("socket() error %i\n", WSAGetLastError());
return 1;
}
char bc = '1'; // broadcast
if(setsockopt(sock,SOL_SOCKET,SO_BROADCAST,&bc,sizeof(bc)) < 0)
{
printf("setsockopt() error %i\n", WSAGetLastError());
closesocket(sock);
return 1;
}
struct sockaddr_in Sender_addr;
Sender_addr.sin_family = AF_INET;
Sender_addr.sin_port = htons(MYPORT);
Sender_addr.sin_addr.s_addr = INADDR_BROADCAST;
int res = sendto(sock,
do_magic(test_mac),
MAGIC_PACKET_SIZE,
0,
(struct sockaddr_in *)&Sender_addr,
sizeof(Sender_addr));
if(res != MAGIC_PACKET_SIZE)
{
printf("sendto() error %i\n", WSAGetLastError());
closesocket(sock);
return 1;
}
closesocket(sock);
WSACleanup();
}
|