우분투(Ubuntu) 홈서버 구축기(1) - WOL 설정

Wondeok Kang (a.k.a. Wade)·2022년 4월 2일
1
post-thumbnail

1. 개요

AWS 프리티어가 종료되고 더 이상 공짜로 이용할 수 없게 되어서 큰 맘먹고 개인 홈서버를 구축하기로 했다. 영상 처리 같은 고스펙의 PC가 필요 없는 비루한 개발자 입장에서 기존에 돌리던 웹서버와 데이터베이스, 도커 등을 무리 없이 돌릴 수 있을 정도의 PC가 필요했다. 그러던 와중 저렴한 가격에 할인까지 되어서 판매되고 있는 미니 PC 발견. 위에 사진에 보이는 애즈락 미니 PC A300 되시겠다. 사양은 다음과 같다.

  • Ryzen 3200G, 8GB 메모리, 240GB SSD

전기를 눈곱만치 먹는 초 저전력 CPU는 아니지만 개발할 때만 켜놓기로 마음먹었기 때문에 이 정도로 타협했다. 이 정도면 내가 원하는 프로그램들은 무리 없이 돌릴 수 있을 듯하다.

인텔 CPU로도 갈 수 있었지만 요즘 라이젠을 쓰고 싶은 마음이 너무 크고 현재 기준 우분투 역시 AMD CPU를 잘 지원해주고 있기 때문에 고민 없이 선택했다. 배송받자마자 Ubuntu Server 20.04 LTS를 설치했다. 그런데 잉..? 이상하게 한방에 설치가 되네..? 머선일이고..


2. WOL 설정

첫 번째로 한 것은 WOL세팅이다. 365일 24시간 돌리지 않기로 맘먹었으니 필요할 때 언제 어디서든 서버 전원을 켤 수 있어야 했다. 다행히도 내가 선택한 미니 PC 보드는 WOL을 지원한다. 우선 BIOS에 들어가 Wake On Lan 관련 설정을 Enable 시켜놓는 것을 잊지 말아야 한다.

정상적으로 우분투를 설치하고 WOL관련 패키지 도구들을 설치한다.

sudo apt-get install net-tools ethtool wakeonlan

이미 ethtoolnet-tools 는 설치되어 있을 수 있지만 wakeonlan 패키지는 거의 설치가 안되어 있기 때문에 설치해준다.
ethtools는 네트워크 디바이스 드라이버, 하드웨어 세팅들을 볼 수 있고 이더넷 정보를 확인할 수 있는 ifconfig를 사용하기 위해 설치한다.
위 패키지들을 설치하고 난 후 ifconfig를 사용하여 현재 연결되어 있는 네트워크 카드 이름을 확인해 본다.

deogicorgi@deogicorgi-server ~ : ifconfig

enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.7  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::aaa1:59ff:fe30:b615  prefixlen 64  scopeid 0x20<link>
        ether a8:a1:59:30:b6:15  txqueuelen 1000  (Ethernet)
        RX packets 219  bytes 49070 (49.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 147  bytes 25029 (25.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 92  bytes 7100 (7.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 92  bytes 7100 (7.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

veth717343f: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::8894:ccff:fe1f:7da1  prefixlen 64  scopeid 0x20<link>
        ether 8a:94:cc:1f:7d:a1  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 19  bytes 1602 (1.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

위의 내용에서 확인할 수 있는 건 현재 설치된 이더넷 정보이다. 내 서버의 네트워크 인터페이스는 "enp2s0"이란 이름을 사용하고 있다는 것을 알 수 있다. 이 네트워크 이름을 기억해놓고 WOL 설정을 진행한다. 아래와 같은 명령어를 수행하면 된다.

deogicorgi@deogicorgi-server ~ : sudo ethtool -s enp2n0 wol g
deogicorgi@deogicorgi-server ~ : sudo ethtool enp2s0

Settings for enp2s0:
	Supported ports: [ TP MII ]
	Supported link modes:   10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	                        1000baseT/Full
	Supported pause frame use: Symmetric Receive-only
	Supports auto-negotiation: Yes
	Supported FEC modes: Not reported
	Advertised link modes:  10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	                        1000baseT/Full
	Advertised pause frame use: Symmetric Receive-only
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Link partner advertised link modes:  10baseT/Half 10baseT/Full
	                                     100baseT/Half 100baseT/Full
	                                     1000baseT/Full
	Link partner advertised pause frame use: Symmetric
	Link partner advertised auto-negotiation: Yes
	Link partner advertised FEC modes: Not reported
	Speed: 1000Mb/s
	Duplex: Full
	Port: MII
	PHYAD: 0
	Transceiver: internal
	Auto-negotiation: on
	Supports Wake-on: pumbg
	Wake-on: g
	Current message level: 0x00000033 (51)
			       drv probe ifdown ifup
	Link detected: yes

밑에서 4번째 라인을 보면 Wake-on: g 라는 항목을 확인할 수 있다. 정상적으로 설정되었다. 하지만 ethtool로 설정한 내용은 재부팅 시 초기화가 된다는 문제가 있다. 이것을 방지하기 위해 root 권한으로 다음과 같은 설정을 추가한다.

deogicorgi@deogicorgi-server ~ : sudo vi /etc/network/interfaces

vi 편집기로 아래의 내용을 추가한다.

post-up /sbin/ethtool -s enp2s0 wol g
post-down /sbin/ethtool -s enp2s0 wol g

3. 서비스 설정

위의 설정까지 완료했지만 정상적으로 동작하지 않는다면 서비스 설정을 추가한다. 찾아보니 우분투 18.04 LTS 이후부터는 systemd service를 만들어줘야 한다고 한다. 아래의 명령어로 service를 만들어준다.

deogicorgi@deogicorgi-server ~ :sudo vi /etc/systemd/system/wol.service

그리고 아래의 내용을 추가한다. 여기서 인터페이스명은 본인의 네트워크 인터페이스명을 추가한다.

[Unit]
Description=Configure Wake-up on LAN

[Service]
Type=oneshot
ExecStart=/sbin/ethtool -s 인터페이스명 wol g

[Install]
WantedBy=basic.target

마지막으로 위의 내용대로 작성하고 저장한 후 systemd service에 등록해준다.

deogicorgi@deogicorgi-server ~ : sudo systemctl enable /etc/systemd/system/wol.service

여기까지 설정을 해주니 정상적으로 WOL 기능이 동작한다. 이제 본격적인 서버 구성을 시작해봐야겠다.

이어지는 글 : 우분투(Ubuntu) 홈서버 구축기(2) - OpenJDK 설치

profile
최고의 개발도구는 기록과 구글링이다.

0개의 댓글