WOL에 대해 설명한다. WOL 은 이더넷에 연결되어있는 NIC를 통해 원격에서 켤 수 있는 기능이다. 이더넷을 통해 매직패킷을 전송하면, 수신하는 NIC에서 이를 감지해 시스템을 켠다.
매직패킷 전송에는 MAC 주소를 사용하고, 따라서 IP 통신이 아니기 때문에 LAN에서만 가능하다. WAN영역에서 매직패킷을 전송하려면 라우터나 공유기에서 지원해줘야 한다.
매직패킷(MagicPacket)이란 WOL 에 사용되는 특별한 데이터를 담은 패킷이다. 1995년에 AMD에서 개발한 매직패킷 기술에 기반하며, 102 바이트에 MAC 주소를 담아 전송한다. 매직패킷은 MAC 주소만 알면 누구나 전송 가능하기 때문에, 매직패킷에 6바이트 암호를 추가한 시큐어온(SecureOn) 기술도 있다. WOL 은 NIC와 마더보드에 PCIe 파워온을 지원하기만 하면 사용할 수 있다. 대부분의 마더보드에서 지원된다. 시큐어온은 마더보드에서 추가적으로 지원해줘야 한다. 하지만 대부분의 마더보드에서 시큐어온을 지원하지 않는다..
Wifi 에서도 지원되는 WoWLAN도 있다. 이 문서에는 설명 생략한다.
설정
WOL 기능을 사용하려면 (1) WOL 을 지원하는 NIC (2) WOL 을 지원하는 마더보드 (3) WOL 을 지원한는 OS 및 NIC 드라이버 에서 설정해야 한다.
하드웨어 설정
최근에 나온 NIC와 마더보드는 WOL 을 지원한다. 마더보드에 내장되어있는 NIC 도 마찬가지다. 따라서 바이오스에서 WOL 을 활성화해주면 된다. ASUS 마더보드의 경우 아래 화면과 같이 Power On By PCI-E 를 활성화하기만 하면 된다.
OS 설정 - Ubuntu
OS 에서 이더넷 장치에 WOL 설정한 후 전원을 끈다. 우분투의 경우 재시작하면 WOL 설정이 초기화되기 때문에, 재시작시에도 WOL이 설정되도록 netplan설정을 수정한다.
우선 시스템에 설치된 이더넷 장치 이름과 MAC 주소를 반드시 기억하자. 원격에서 시스템을 켜려면 MAC 주소를 알아야 한다.
root@wll:~# ifconfig -a
enp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
...
ether 10:7b:44:00:00:00 txqueuelen 1000 (Ethernet)
...
이더넷 장치의 WOL 설정을 확인하고 WOL 가능하도록 설정한다. 이 설정에는 ethtool(8) 을 사용한다.
root@wll:~# ethtool enp4s0
Settings for enp4s0:
...
Supports Wake-on: pumbg
Wake-on: d
...
root@wll:~# ethtool -s enp4s0 wol g
root@wll:~# ethtool enp4s0
Settings for enp4s0:
...
Supports Wake-on: pumbg
Wake-on: g
...
Supports Wake-on 의미는 아래와 같다.
p: Wake on phy activity
u: Wake on unicast messages
m: Wake on multicast messages
b: Wake on broadcast messages
a: Wake on ARP
g: Wake on MagicPacket(tm)
s: Enable SecureOn(tm) password for MagicPacket(tm)
d: Disable (wake on nothing). This option clears all previous options.
재시작해도 자동으로 WOL 설정이 켜지도록 시작 설정을 변경하고 poweroff(8)을 사용해 전원을 끈다.
root@wll:~# vi /etc/netplan/00-installer-config.yaml
network:
ethernets:
enp4s0:
wakeonlan: true
root@wll:~# poweroff
WOL 을 사용해 원격에서 켜기
매직패킷을 전송해줄 수 있는 유틸에 대해 설명한다. 코드가 간단하기 때문에 쉽게 찾을 수 있다. 윈도에서도 스토어에 WOL 으로 검색해보면 많이 나온다.