1. 개요: 왜 필요한가?
집이나 사무실에서 데스크탑을 24시간 켜두는 것은 전력 소모도 크고, 유지비용 부담도 생긴다.
그래서 필요한 순간에만 라즈베리파이처럼 24시간 돌아가는 소형 서버를 이용해 대상 데스크탑을 원격으로 켜는 방법을 고민하게 되었다.
이를 위해 "Wake-on-LAN(WOL)" 기능을 활용해 다음과 같은 전략을 수립했다.
- 데스크탑 BIOS 설정: WOL 기능 활성화
- 리눅스(우분투) 설정: 네트워크 카드가 시스템 종료 후에도 활성 상태 유지
- 라즈베리파이 설정: 매직 패킷 전송 스크립트 작성 및 자동화
필요한 패키지:
- wakeonlan
(라즈베리파이 또는 서버에서 매직패킷 전송용)
2. 구성 환경
- 대상 PC: Ubuntu 24.04 설치된 데스크탑
- 서버: Raspberry Pi 5 (Ubuntu Server 24.04)
- 네트워크: 동일한 로컬 네트워크에 연결되어 있음 (유선 권장)
3. 데스크탑 BIOS 설정
Wake-on-LAN을 사용하려면 메인보드의 BIOS 설정이 매우 중요하다.
BIOS 설정 방법
BIOS에서 다음 항목들을 설정한다. 필자는 GIGABYTE 메인보드를 사용하였으며, 다른 브랜드 사용자는 유사 옵션을 참고하여 설정하면 된다.
- 데스크탑 부팅 시 BIOS/UEFI Setup 진입 (보통
DEL
,F2
키) - 다음 항목을 활성화:
ERP (절전모드 관련)
- ERP
설정: Disabled (사용 안함), 절전모드가 WOL 기능 막는 경우 있음.
CSM 활성화
- CSM Support
: Enabled
- CSM 설정 후 다음 항목이 나타날 수 있음 (기가바이트 메인보드의 경우):
- LAN PXE 부팅 옵션 ROM
: 비활성화 유지
- 저장 OpROM 시작방침
: Legacy
- 다른 PCI 장치들
: Legacy
Resume by LAN / Power On by PCI-E
- 일부 보드는 별도 항목 없이 자동지원 → 옵션이 안 보여도 정상 작동 가능
- 저장 후 재부팅
※ 제조사에 따라 옵션 명칭이 약간 다를 수 있으니, 'Wake', 'Power On by PCI' 유사 옵션을 찾아 설정한다.
4. 데스크탑 리눅스(Ubuntu) 설정
Ubuntu에서는 시스템이 꺼져도 NIC(Network Interface Card)가 살아있어야 한다.
1. 네트워크 인터페이스 이름 확인
ip a
예시 결과:
2: enp4s0: ...
link/ether <AA:BB:CC:DD:EE:FF> ...
enp4s0
: 네트워크 인터페이스 이름을 확인합니다. (이건 데스크탑의 유선 LAN 장치 이름 이므로 장치에 따라 다를 수 있습니다.)AA:BB:CC:DD:EE:FF
: MAC 주소 (매직 패킷 대상) ※ MAC 주소 노출 시 보안에 유의해야 합니다.
2. ethtool 설치
sudo apt update
sudo apt install ethtool
3. WOL 상태 확인 및 설정
sudo ethtool enp4s0 | grep Wake
결과 예시:
Supports Wake-on: pumbg
Wake-on: d
d
→ 비활성화 상태- 아래 명령으로 활성화:
sudo ethtool -s enp4s0 wol g
다시 확인:
Wake-on: g
4. 부팅 시 자동 설정되게 만들기 (선택: 재부팅 후 Wake-on:g가 해제되는 경우에 적용)
Ubuntu 20.04 이후 /etc/rc.local
은 기본 지원되지 않으므로, systemd 서비스를 사용하는 방법이 더 권장됩니다.
/etc/rc.local
생성 방법:
sudo nano /etc/rc.local
exit 0
위에 추가:
/sbin/ethtool -s enp4s0 wol g
exit 0
파일 저장 후 실행 권한 부여:
sudo chmod +x /etc/rc.local
systemd 서비스 추가 설정은 필요할 수 있습니다.
5. 라즈베리파이에서 매직 패킷 전송
1. wakeonlan
패키지 설치
sudo apt install wakeonlan
2. WOL 명령 실행
wakeonlan AA:BB:CC:DD:EE:FF # 위에서 확인한 MAC주소를 넣어줍니다.
3. (선택) alias 등록
# AA:BB:CC:DD:EE:FF 부분에 원격부팅 타겟인 PC의 MAC주소를 넣어줍니다.
echo "alias wakeup_dude='wakeonlan AA:BB:CC:DD:EE:FF'" >> ~/.bashrc
source ~/.bashrc
→ 이후부터는 아래처럼 간단하게 실행 가능:
wakeup_dude
6. 결과
- 데스크탑이 완전히 꺼진 상태에서도 매직 패킷 수신 후 자동으로 부팅됨
- 성공적으로 Wake-on-LAN 원격 부팅 구현 완료!
7. 보안 관련
- 컨트롤타워 역할을 하는 '라즈베리파이' 서버의 SSH 연결 보안 설정, 공유기 보안설정, UFW 설정 등 보안 설정은 반드시 강화해야 합니다.
- 외부에서 접속할 경우, SSH 포트포워딩 또는 VPN을 사용하는 것을 권장합니다.
8. 사용 예시
# 외부에서 접속
ssh username@<your_ip_or_domain> -p <your_ssh_port>
# 연결 후
wakeup_dude
🎉 데스크탑 자동 부팅!
9. 참고
- Wake-on-LAN은 반드시 유선 LAN에서만 작동 (Wi-Fi는 불가능)
- 일부 보드는
Suspend
상태에서는 작동하나Shutdown
상태에서는 제한될 수 있다. (GIGABYTE 보드에서는 Shutdown에서도 성공 확인)
이렇게 "필요할 때만" 깨어나는 데스크탑 환경을 구축함으로써, 스마트하고 효율적인 서버 관리가 가능해진다.
Add a New Comment