API World for Mobile Developers

라즈베리파이에서 윈도우 PC를 외부에서 켜기 (WOL, DDNS, SSH) 본문

잡동사니

라즈베리파이에서 윈도우 PC를 외부에서 켜기 (WOL, DDNS, SSH)

미니렉스 2017. 10. 22. 12:08


개요

원격지에서 WiFi 공유기로 구성된 장소의 PC를 라즈베리로 켜보자


목표

  • AP 전용앱 또는 AP 제품의 Admin 화면을 사용하지 않음
  • 방안1 (진행중) - http://xxx.mydoamin.com/wol?mac=aa:bb:cc:dd:ee:ff
  • 방안2 (성공) - $ ssh myid@xxx.mydomain.com "wol.sh aa:bb:cc:dd:ee:ff"
    • 비밀번호 입력없이 한방에 완료
사용환경
  • 맥북은 외부망에 설치함
  • 라즈베리파이와 윈도우PC는 동일한 내부 네트워크 연결
  • 내부망 Broadcast IP 스펙 활용 - WOL 규격
  • MacBook Air 한대
  • 라즈베리파이 모델B+
  • SKB 인터넷 ( Mercury WiFi AP ) ,  
  • IPTime  604NS
  • KT GiGa WiFi AP ( ??? )


그동안의 삽질

  • WOL 지원하는 WiFi AP 사용 - 잘 동작되지만 방안1, 방안2 지원 안함
  • Port Forwarding - 외부IP:port 를 내부IP:9 포트로 설정
    • 내부 IP를 BroadCast IP 로 지정 - 보안이슈로 저장이 안됨 (설정 불가)
    • 내부 IP를 대상 PC의 고정 IP 지정 - 저장도 되고 WOL 동작도 가능
      • ARP 관련 정보의 Timeout 발생시 동작 안됨 ( WiFi AP의 ARP Table Timeout 을 길제 잡으면 가능하겠지만.. )
      • 쉽게 얘기하면 PC끄고 한잠 자고 일어나서 해보면 안되는...  PC 끄고 바로 해보면 잘 켜지는 짝퉁 설정
구성 대안
집에서 놀고 있는 라즈베리파이를 활용함.

준비작업 : WiFi AP 에 고정 IP, Port Forwarding 설정
    1. 사용하시는 WiFi AP의 관리 화면 연결 ( 방법은?  구글링 ~~ )
    2. DHCP 메뉴에 라즈베리파이 MAC과 IP 등록
    3. Port Forwarding 메뉴에 외부포트(22), 포워딩 IP (라즈베리 IP), 내부포트 (22) 정책 등록
라즈베리파이에 연결을 하고...

MartyMac:.ssh chsoong$ ssh pi@im.mydomain.com

Linux im.mydomain.com 4.9.41+ #1023 Tue Aug 8 15:47:12 BST 2017 armv6l


The programs included with the Debian GNU/Linux system are free software;

the exact distribution terms for each program are described in the

