절전 모드를 활성화하고 LAN에서 깨울 수 있는 방법이 있습니까?

절전 모드를 활성화하고 LAN에서 깨울 수 있는 방법이 있습니까?

잠시 후에 서버를 절전 모드로 전환하면서도 여전히 LAN 요청을 수신할 수 있는지 궁금합니다. 저는 제 것을 미디어 서버로 사용하고 하루에 3~4시간 정도 사용하는데, 항상 작동시키는 것은 정말 전력 낭비입니다. 하지만 영화를 보고 싶을 때 영화를 보기 위해 2층으로 달려가고 싶지는 않습니다. 이 문제가 발생하지 않도록 방지하는 게시물을 본 적이 있는데 어떻게 활성화합니까?

답변1

Wake on LAN은 운영 체제 기능이 아닌 BIOS 및 NIC 기능입니다. 즉, 이 작업을 수행하려면 BIOS 및 NIC에 대한 지원이 필요합니다.

BIOS에서 이를 활성화하면(가능한 경우) 출력을 검사하여 NIC에 WOL 지원이 활성화되어 있는지 확인할 수 있습니다 ethtool [interface].

값이 Supports Wake-on포함되어 있으면 g네트워크 카드가 WOL 매직 패킷을 지원하는 것입니다.

실제로 활성화되어 있는지 확인하려면 값을 확인하세요 Wake-on. 그렇다면 gNIC에 매직 패킷 지원이 활성화되어 있는 것입니다.

활성화되지 않은 경우 다음 명령을 실행합니다.

ethtool -s [interface] wol g

이 명령은 시스템이 시작될 때마다 실행해야 하므로 적절한 위치에 추가하세요. Ubuntu에서 일반적으로 가장 좋은 위치는 Network Manager up또는 이에 상응하는 위치입니다./etc/network/interfaces

답변2

이 질문이 1년 전에 제기된 것으로 알고 있지만 몇 가지 해결책을 찾았습니다. 첫 번째는 powernap스크립트를 사용하여 실행 중인 특정 프로세스를 확인하고 찾을 수 있습니다.여기.

두 번째로 온라인에서 본 것은리눅스 문제. 이는 다른 시스템에 대한 핑을 사용합니다.

또한 시도하기 위해 DD-WRT로 라우터를 플래시했습니다.dd-wrt 위키. 이것은 매우 훌륭하고 우아한 솔루션이지만, 문제는 로그가 네트워크 외부에서 허용된 패킷만 캡처하기 때문에 내부 미디어 서버에 적합하지 않다는 것입니다. 내부 전용 미디어 서버를 원하는 경우에는 작동하지 않습니다.

dd-wrt의 경우이것VLAN을 사용하면 이에 대한 매우 좋은 솔루션이 제공됩니다. 기본적으로 서버를 자체 내부 서브넷에 놓고 해당 VLAN의 트래픽을 모니터링하면 이전 스크립트가 작동합니다. 이것은 잘 작동하지만 내 경험상 VLAN 기능 DHCP를 사용할 때마다 라우터와 dd-wrt 빌드가 충돌합니다.

저는 dd-wrt에 의존하지 않고 액세스 시 미디어 서버를 자동으로 깨우고 일시 중단하는 솔루션이 필요하다고 결정했습니다. 저는 라즈베리파이가 있어서 그걸 사용하고 있어요. 내가 찾은 최종 해결책은 작은 bash 스크립트를 작성하는 것이었습니다. raspberry-pi 종속성은 etherwake와 tcpdump입니다. 둘 다 기본적으로 Rasbian에 설치되지 않습니다.

sudo apt-get install etherwake
sudo apt-get install tcpdump

깨우기 스크립트는 다음과 같습니다.

#!/bin/bash

pingInterval=60 #time interval, in seconds, between checks that the server is still awake.
target=192.168.x.x  #WOL target ip address
targetMAC=00:11:22:33:44:55  #WOL target MAC

wake () {
tcpdump -i eth0 -c 1 -p host $target
etherwake $targetMAC
#echo WOL sent to $target at $targetMAC
return
}

while sleep $pingInterval; do
varPing=`ping -s 1 -c 2 $target > /dev/null; echo $?`
if [ $varPing -eq 0 ]; then
#echo ping success
else
#echo ping fail
wake
fi
done

주요 아이디어는 이것이 내 라즈베리 파이에서 실행되고 서버에 대한 단일 arp 요청을 발견하면 서버를 깨울 것이라는 것입니다. 서버가 깨어 있으면 arp 요청을 수신하지 않고 대신 때때로 ping을 보내 여전히 깨어 있는지 확인합니다.

파일 이름을 wol.sh로 지정하고 실행 가능하게 만들었습니다. 그런 다음 sudo crontab에 넣어 @reboot를 루트로 시작합니다. 이는 eth0 및 etherwake를 수신하기 위해 높은 액세스 권한이 필요한 tcpdump용입니다.

sudo chmod +x /home/pi/wol.sh
sudo crontab -e

하단에 추가하세요

@reboot sh /home/pi/wol.sh > /dev/null

절전 스크립트는 동일한 원칙을 사용하여 미디어 서버에서 실행됩니다. 스캔 간격(icmp 또는 arp 제외) 동안 서버에 트래픽이 없으면 1분을 선택합니다. 그런 다음 "Sleepy"라는 이름의 카운터에 추가됩니다. 졸음이 10 또는 20에 도달하면 20분 동안 들어오고 나가는 차량이 없으면 졸음을 0으로 설정한 후 pm-suspend수면 명령을 내립니다. 패킷을 수신한 sleepiness!=0후 sleep-1을 수행합니다. 따라서 라우터에서 길을 잃은 패킷이나 일부 패킷을 캡처하는 경우 카운트를 0으로 재설정하지 않고 카운터에서 -1만 수행합니다. 20분 연속 패킷이 전혀 없는 상태가 아니라 일정 시간 동안 패킷이 감소할 때 천천히 절전 모드로 전환되는 유예 기간을 허용하기 때문에 여기에 넣었습니다.

디스크에 대한 지속적인 쓰기(서버 측)와 관련하여 두 시스템 모두에서 tcpdump를 호출해야 하기 때문에 이는 아마도 최선이 아닐 것입니다. 디스크에 쓰기 위해 실제 HDD의 마모를 방지하기 위해 캡처 파일이 저장되는 희생 USB를 마운트했습니다.

관련 정보