Wake on Lan

사실 이 기능은 정말 오래전부터 있었던 기능인데 한번도 써볼 일이 없어서 그런가보다 했다가 docker/window VM 전용 머신을 마련하고 창고에 컴퓨터를 넣어두기로 결정하고서 테스트를 해봤다.

뭐하는 기능이냐고? LAN에 연결되어있는 PC를 원격으로 켤 수 있게 하는 기능이다. 오직 켜는 것에만 관련된다. 끄는 것(shutdown/hibernate)은 OS에서만 할 수 있다.

따라서, 컴퓨터를 창고나 다른 방에 가져다 두고 켰다 껐다 하면서 사용하겠다면 WOL도 괜찮은 방법이다. Smart Plug 같은 것은 전원을 컨트롤 할 수 는 있지만 컴퓨터를 강제로 부팅시키진 못한다.

해야될 일

  1. Bios에 WOL 기능을 활성화한다. 대부분 이것은 일부러 꺼놓지 않는 한 default로 enabled되어있다.
  2. OS에서 WOL을 쓰겠다고 등록해놓아야 한다. 정확히는 Ethernet interface에 설정해두어야 한다.
  3. 2번의 설정이 사라지지 않도록 부팅할 때마다 설정해두게 한다.

깨울 때 해야 할 일은 단순하다 magic packet(타켓팅하는 디바이스의 MAC 어드레스를 이용해서 만들어짐)을 UDP port 7번으로 맞춰놓고 브로드캐스트 하면된다.

다만 이들 유틸리티가 OS마다 모두 다르고 기동방법도 달라서 (아마도 쓰는 이가 많지 않아서 그런 것 아닐까 생각해본다) 각자의 상황에 맞춰서 알아두어야 한다. OpenWRT같은 공유기 firmware에서는 WOL 기능을 설치해놓으면 깨우기 기능도 지원을 한다.

실제로 매우 잘 된다. Linux를 설치해놓으면 부팅과 셧다운이 매우 빠르기 때문에 sleep (hibernate)를 쓸 이유가 없다고 본다.

그런데 문제가 있다. 전원이 잘 살아있는 동안엔 해당 디바이스가 꺼져있는 상태에서 WOL이 잘 되지만, 이를테면 정전이 났다거나 해서 전원 공급이 어느 시간 이상 중단되었던 적이 있다면 나중에 전원이 다시 들어와도 WOL이 되지 않는다. 이를테면 스마트 플러그 같은 것으로 전원을 아예 차단 시켰다고 하면 다시 전원을 연결한 뒤에는 WOL 기능이 동작하지 않게 된다. 결국 이것도 문제가 된다.

그러니까 외부에서 집안에 있는 컴퓨터를 켜고 끄고 하겠다고 한다면 정전이 일어나지 않아야 한다. 혹은 정전이 일어나는 동안엔 배터리로 라도 버틸 수 있게 해놓아야 나중에 전원이 회복될 때 사용할 수 있게 되는 것이다. 어차피 네트워크 스위치와 공유기도 정전의 피해를 받을 수 밖에 없다면 포기하는 게 빠르다. 그러니까 이게 만능이 아니다.

간단히 파워 서플라이에 달려있는 스위치를 잠시 껐다 켜 본 후에 테스트 해보면 전원이 대충 1-2초만 끊어져도 WOL 기능은 동작하지 않는다는 것을 알 수 있다. 내가 이해하기로는 PC의 전원이 꺼져있다고 하더라도 power supply는 약한 전원을 공급하고 있는데, 그 전원으로 최소한의 기능 (network listening)이 일어나고 있고 이게 전원이 단절되어 잠시라도 동작을 멈추게 되었다면 다시 재개되지 않는 것으로 보여진다.

그러니까 전원이 아주 안정적으로 공급되고 있다거나 단전을 고려해서 집안에 대용량 배터리(흔히 파워월이라고 하는)와 솔라패널로 구동되는 전원이 따로 있다고 하면 걱정안해도 되는 일이지만, 아주 일반적인 가정에서는 가끔씩 WOL 기능이 무력화되는 때가 있다고 생각하면 된다.

요약하면: