Ir ao conteúdo

WakeOnLan com Boot PXE via Windows Server?


Ir à solução Resolvido por SAFEDISK,

Posts recomendados

Postado

Bom dia senhores,

Arrumei um projeto pessoal, que se resume em iniciar computadores via rede (WakeOnLan?), e bootar 2 sistemas operacionais diferentes (não simultaneamente). Um seria ligando o pc normalmente, pelo botão, ou teclado e etc, já o segundo, seria apenas quando o computador recebesse um pacote (MagicPacket?) para inciar.

Pensei em usar um computador com Windows Server 2019 pra comandar tudo, mas ainda não tenho ideia por onde começar.

 

(Estou disposto a desenvolver algo em C#, py, dotNet e etc, mas primeiro preciso do "norte" pra isso)

 

 

 

 

  • Solução
Postado

@Dogo  O Próprio Windows já oferece um ambiente WoL, basta que você configure nas propriedades do dispositivo de rede. A questão é, se você quer criar algo do zero, é importante ter conhecimento sobre algumas coisas:

  • Conhecimento em redes, protocolos e camadas de aplicação

Isso vai permitir que você tenha uma lógica melhor da situação e desenvolva com mais facilidade o aplicativo

 

  • Conhecimento da Winsock (Biblioteca padrão do Windows para desenvolvimento em redes)

Ela é de extrema importância para este tipo de desenvolvimento, pois ela permite a configuração de um servidor TCP/IP ou UDP, além das funções de emissor e transmissor que são importantes, especialmente se tratando de MagicPackets...

 

  • Conhecimento básico em desenvolvimento com uma linguagem baixo nível.

Nesse quesito, eu acredito que a melhor maneira de se criar esse tipo de aplicação é se usando uma linguagem de baixo nível, ou então OOP. Como C, C++, Java ou C#. É importante que você saiba abstrair o problema e resolver ele sem gambiarras, para o ambiente Windows qualquer uma dessas linguagens serve.

 

O que eu deveria saber sobre aplicações Wake On Lan?

 

Vou te dar um "norte" do que você necessita criar, e assim você talvez tenha mais facilidade no desenvolvimento:

 

Um Wake On Lan, sempre recebéra um Magic Packet, que nada mais é do que uma conexão na interface de ethernet ou Wifi. O Magic Packet nada mais será do que um MAC Address encapsulado dentro de um pacote, na qual a Winsock já provê para você, basta usar as libs corretas. (Consulte a documentação de acordo com a linguagem escolhida).

 

Winsock: https://learn.microsoft.com/pt-br/windows/win32/winsock/getting-started-with-winsock

 

É importante também, usar métodos de Broadcasting, que nada mais é do que envio de pacotes, requests de forma simultânea em uma mesma rede a vários computadores, nesse caso você necessita de um endereço de Broadcasting (Pode ser a sua máquina mesmo) para outras máquinas na mesma rede em que você está.

 

Depois, é necessário configurar uma conexão socket simples com UDP no seu script para que o pacote possa ser enviado, isso implica até mesmo no tamanho do pacote e na segurança do mesmo.

Geralmente se faz isso criando um script client-side, e um script server-side.

 

Dito isso, acho que você tem mais do que necessita, se desejar criar algo para um sistema Linux é só usar a mesma coisa, porém com as aplicações e libs do Linux.

 

 

OBS: Tenha em mente, que algumas BIOS em alguns computadores, podem não permitir a conexão WoL por questões de segurança, porém acredito que isso apenas exista em computadores mais antigos

@Dogo Achei um script bem legal que corrobora com o que eu disse, talvez ele lhe ajuda para você ter um "norte":

https://github.com/GramThanos/WakeOnLAN/blob/master/WakeOnLAN.c

Postado
2 horas atrás, Dogo disse:

Um seria ligando o pc normalmente, pelo botão, ou teclado e etc, já o segundo, seria apenas quando o computador recebesse um pacote (MagicPacket?) para inciar.

 

Quando WOL está configurado ok o computador vai ligar ao receber um pacote de wake-up. Desde que esteja desligado. Ao ser ligado o computador não vai saber como foi ligado. Isso quer dizer que seu projeto pessoal deveria rodar em dois lugares, e nenhum deles seria o Windows Server ou qualquer sistema operacional porque aí já seria tarde. Precisaria escrever algo para o driver de rede e algo para um gerenciador de boot tipo grub do Linux ou PXE do Windows. Seu driver de rede modificado enviaria algo para o gerenciador de boot, ANTES do sistema entrar no ar, claro.

 

Já existe algo assim, procure por pacotes BOOTP no DHCP. Existe para um outro propósito mas é isso: uma tecnologia que roda antes do boot e você poderia adaptar esses pacotes. Tem como 40 anos. Era usado para boot em estações Unix (sim, pré-Linux) sem discos. 

 

E precisaria de alguma coisa já ligada na rede. Se não for outro computador o que posso pensar de imediato é um pen-drive ou disco ligado a um desses muitos roteadores que vem com porta USB e o driver já inclui vários tipos de servidor. BOOTP usa TFTP (eu acho).

 

2 horas atrás, SAFEDISK disse:

O Próprio Windows já oferece um ambiente WoL

 

Não é o caso. Quando vem os pacotes de wake-up isso só importa se a máquina estiver desligada e então não dá pra saber sequer se ela roda Windows ou mesmo se tem algum sistema instalado. O que o Windows oferece não é um ambiente WOL, é apenas a possibilidade de avisar ao driver da placa de rede que deve atender a esses pacotes, os tais magic packets,

 

Na verdade o que a Microsoft oferece --- e não o Windows --- é um AMBIENTE mesmo, chamado PXE, Windows Pre-eXecution Environment. Isso pode ser usado para instalar sistemas em máquinas a partir mesmo de pacotes de wake-up. 

 

Ainda não é o que o @Dogo quer fazer, mas é o mecanismo que existe desde décadas atrás.

 

2 horas atrás, SAFEDISK disse:

Um Wake On Lan, sempre recebéra um Magic Packet, que nada mais é do que uma conexão na interface de ethernet ou Wifi. O Magic Packet nada mais será do que um MAC Address encapsulado dentro de um pacote, na qual a Winsock já provê para você, basta usar as libs corretas. (Consulte a documentação de acordo com a linguagem escolhida).

 

WOL é um protocolo dos anos 80. E o magic paccket não é uma conexão. É um broadcast. E não está de fato definido sobre wifi. Parece que teve uma iniciativa anos atrás mas não sei se foi adiante: aparelhos wifi geralmente rodam com baterias e teria um gasto de energia permanente porque algum tráfego teria que ser mantido via rádio o tempo todo, apenas para esperar pelos pacotes. Via ethernet é mais simples porque são acho que 800mA e já está ligado na tomada mesmo. E se não usar não gera tráfego. O broadcast WOL vem só quando preciso.

 

2 horas atrás, SAFEDISK disse:

É importante também, usar métodos de Broadcasting, que nada mais é do que envio de pacotes, requests de forma simultânea em uma mesma rede a vários computadores, nesse caso você necessita de um endereço de Broadcasting (Pode ser a sua máquina mesmo) para outras máquinas na mesma rede em que você está.

 

 

Não é que seja "importante". É um pré-requisito: um pacote WOL é um broadcast, como um pedido de endereço via DHCP. O endereço de broadcast está sempre disponível. E não é de uma máquina. É um dos endereços reservados na rede: numa rede comum seriam o 0 para a rede e o 255 para broadcast.

 

2 horas atrás, SAFEDISK disse:

OBS: Tenha em mente, que algumas BIOS em alguns computadores, podem não permitir a conexão WoL por questões de segurança, porém acredito que isso apenas exista em computadores mais antigos

@Dogo Achei um script bem legal que corrobora com o que eu disse, talvez ele lhe ajuda para você ter um "norte":

 

Não é exatamente por segurança. Tem a ver também com consumo de energia. E não tem a ver com a idade: wake-on-lan é dos anos 80 e precede a existência de computadores pessoais.

 

Sobre o suposto "script": um programa C não é um script. É um programa C que deve ser compilado e vai gerar um programa executável.

 

E a questão aqui não é o WOL em si, mas ter uma máquina multiboot e escolher um sistema operacional se ela foi ligada por WOL e outro se o cara foi lá e apertou o botão de ligar. Reveja @SAFEDISK:
 

3 horas atrás, Dogo disse:

Um seria ligando o pc normalmente, pelo botão, ou teclado e etc, já o segundo, seria apenas quando o computador recebesse um pacote (MagicPacket?) para inciar.

 

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...