외부에서 Wake On Lan 지원 안되는 공유기에서 WOL 사용하기
Wake On Lan 잘 쓰고 계시나요. 저는 항상 잘 쓰고 있었는데. 최근에 공유기를 바꾸고 나니 문제가 생겼습니다. 빠른 무선 속도를 노려보려고 외산 공유기로 바꿨는데 Wake On Lan(이하 WOL)이 지원안되는 겁니다.
일반적인 공유기에서 외부에서의 WOL이 되는 이유는 WOL서버 때문인데요.(한가지 방법은 브로드캐스트 주소로의 포트포워드지만 지원 안되는 공유기가 더 많습니다.) 새로산 공유기는 WOL서버 기능을 자체적으로 지원하지 않으니... 답답하더라구요.
이걸 안쓸 수는 없고 어떻게든 쓸 방법을 생각해봤는데요
첫번째 방법은 외부 N번 포트에서 들어오는 패킷을 내부 브로드캐스트 주소로 포워드해버리는 것이 었습니다. 그러면 제가 보낸 패킷이 내부네트워크 전체로 퍼지고 제가 보낸 맥어드레스에 해당하는 컴퓨터만 켜질 것 같았거든요.
두번째 방법은 아예 리눅스를 설치하고 WOL서버로 사용하는 방법이었습니다.
첫번째방법이 간편한데 공유기에서 지원하지를 않아요... 그래서 결국 두번째 방법을 선택하게 되었습니다.
허접하지만 혹시나 넷기어나 링크시스등 WOL이 자체적으로 지원되지 않는 공유기를 이용중인 분들을 위해 작성합니다.
준비물은 남는 항상 켜져있을 수 있는 컴퓨터 혹은 리눅스가 설치되는 싱글보드컴퓨터입니다. 사용중인 서버가 있다면 그걸 써도 됩니다. 일단 저는 여기서 라즈베리 파이로 진행하겠습니다. 저는 리눅스로 진행하지만 윈도우에서도 됩니다.
먼저 라즈베리파이에 레즈비언
아...아니 라즈비안을 설치하시고 켜고자 하는 컴퓨터들과 같은 네트워크에 연결하신 후(이더넷이든 무선이든 상관 없습니다.) service ssh start
를 입력해서 sshd를 시작합니다.
그리고 컴퓨터에서 putty와 같은 ssh클라이언트로 라즈베리파이의 ssh서버에 접속합니다.
etherwake와 wakeonlan 두가지가 있는데 etherwake는 실행할때마다 sudo를 해줘야해서 wakeonlan을 설치했습니다
apt-get update && apt-get install wakeonlan
or
aptitude update && aptitude install wakeonlan
를 입력해 wakeonlan을 설치합니다.
포럼에서 보니 aptitude가 대세던데 저는 아직도 익숙함 때문에 apt-get을 쓰고 있네요.
설치가 끝났네요.
vi filename.sh
를 입력해서 안에는 wakeonlan 11:22:33:44:55:66
와 같이 wakeonlan뒤에 맥어드레스를 입력해줍니다.
스크립트파일로 만드는 이유는 다름이 아니라 그냥 좀 짧게 만들기 위함이구요. 좀 공을 들이면 켜졌는지 안켜졌는지 확인하는 스크립트를 넣을 수도 있겠지만 그냥 쓰는 건데 그렇게 공들일 필요까지야...
일단 테스트를 해봅시다 sh wol.sh
를 입력해 봅니다 켜지나요?
ssh포트를 변경하고 싶다면 vi /etc/ssh/sshd_config
를 입력하신후 사진에 있는 저 #을 제거 하시고 포트번호를 수정해주세요.
윈도우의 경우
윈도우의 경우에는 간단하게 여기에 나와있는 윈도우용 ssh서버중 하나를 선택하여 설치하신 후 설정을 마치시고 (꼭 ssh서버 설치하실 필요없습니다. RDP포트여시고 RDP접속하셔서 수동으로 켜줄 수 도 있습니다. 여기서 ssh서버를 설치하는 것은 밑에 나온 원클릭 켜기 때문입니다.) 여기에서 command line용 wolcmd를 다운받습니다. 그리고 ssh 접속시 기본 경로에 넣어주면 됩니다.(기본경로가 어디였는지 생각이 안나요 C:\Users\유저명 이었나 C:\Users\유저명\Documents 이었나.)
그리고 cmd 파일을 하나 만드신 후
wolcmd [mac address] [ipaddress] [subnet mask] [port number]
이렇게 설정하고 ssh 접속했을때의 기본경로에 wol.cmd로 저장해 주시면 되는데, 아마
wolcmd [mac address] [ipaddress] 255.255.255.0 9
이렇게 맥 어드레스랑 아이피만 설정하면될겁니다. 아이피는 맨뒷자리는 255로 해주세요 ex)192.168.1.255
이제 포트포워딩을 해주셔야합니다.
만들어 놓으신 WOL 서버에서 리눅스라면 ip a나 ifconfig를 입력하시고 윈도우에서는 ipconfig를 입력하셔서 내부 아이피를 알아내시고
공유기 설정에 들어가서 외부포트로 들어오는 통신을 내부아이피와 포트로 포워드를 해주셔야 합니다.
Ex) 서버아이피가 192.168.1.250이고 ssh포트 넘버가 22번일때
외부아이피:65530(외부포트는 마음대로 설정하세요)로 오는 통신을 192.168.1.250:22로 포워드
공유기 제조사마다 설정방법은 비슷하나 상이할 수 있으니 구글에서 공유기 제조사 포트포워딩(ex 넷기어 포트포워딩)이라고 검색하시면 방법을 찾을 수 있으실거에요.
포트포워딩을 해주셨다면 외부네트워크에서 외부아이피:포트로 접속하시면 ssh서버에 접속하실 수 있습니다.(혹시 외부아이피를 모르시는 분들은 공유기 설정 페이지에 나올텐데 어디있는지 모르시겠다면 해당 네트워크 내에서 https://api.ipify.org/에 접속하시면 외부아이피가 나옵니다.)
DDNS설정도 해주시면 좋습니다.
DDNS설정은 해당글의 중간부분에 있을겁니다.
자 이제 설정이 끝났습니다.스마트폰이나 외부 컴퓨터에서 ssh접속하신후 sh wol.sh
해주시면 되는데요.
원클릭이 아니잖아요. 그래서 이 앱을 이용하도록 합니다.
//여기서 설명하는 스크립트 키티는 이제 플레이스토어에 없습니다. 대신 SSH Buttons 같은 앱이 비슷하고 같은 기능을 수행하므로 혹시 필요하신 분은 위와 같은 앱을 설치해서 사용하세요
Script Kitty 스크립트 키디 스크립트 키티 인데요.
이 앱은 명령어를 등록해놓고 실행하면 ssh접속후 해당 명령어 실행까지 해주는 앱입니다. 이걸 이용해 원클릭 wol패킷을 보낼텐데요. 한번 보도록 하죠
스크립트 키티를 실행하면 ADD HOST를 눌러 설정한 서버에 맞게 주소와 포트를 입력해줍니다.
등록이 됬네요 여기서 RUN SCRIPT를 누르면 스크립트를 추가할 수 있습니다.
저는 스샷찍기전에 등록을 해서 이미 등록이 되어있는데 ADD SCRIPT를 눌러 추가합니다.
뭐 내용이야 별거 없이 이거에요. 윈도우에다가 하신 분은 wol.cmd 해주시면 됩니다.
이제 다른 네트워크나 데이터를 사용줄이더라도 이 버튼을 한번 클릭하는 것 만으로 컴퓨터가 켜집니다.
굉장히 허접하지만 그래도 WOL을 쓸 수 있어서 좋네요. 근데 라즈베리 파이를 고작 WOL서버로만 쓰자니 너무 아깝네요. 아무리 CPU성능이 딸린다 해도 가정용 NAS정도는 되는 성능인데... 뭐라도 서비스 좀더 올려서 써야겠어요.
웹서버 올려서 어떻게 잘 만들면 공유기 UI처럼 GUI로 만들 수 있을 텐데 하는 생각도 드는데 혹시 하게되면 따로 새글 안쓰고 여기 밑에 추가할게요.