WOL 미지원 공유기에서 WOL 구축하기
Last updated: Mar 21, 2022
WOL을 지원하지 않는 공유기에서 WOL 설정하는 방법을 공유하고자 한다.
WOL 정의 / 원리
WOL 이란 “Wake on Lan"의 줄임말이다. 꺼져있는 컴퓨터에 유선으로 패킷을 보내 컴퓨터를 부팅 할 수 있는 기술이다.
해당 패킷은 매직 패킷 이라고 부르는데, 꺼져있는 컴퓨터는 WOL 옵션이 켜져 있으면 매직 패킷이 도착하는것을 기다리다가, 패킷이 도착하면 부팅을 시작하는 원리이다.

Img from: http://www.codeproject.com/Articles/11469/Wake-On-LAN-WOL
매직 패킷은 그림과 같이 첫 6 바이트는 FF:FF:FF:FF:FF:FF
이고 나머지 90 바이트는 부팅하고자 하는 컴퓨터 랜 카드의 맥 주소로 구성된다. 포트는 7번 포트 또는 9번 포트를 사용하고, 프로토콜은 UDP를 사용한다.
적용하기
무엇인지와 어떤 원리로 작동하는지를 알게 되었다. 그럼 바로 적용해보자.
보통은 대다수의 공유기들이 WOL기능을 지원하지만, 지원하지 않는 공유기도 있다. (대표적으로 KT 공유기)
우선 DHCP 주소 예약을 한다.
-> 해당 작업을 하는 이유는 다음 단계에서 포트포워딩을 할껀데, 추후에 컴퓨터의 IP 주소가 변경되어 작동이 안되는 것을 방지하기 위해서이다.
예약한 DHCP 주소로 포트포워딩을 한다.
-> 포트는 본인 컴퓨터로 테스트 했을때 작동하는 포트로 설정하면 된다. (7번 또는 9번). 프로토콜은 UDP만 체크하면 된다.
실 접속 포트를 다르게 하고 싶으면 외부 포트는 본인이 원하는 포트, 내부 포트는 7 또는 9번으로 설정하면 된다.
네트워크 외부 IP 주소를 확인한 후,
외부IP주소:설정한포트
로 매직 패킷을 보낸다.-> 매직 패킷을 보내주는 CLI 패키지도 존재하지만, 여기서는 Wake On Lan 이라는 안드로이드 앱을 사용할 예정이다.
외부 IP 주소를 도메인에 연결해서 사용해도 좋다.
끝! 데이터나 다른 네트워크에 연결된 상태에서 패킷을 보내면 정상적으로 컴퓨터가 부팅 됨을 확인 할 수 있다. 만약 해당 단계를 거침에도 불구하고 작동이 안되는거면 컴퓨터에 WOL 기능이 켜져 있는지 확인해 보아야 한다.
수정사항
해당 게시글을 작성하면서도 여러번 테스트를 진행하였고, 문제가 없다고 판단하여 게시를 하였으나…
막상 시간이 지나고 WOL 패킷을 보내니 컴퓨터가 켜지지 않는다. 원인을 알아보니 간단했다. ARP Cache가 만료되어서 문제가 생긴 것이었다. ARP는 IP주소를 기반으로해서 MAC 주소로 바꾸어준다. 라우터에서 컴퓨터 IP 주소로 포트포워딩을 했지만, 컴퓨터는 현재 꺼져 있는 상태이고, ARP Cache가 만료된 상태에서는 라우터에서 어떤 디바이스로 패킷을 보내야 하는지 알 수 없다. 패킷 안에는 컴퓨터의 MAC 주소가 존재하니깐 컴퓨터가 켜질 수도 있는게 아닌가 생각을 해봤지만, UDP 패킷에서 라우터가 보는 정보에는 MAC 주소가 없기 때문에 라우터는 패킷을 내가 원하는데로 전달할 수가 없다.
그러면 결국 해당 방법을 고치기 위해서는 매직 패킷을 라우터의 브로드캐스트 주소로 보내서 컴퓨터를 켜야 한다. 근데 브로드캐스트 주소는 외부에서 접근이 가능한가? 불가능하다. 따라서 내부에 따로 서버를 두고 해당 서버에 접속해서 패킷을 보내야 한다. 필자는 구글 포토 백업 서버로 돌리고 있는 안드로이드 머신을 서버로 사용하고, 예시를 제공할 예정이다.
Play Store가 아닌, F-Droid에서 Termux 앱을 설치한다.
-> 여기서 Play Store가 아닌 이유는 Android 10 지원 여부인데, 자세한건 여기 참고.
Termux 앱 다음 커맨드들을 실행한다.
pkg upgrade # 패키지 목록, 패키지 업데이트
pkg install openssh # SSH 설치
passwd # 로그인 비밀번호 설정
사용자 ID 확인 및 IP 주소 확인
whoami # 사용자 ID
ifconfig # IP 주소
SSH 실행
sshd
WOL 패킷 보내는 패키지 설치
pkg install wol
WOL 패킷 보내기
wol <맥 주소> # ex) A0:B1:C2:D4:E5:F6
이러면 정말 끝이다. ARP Cache 상관없이 잘 작동한다. 단점이라고 하면 외부에서 바로 패킷을 날리는게 아니라 이렇게 서버를 하나 거쳐서 패킷을 보내야 하는 단점이 있다.
그럼 여기서 끝인가? 컴퓨터 킬 때마다 서버에 접속한 후, wol 명령어를 실행할 것인가? 이 다음은 독자의 몫이다. 서버까지는 어떻게 도달했으니 보다 원격으로 쉽게 접속 할 수 있는 방법을 각자 생각해보고 적용해보자. :)