Wake-on-LAN & RDP Setup

내 방에 있는 컴퓨터를 집 밖에서도 사용해보자.

About

Back in the day

어릴 때 처음으로 산 "내 랩탑"이라고 부를 수 있을 만한 것은 애플의 유니바디 맥북이었다.

"흰둥이"라고 불렸던 이 둥글둥글하고 지금 봐도 귀여운 녀석은 애플에서 만든 맥북 2010년 모델로 내 어린 시절 추억이 가득한 랩탑이다. 무게는 2.13kg 정도라는데 사실 무거운 편은 아니었지만 배터리 성능과 무게에 불만이 있어서 그 뒤로 몇 년 동안 노트북을 구매할 때는 가볍고 배터리가 오래 가는 노트북을 샀다.

아무튼 2019년 초, 내 첫 데스크탑을 조립했다. 이후 RAM과 GPU도 업그레이드 하면서 꽤나 쾌적한 작업 환경을 구축했다.

그러나 학생이었던 나는 학교에서 꽤 많은 시간을 보내야 했고, 급할 때 자료가 필요하거나 과제를 학교에서 하는 경우도 많았기 때문에 노트북을 들고 다니곤 했다. 요즘은 M1 맥북이 나와서 해당 사항이 아니지만, 당시에 랩탑은 툭하면 버벅거리고, 조금만 쓰면 배터리도 녹아 내렸으며, 제대로 뭔갈 해보려고 하면 소음도 심했다. 학교 공학관에 6층 PC실이라고 컴퓨터가 잔뜩 모여 있는 곳이 있긴 하지만 우리 집 컴퓨터 쓰듯이 쓰기엔 다소 불편했다. 그래서 Ubuntu 라이브 USB를 만들어서 들고 다녔던 기억이 난다. (추억이 새록새록...)

학교 가는데 매번 노트북조차 들고 다니기 귀찮았던 나는 "내 컴퓨터가 이렇게 성능이 좋은데 밖에서도 내 컴퓨터에 접속을 할 순 없을까?"라는 생각이 들었다.

Cloud Computing?

옛날부터 클라우드 상에 컴퓨터가 띄워져 있으면 참 좋겠다고 생각한 나는 처음엔 클라우드 컴퓨터를 떠올렸다. 그런데 당시 데스크탑을 대체할 만한 괜찮은 서비스는 내 눈에 보이지 않았다.

어차피 내 컴퓨터도 있겠다, 내 컴퓨터가 유비쿼터스하게 어디서든 접근이 가능하면 좋겠다 이거다. 이걸 활용할 수 있는 방안을 좀 더 조사해봤다. 그러다가 RDP라는 것이 눈에 들어왔다.

RDP (Remote Desktop Protocol)

원격 데스크톱 프로토콜, RDP는 마이크로소프트에서 개발한 프로토콜로, 다른 컴퓨터에서 그래픽 유저 인터페이스를 접근하도록 해주는 프로토콜이다.

이 프로토콜을 활용해 원격으로 컴퓨터를 접근할 수 있도록 하는 프로그램이 마이크로소프트 리모트 데스크탑이다.

RDP 말고도 사실 원격 제어는 팀뷰어, 크롬 원격 데스크탑, VNC 등등...이 유명하고 널리 알려진 것이 많다. 그럼 왜 굳이 RDP를 썼을까?

  • 속도가 빠르고 이미지나 영상 글자를 볼 때 화질이 좋다.

    • 컴퓨터공학과다이보니 적어도 기본적인 코딩은 할 수 있어야 하는데 팀뷰어, 크롬 원격 데스크탑은 속도가 조금만 느려져도 화질이 너무 저하돼서 글자가 안 보였다.

  • 접속이 잘 안끊긴다.

    • 크롬 리모트 데스크탑은 당시에 조금 사용하다보면 먹통이 돼서 재접속을 반복해야하는 경우가 잦았는데 RDP로 갈아탄 이후엔 그런 이슈가 많이 없어졌다.

요즘은 크롬 리모트 데스크탑 같은 프로그램도 많이 좋아졌다는데 내가 쓸 당시엔 이런 저런 이슈가 있어서 맘에 들지 않았다.

