반응형

제 데스크톱에는 윈도우와 우분투가 설치 되어 있습니다. 윈도우즈의 WOL및 RDP기능을 잘 사용하고 있죠. 2019/04/28 - [Windows] - WOL(Wake On Lan)이용하는 쉬운 방법

 

WOL(Wake On Lan)이용하는 쉬운 방법

결론부터 말하자면, WOL을 지원하는 공유기를 사용하는 것입니다. WOL을 지원 안하는 공유기에서 일반적인 설정절차는 다음과 같습니다. 네트워크 어댑터 설정 -> 전원설정 -> 바이오스 설정 -> DHCP설정 -> 포트..

hackcatml.tistory.com

하지만 인간의 욕심은 끝이 없어서, 우분투도 WOL및 원격 접속을 하고 싶어 졌습니다.

 

[WOL 설정]

윈도우즈에 비해 간단합니다.

우선, 바이오스 설정에서 네트워크 카드를 통한 부팅을 활성화 시켜줍니다.

윈도우즈 WOL설정하면서 이미 해놨다면 다시 할 필요 없겠죠. 또한 이것은 바이오스마다 차이가 커서 검색해서 찾아봐야 합니다.

 

apt-get install ethtool 을 입력하여 설치해줍니다. wol을 관리할 수 있는 tool 입니다.

 

설치 후  ethtool <인터페이스 이름> 을 입력하여 wol이 지원되는지, 지원된다면 활성화 되어 있는지 여부를 확인합니다. Supports Wake-on 항목은 NIC카드가 WOL을 지원하는지 여부에 대한 것으로 반드시 d가 아니어야 합니다. Wake-on 항목은 WOL의 활성화 여부를 나타내는 것으로 'g'이면 활성화된 상태입니다. 

만약 Wake-on 항목이 'g'가 아닌 경우, ethtool -s <인터페이스 이름> wol g 명령어로 활성화 시켜 줍니다. 이제 컴퓨터가 꺼져도 랜카드는 매직패킷에 대해 대기상태가 됩니다. 그러나, 매번 명령어를 치면 번거로우니 부팅 시마다 자동으로 실행되도록 vi /etc/network/interfaces 로 열어서 up ethtool -s <인터페이스 이름> wol g 를 추가해줍니다.

이제 공유기의 관리자 페이지로 접속하여 wol을 설정해줍니다. wol을 이용하려면 우분투의 IP가 일정해야 하므로, 고정 IP를 등록해줍니다. 다음으로 wol설정에서 규칙이름과 네트워크 카드의 mac 주소를 등록해주면 끝입니다.

이제 어디에서나 공유기 관리 페이지로 접속하여(공유기 원격 관리 설정을 활성화 해 놓아야 합니다) 저 켜기 버튼만 누르면 우분투가 부팅을 시작합니다.

 

[X11VNC 설치 및 원격 접속]

컴퓨터 켜기만 하면 뭐하나요. 원격 접속을 해서 작업을 할 수 있어야겠죠. 안타깝게도 우분투의 GUI원격 접속은 윈도우즈의 RDP 서비스처럼 뚝딱이 안됩니다. x11vnc를 이용해 몇몇 설정을 만져주면 비슷하게 구현 가능합니다.

    (1) Waylandserver 끄기

login화면에서 Xorg를 사용해야 합니다. 이 기능을 끄지 않으면 vnc viewer로 로그인 화면에서 접속이 되지 않습니다. vi /etc/gdm3/custom.conf 로 파일을 열어서 #WaylandEnable=false의 주석을 해제해 줍니다.

    (2) Installing x11vnc package

apt-get install x11vnc 로 x11vnc패키지를 설치해줍니다.

 

    (3) Password 설정

x11vnc -storepasswd /etc/x11vnc.pass 로 x11vnc 접속 시의 비밀번호를 설정해줍니다. 비밀번호는 /etc/x11vnc.pass에 암호화되어 저장됩니다.

 

    (4) gdm account의 UID 알아내기

loginctl 명령어로 확인합니다. 저는 gdm 계정의  UID가 121번이네요. gdm(Gnome Desktop Manager) account가 로그인 과정을 진행하므로 그 권한으로 x11vnc를 시작시킬 필요가 있기 때문입니다. 

 

    (5) 부팅 스크립트 작성 및 시작 프로세스 등록