individual files in /usr/share/doc/*/copyright.


Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent

permitted by applicable law.

Last login: Sun Oct 22 11:24:24 2017 from 1.241.246.2


WOL관련 패키지 설치하기

pi@im:~ $ sudo apt-get install wakeonlan -y

패키지 목록을 읽는 중입니다... 완료

의존성 트리를 만드는 중입니다       

상태 정보를 읽는 중입니다... 완료

다음 새 패키지를 설치할 것입니다:

  wakeonlan

0개 업그레이드, 1개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.

0 바이트/11.5 k바이트 아카이브를 받아야 합니다.

이 작업 후 57.3 k바이트의 디스크 공간을 더 사용하게 됩니다.

Selecting previously unselected package wakeonlan.

(데이터베이스 읽는중 ...현재 34369개의 파일과 디렉터리가 설치되어 있습니다.)

Preparing to unpack .../wakeonlan_0.41-11_all.deb ...

Unpacking wakeonlan (0.41-11) ...

wakeonlan (0.41-11) 설정하는 중입니다 ...

Processing triggers for man-db (2.7.6.1-2) ...

pi@im:$ 


WOL 실행 스크립트 등록

pi@im:~ $ vi wol.sh

pi@im:~ $ cat wol.sh

#!/bin/sh 

wakeonlan $1

pi@im:~ $


SSH 인증키 환경설정 (선택. 비번입력 없이 로그인 및 명령어 실행용)

pi@im:~ $ ssh-keygen -t rsa

Generating public/private rsa key pair.


SSH 연결용 인증키 추가 (선택. 라즈베리파이 연결에 사용할 해당 장비의 RSA.pub 인증키 등록)

pi@im:~ $ vi ./.ssh/authorized_keys   (아래처럼 생긴 님의 PC 에서 생성한 ssh rsa 정보로 등록 )

pi@im:~ $ cat ./.ssh/authorized_keys 

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDXRlDxkumOE/kptP+aouM9XGAtm/QqFaWF+Yv2Nm8UlJ1vXPRlsgGDfCxIH0QZuDdlBw1b3tPn+OAae5uP/mj8MMjnYrBbthGMDsjIdLIX8PZf/PkRVsSxnHvBxKfJgUezGN8PvEECXa5TsL1T08rsCP/spQsmBwTNhI0S4DkK/HcQLtpIxKC6W8+Dgj7BgZoqtRZhNtzfSqTS8uzoFMg8W/iftuupCIYu7oiY0iIq7O4mgy7BjueuJFvR+eIA68dEe+c2i4rD6UUzWKYgZMKzhb5KmlCVGMfvkX0bw9s8AoCp+pWZPvnPsYbtrBhDnbqqw/C02rctx8eXjiff/L chsoong@MartyMac.local

pi@im:~ $ exit

logout

Connection to im.mydomain.com closed.


외부 환경에서 PC 켜기 시험 (WOL)

MartyMac:.ssh chsoong$ ssh pi@im.mydomain.com "/home/pi/wol.sh aa:bb:cc:dd:ee:ff"

Sending magic packet to 255.255.255.255:9 with aa:bb:cc:dd:ee:ff


성공^^



결론

간단한 설정으로 내부망에 상시 전원이 연결된 장치(라즈베리파이)를 구성하고

외부에서 PC의 전원을 켤 수 있으며, 웹서비스 등과의 연계시에도 활용 가능 함.


화면 없이 라즈 부팅시 IP관련 정보 확인 방법


라즈가 연결된 로컬/공인 IP 확인 : 부팅시 자동 이메일 발송  (hostname -I ,  $ )
  • 로컬 IP 확인 : $ hostname -I 
  • 공인 IP 확인 : $ host mydomain.com | cut -d\" \" -f4"
  • 자동메일 발송 python code 생성 (하단 도움주신분 참조)
  • 관련 정보 수정 : smtp ip, 메일ID, 비밀번호  ( 해당 메일 계정이 지원해야 함 )
  • 라즈의 /etc/rc.local 에 자동 발송 등록

라즈가 연결된 공인 IP 확인 : DDNS 설정 ( 상세방법은?  구글링 ~~ )

  • DDNS를 지원하는 DNS 호스팅 , 보유 도메인 필요
  • 라즈용 hostname 등록 및 DDNS update : enable
  • 라즈에서 wget 으로 등록 명령어 시험 ( DNS 호스팅 서비스별 매뉴얼 참조 )
    • dnsever 예시 : sudo wget -O -http-user=myid -http-passwd=mypw 'http://dyna.dnsever.com/update.php?host[xxx.mydomain.com]'
  • 라즈의 /etc/crontab 에 주기적 실행 등록 (예 : 5분마다 )
    • */5 * * * * root /home/pi/ddns.sh > /dev/null 2>&1
  • 라즈의 /etc/rc.local 에 부팅시 등록 추가 ( 필요 없음 )

도움 주신 분들


기타
SKB , KT WiFi AP 공유기 설정 관련 다수 페이지





Comments