É possível acordar um sistema Linux suspenso do ACPI S3 com um pacote SMB?

1

Eu quero colocar meu sistema NAS Debian no supend para o modo RAM (ACPI S3) depois de um período decente de tempo ocioso para economizar energia. Pensei em colocar a NIC em um modo, onde ela aguarda pacotes SMB unicast e, em seguida, acorde. Isso seria bastante útil, por exemplo, quando a TV quiser transmitir algum conteúdo do NAS. Talvez seja possível com algo como ethtool -s eth0 wol p , onde phy seria igual a um pacote unicast SMB.

É algo assim possível? Não deve ser tão difícil de realizar, eu acho, mas talvez eu esteja errado.

    
por JohnnyFromBF 04.11.2013 / 23:57

2 respostas

2

Sim, é possível, um tem que fazer o seguinte:

aptitude install pm-utils
cd /usr/lib/pm-utils/sleep.d/
touch 70wol

Coloque o seguinte em 70wol

#!/bin/bash
ethtool -s eth0 wol pug

Volte para o seu shell e torne o script executável:

chmod +x 70wol

Agora faça um ACPI S3 suspender:

pm-suspend

Agora você deve ser capaz de ativar o sistema com um pacote ICMP, SSH, SMB, etc.

Não se esqueça do fato de que o Windows e o Linux têm um tempo limite de cache ARP de 30 segundos. Então depois de

pm-suspend

outras máquinas na rede têm apenas cerca de 30 segundos para ativar o sistema, porque após esse período, elas não têm mais o endereço MAC para enviar os pacotes para o sistema de destino.

Você pode corrigir isso com endereços ARP estáticos. Em cada sistema que você deseja ativar o sistema NAS, faça o seguinte no Windows

arp -s 10.0.0.200 00-10-54-CA-E1-40

e o seguinte no Linux

arp -s 10.0.0.200 00:10:54:CA:E1:40

Configuração bastante clara, se você tiver um servidor doméstico NAS, que não deve ser executado 24 horas por dia, 7 dias por semana. Agora é possível escrever um script de shell como um cronjob e suspender o servidor NAS depois de 5 minutos de inatividade.

Eu fiz isso em um teste Debian com Kernel 3.12 e os drivers mais recentes Intel e1000e para minha placa de rede Intel I217-V.

    
por 20.11.2013 / 11:45
1

É possível, e o Windows realmente usa o recurso wake-on-pattern da placa de rede por padrão:

One kind of special data packet contains a wake-up pattern. By default, Windows 7 and Windows Vista listen for the following packets when you enable WOL:

  • A directed packet to the MAC address of the network adapter
  • A NetBIOS name resolution broadcast for the local computer name
  • An Address Resolution Protocol (ARP) packet for the IPv4 address of the network adapter
  • An IPv6 Neighbor Discovery packet for the network adapter's solicited-node multicast address

http://support.microsoft.com/kb/941145

No entanto, observe que sua lista não contém pacotes SMB unicast. Por quê? Como os pacotes SMB não são enviados até que uma conexão TCP seja estabelecida e, antes que isso aconteça, o cliente deve descobrir o endereço de hardware do servidor - usando o ARP para IPv4 ou o Neighbor Discovery for IPv6. (A resolução de nomes usando NetBIOS também está na lista, mas o LLMNR não é, por algum motivo.) Portanto, você precisaria criar uma lista de filtros muito semelhante - no mínimo, uma que contenha ARP e Neighbor Discovery.

    
por 05.11.2013 / 00:34