조만간 여행 갈 일이 있어서 아이패드 원격 환경 세팅을 하고 있습니다. 여행 중에 아이패드만으로 부족한 작업을 할 일은 거의 없지만, 그래도 아주 가끔 필요한 경우가 생기면 곤란한 경우가 있거든요.
공유기로 RDP 포트 세팅을 해두긴 했는데 이 세팅의 문제는 WOL(Wake on Lan)이 안된다는 겁니다. 이러면 컴퓨터를 켜놔야 하는데 아주 가끔 쓰려고 컴퓨터를 계속 켜놓는 것도 영 별로죠. Moonlight의 WOL 기능이 정상 동작하는걸로 볼 때 네트워크 구성의 문제는 아닌 것 같은데.. 어렵습니다.
그런데 그렇게 세팅하고 보니 그냥 Moonlight를 원격 접속 용으로 다시 세팅하는게 낫겠다 싶었습니다. 사실 예전에도 그렇게 세팅해놓고 썼었는데 설정이 워낙 복잡하고 공유기도 바꾸면서 귀차니즘으로 그냥 두고 있었거든요.
Moonlight는 연결에 꽤 많은 포트를 사용합니다. 공유기 설정에서 이 포트를 일일이 설정해서 열어줘야 하는데 이게 엄청 귀찮습니다.
그런데 최근 가이드를 찾아보니 최근 Moonlight 버전은 로컬에서 한번 잡으면 ipv6를 이용해 외부에서 연결 가능한 주소까지 한번에 잡아준다고 합니다. 게다가 Sunshine을 사용하면 Upnp를 이용해 외부 네트워크 사용에 필요한 포트 설정도 자동으로 해준다고 합니다. 그 귀찮은 포트포워딩을 안해도 된다니 세상 참 좋아졌네요.
근데 막상 해보니 실제로는 동작하지 않았습니다. 가이드를 좀 더 자세히 읽어보니 iOS와 tvOS는 지원하지 않는다고(…) Moonlight Github 쪽 이슈를 보면 애플의 원격 앱에 대한 제한 때문에 외부 네트워크에 있는 장치에 자동으로 연결하지 못한다는데.. Jump Desktop이나 Chrome Remote는 그런 제한이 없는 건지 궁금해네요.
어쨌든 iOS에서는 원격 접속을 위한 네트워크 설정이 아직 필요합니다. 쉽게 쓰기 위해 VPN을 쓰기도 하는 경우가 있는 것 같지만 잘만 따라하면 어렵지 않습니다.
1. 일단 데스크탑에는 Sunshine(또는 Apollo) 설치되어있어야 하고 아이패드에는 Moonlight-zwm이 설치되어있어야 합니다. 설치 방법은 아래 글을 참고해주세요.(Moonlight는 버그가 있어서 추천하지 않습니다.)
PC에 설치
아이패드에 설치
2. 둘 다 설치 완료되었다면 아이패드에서 Moonlight-ZWM을 실행해 동일한 네트워크에서 호스트 PC를 추가해줍니다. Apollo가 실행되고 있다면 자동으로 보여집니다.

3. 추가 되었고 원격 연결도 제대로 된다면 종료하고 공유기 설정을 엽니다. 이 글에서는 iptime 공유기를 기준으로 설명합니다.
4. iptime 공유기 기준으로, NAT/라우터 관리 > 포트포워드 설정으로 이동합니다.

5. 포트포워드 설정에서 포트를 추가해줘야 합니다.(이 부분이 가장 귀찮습니다.)

6. 포트 추가화면에서 포트를 추가합니다.
TCP 47984

내부 IP 주소에는 연결할 PC의 내부 네트워크 주소를 입력합니다.(만약 PC의 내부 IP주소를 모르신다면 PC에서 cmd를 실행하신 뒤 ipconfig을 쳐보시면 됩니다)
외부 포트와 내부 포트는 동일하게 설정합니다.
7. 위와 같은 포트 추가를 더 해야합니다. 아래 포트를 모두 하나씩 추가해줘야 합니다.(이게 진짜 귀찮죠)
- TCP 47984, 47989, 48010
- UDP 47998, 47999, 48000, 48002, 48010
TCP/UDP가 아니라 각각 프로토콜을 지켜서 추가해줘야 합니다. UDP 47998, 47999, 48000 은 범위로 지정해줘도 무방합니다.

8. 외부 네트워크로 연결하여 테스트해봅니다. 집에서 외부 네트워크 테스트를 할 수 있는 가장 쉬운 방법은 스마트폰 핫스팟에 연결하는 겁니다. 만약 데스크탑 PC가 공유기와 유선랜에 연결되어있다면 문라이트에서 WOL도 쓸 수 있습니다.(WOL을 위한 9번 포트 오픈은 불필요)
만약 테스트시 제대로 동작하지 않는다면 포트 설정을 다시 확인합니다. 포트 번호가 잘 못 지정되었을 가능성이 있습니다.
9. 세팅 완료!

이제 외부 네트워크에서도 원격 PC에 연결할 수 있습니다. Moonlight에서 WOL도 자동으로 잡아줘서 굳이 컴퓨터를 계속 켜놓고 있을 필요가 없다는 것도 장점이네요.
Apollo를 이용해 아이패드 해상도에 딱 맞게 윈도우 해상도가 조절되고, Moonlight-ZWM으로 터치만으로도 쓸 수 있어 좋습니다.
윈도우 RDP나 크롬 원격 데스크탑 같은 다른 원격 제어 솔루션과 달리 Moonlight는 원래 게임 스트리밍 앱이다보니 원격 환경에서 유튜브 영상도 볼 수 있을 정도로 부드럽게 실행된다는 장점이 있습니다. 마치 아이패드에서 그냥 윈도우가 실행되는 느낌입니다.
게다가 아이패드 프로는 120hz 주사율에 HDR도 지원되는데, Moonlight를 통해 접속해도 동일하게 120hz, HDR 기능을 쓸 수 있습니다. 이 장점은 게임할 때 빛을 발하는데, 120 프레임으로 게임해보니 왜 고주사율 모니터를 쓰는지 알겠더군요.
어쨌든 품은 좀 들지만 한번 세팅해두면 편하게 원격 PC를 통해 아이패드의 부족한 부분을 채울 수 있기 때문에 추천합니다.
덧. 비슷한 방식으로 MacOS로 원격 접속도 가능하지 않을까 싶었는데 일단 Sunshine이 MacOS에서는 지원이 아예 안되네요. 리눅스랑 윈도우만 지원됩니다. 아이패드랑 맥은 같은 회사 제품인데도 의외로 원격으로 연결하려면 별로 방법이 없네요. 연결한다고 해도 품질도 별로 좋지 않구요.
덧2. 이 글을 썼던 어제만해도 외부 네트워크에서 WOL이 됐던 것 같은데 오늘 다시 테스트해보니 WOL이 제대로 안되네요. 어제 테스트를 뭔가 잘못했던건지.. 막상 필요할 때 안되서 큰 일 날 뻔 했군요.