RDP 설정이 꽤 까다롭다고 알려져 있는데, 설정 자체는 쉽다. 그냥 서버(접근하려는 컴퓨터)와 클라이언트(바깥 컴퓨터)가 있고, 서버에서 RDP 포트를 열어주면 열려있는 포트로 클라이언트가 접속하면 된다. 다만, 포트를 연다는 것부터 보안상 문제가 되기 때문에 안전하게 설정하려면 좀 더 신경을 써야 한다.

RDP 설정하는 법은 구글링하면 되고, 안전하게 설정하는 법은 맨 밑에 링크로 적어놨다. (VPN도 사용하는 게 좋다.)

참고로 윈도우 10 Pro에서만 된다. 아닌 경우에는 우회가 필요한데 꽤 까다롭다.

WoL (Wake-on-LAN)

이게 사실 제일 신기했다. 컴퓨터(메인보드)가 WoL 이란 것을 지원하면 BIOS에서 켤 수 있는 기능이다. 이걸 켜면 컴퓨터가 꺼져 있더라도 약간의 전원을 파워로부터 받아서 신호를 받을 수 있는 상태가 된다. 특별하게 약속된 형태의 패킷(매직 패킷)을 원격으로 모바일 앱 등을 이용해 대상 컴퓨터로 보내면 컴퓨터의 랜카드가 작동해 패킷을 읽고 컴퓨터를 부팅해주는 서비스이다. 짧게 말해서, 원격으로 컴퓨터를 켤 수 있다는 거다.

아무리 컴퓨터 전기세가 그렇게 많이 안나간다지만 랩탑도 아니고 데스크탑 PC를 항상 켜둘 순 없지 않은가...? (그래픽카드도 달려있는 데스크탑 PC는 켜두면 은근히 팬 소음이 있고 방이 뜨끈해진다.)

조건과 설정이 꽤 복잡하고, 잘 되는지 안되는지 컴퓨터를 끄고 테스트 해봐야 해서 귀찮았던 기억이 난다.

아무튼 설정 방법을 대략 요약을 하자면:

  • 컴퓨터 BIOS에서 매직 패킷을 받을 수 있도록 WoL 기능을 활성화하고

  • 컴퓨터에서 WoL이 정상적으로 작동하도록 전원 관련 기본 세팅을 해주고

  • 공유기에서 내 데스크탑 PC로 포트포워딩을 해서 내 컴퓨터를 외부에서 찾을 수 있도록 하고

  • 대부분 가정에서는 유동 IP를 사용할테니 IP를 고정하도록(IP가 새로 부여될 때마다 DNS 데이터베이스를 자동으로 갱신) 공유기에서 DDNS를 설정하고

  • 스마트폰에 WoL 앱을 깔아서 호스트를 등록해 컴퓨터를 원격으로 켤 수 있게 설정하면 된다.

이렇게 쓰고 나니 매우 복잡한데...? (어떻게 한거지) 그런데 막상 한 번 설정하면 그 뒤로는 건드릴 필요가 없어서 편하다.

이렇게 켜는 방법 말고 스마트 플러그라고 IoT 플러그를 구매해서 원격으로 켜는 방법도 있는데 비용이 니까 이 방법을 이용했다.

공유기와 케이블로 연결해야하므로 유선 랜으로만 가능하다.

WoL을 설정했다면 컴퓨터가 시간이 지나도 잠자기 모드에 들어가지 않도록 바꿔야 한다. 잠자기 들어가버리면 WoL로는 어쩔 수가 없다... 집에 가서 마우스 만져야된다. 🥲

WoL 심화 - 포트 바꾸기

포트를 바꾸고 wail2ban 스크립트 적용까지 하는 것이 좋다. 포트 변경만으로는 공격을 완전히 막을 수 없으므로 파워쉘 스크립트를 적용한다.

요약하면 다음과 같다.

  1. 윈도우 레지스트리 편집기로 RDP 포트를 변경하고 재부팅 (1000 이상의 포트 추천)

  2. 방화벽에서 해당 포트 열어두기

  3. Remote Desktop 서비스 재시작 또는 윈도우 재시작

  4. 공유기에서 포트포워딩 설정 (내부, 외부 포트 둘 다 바꾼 포트로 변경)

  5. wail2ban 적용하기

wail2ban GitHub을 들어가보니 이제 read-only가 되어서 다른 방법 찾아보는 게 좋을 것 같다.

More on the matter

RDP

RDP 심화

WoL

Last updated