vi /lib/systemd/system/x11vnc.service 로 systemd서비스 파일을 생성하고 다음과 같이 작성해줍니다. 반드시 위에서 확인한 UID값을 넣어주세요.

...더보기

[Unit]
Description=Start x11vnc at startup.
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -loop -forever -bg -rfbport 5900 -shared -auth /run/user/121/gdm/Xauthority -rfbauth /etc/x11vnc.pass

[Install]
WantedBy=multi-user.target

참고로 x11vnc 명령어의 옵션들의 의미는 다음과 같습니다. -loop; x11vnc 프로세스가 종료된 경우 재시작 / -forever; client가 접속 종료해도 계속 리스닝 모드 유지 / -bg; 백그라운드 모드/ -rfbport; 리스닝 포트 / -shared; 동시 접속

 

systemctl enable x11vnc.service 로 위에서 작성한 스크립트를 시작 프로세스로 등록해줍니다.

 

    (6) 포트포워딩 설정

원격으로 접속하려면 포트포워딩 설정을 해놔야겠죠? 공유기 관리자 페이지에 들어갑니다. 저는 공유기 공인 IP:8888 -> 우분투IP:5900 으로 포워딩 되게 설정해놨습니다.

 

    (7) 접속

우분투를 재부팅하고 vnc viewer를 이용해 접속해봤습니다. 공유기 공인 IP:8888 을 입력해줬습니다.

정상적으로 VNC로 접속이 되었네요. 이제 로그인을 해보겠습니다.

로그인을 하면 다음과 같이 화면에 아무것도 나타나지 않습니다. 

반면에 우분투 데스크탑은 정상적으로 로그인이 되어 있습니다. /etc/passwd에서 확인해보니 gdm계정의 shell은 /bin/false로 설정되어 있습니다. 즉, gdm계정은 로그인 화면 창에서 x11vnc서비스를 실행시키고 인증 절차를 수행함으로써 역할을 다하는 것입니다. 로그인 해서 xWindow상에서 작업하는 것은 gdm의 역할 밖인 것이죠.

여기서 답이 나왔습니다. 특정 계정으로 로그인하면 x11vnc가 자동으로 실행되도록 설정해놓으면 됩니다. 정리하자면, gdm이 로그인 화면까지의 x11vnc접속 처리 -> 계정 로그인시 자동으로 x11vnc서비스 실행 -> x11vnc 재접속 의 절차가 되겠습니다.

 

Startup applicaiton을 실행시켜서 Add버튼을 눌러 Startup Program을 등록해줍니다. name과 comment는 아무거나 써주고, command 란에 x11vnc -loop -forever -rfbport 5901 -rfbauth /etc/x11vnc.pass 입력 후 저장합니다. 포트번호는 gdm 계정이 사용했던 5900과 달라야 합니다.

5901포트에 대한 포트 포워딩 설정도 따로 해줘야 합니다. 저는 공유기 공인 IP:8889 -> 우분투 IP:5901로 포워딩 되도록 설정했습니다.

 

이제 재부팅 -> 5900포트로 접속하여 로그인 절차 수행 -> 5901포트로 재접속하면 성공입니다.

 

[폰에서 WOL + x11vnc접속]

앱스토어에서 검색하니 vnc viewer 앱이 있었습니다. 설정도 간단하네요. 설치 후 아래와 같이 주소를 등록해줍니다.

Address란에는 포트포워딩 해줬던 공유기공인 IP:외부포트 를 적어주면 됩니다. 저의 경우에는 로그인 절차를 담당하는 5900번 포트는 공유기 공인IP:8888, 로그인 후의 xVNC서비스 접속용 포트 5901번 포트는 공유기 공인IP:8889로 등록했습니다.

 

이제 공유기 관리 페이지로 접속해서 WOL기능으로 컴퓨터를 켠 다음, VNC viewer로 차례로 접속했더니 잘 접속되는군요. 그러나 윈도우즈의 RDP만큼의 기능은 못해서 아쉽습니다. 속도도 느리고, 중간에 가끔 접속이 끊기기도 해서, 자주 사용하지는 않을 듯하네요. 도움이 되셨길 바랍니다.

 

참고 :  https://c-nergy.be/blog/?p=12220

 

 

 

 

 

반응형

+ Recent posts