PfSense – WOL – Wake On Lan



  • Hola.

    pfSense – WOL – Wake On Lan

    Referencia: https://doc.pfsense.org/index.php/Wake_on_LAN

    Hacer un WOL (Wake On Lan) es simplemente enviar a traves de una red local (LAN) un “magic packet” a una dirección mac (de capa 2) de una NIC de un equipo para que se inicie (“se encienda” o power on).

    Esta utilidad está restringida al dominio de broadcast (no trasciende dispositivos de capa 3: routers/firewall), es decir, a las redes localmente conectadas al pfSense.

    La condición necesaria es que el equipo a encenderse, tenga configurada en su BIOS, la opción WOL habilitada (enable).

    Desde la GUI del pfSense, en Services > Wake-on-LAN: Elegimos la interfaz por donde enviar el “magic packet” e indicamos la mac de la tarjeta de red del equipo a encender

    Clikamos en enviar (send) y si está todo correcto, el equipo deberá iniciar su encendido (power on).

    Lo acabo de testear con un pfSense 2.3.2_1 y un portatil Toshiba, y todo OK.

    ¿Su utilidad?. Imagina que das soporte a una red remota, y puedes acceder a la administración del pfsense vía VPN, pero el equipo remoto al que quieres dar soporte esta apagado y no hay nadie que pueda encenderlo … pues si lo tienes ese equipo con la opción en BIOS de WOL habilitada (y conoces su mac) … pues coser y cantar

    Para los que usen scripting:

    La utilidad que envía el magic packet, en pfSense es: /usr/local/bin/wol

    /usr/local/bin/wol –help

    Usage: /usr/local/bin/wol [OPTION] … MAC-ADDRESS ...
    Wake On LAN client - wakes up magic packet compliant machines.

    --help          display this help and exit
    -V, --version      output version information and exit
    -v, --verbose      verbose output
    -w, --wait=NUM      wait NUM millisecs after sending
    -h, --host=HOST    broadcast to this IP address or hostname
    -i, --ipaddr=HOST  same as --host
    -p, --port=NUM      broadcast to this UDP port
    -f, --file=FILE    read addresses from file FILE ("-" reads from stdin)
        --passwd[=PASS] send SecureON password PASS (if no PASS is given, you
                        will be prompted for the password)

    Each MAC-ADDRESS is written as x❌x❌x:x, where x is a hexadecimal number
    between 0 and ff which represents one byte of the address, which is in
    network byte order (big endian).

    PASS is written as x-x-x-x-x-x, where x is a hexadecimal number between 0
    and ff which represents one byte of the password.

    Report bugs to krennwallner@aon.at/krennwallner@aon.at

    Por ejemplo para envíar un wol a la mac 00:50:56:00:01:02 en la red local (LAN), siendo la IP de la interfaz LAN del pfSense 192.168.0.254/24 y la IP de broadcast 192.168.0.255

    
    /usr/local/bin/wol -i 192.168.0.255 00:50:56:00:01:02
    
    

    /usr/local/bin/wol -i 192.168.0.255 00:50:56:00:01:02
    Waking up 00:50:56:00:01:02…

    Salu2



  • Gracias por el manual. Muy útil.

    Deberían poner PIN a estos manuales.



  • Hola

    De nada. :)

    Por cierto, comento un caso que se puede dar.

    ¿Y si no conocemos la mac del equipo a encender, pero sabemos que obtiene su config tcp/ip vía dhcp server del pfSense?
    Pues una manera seria enviar un WOL a todas las macs en las entradas de dhcp leases, que se encuentran en:
    /var/dhcpd/var/db/dhcpd.leases

    Vía scripting seria:

    
    #!/bin/sh
    # wol-dhcpleases.sh
    # wol all dhcp leases
    # by javcasta - 2016 - https://javcasta.com
    
    BROADCAST=192.168.0.255
    DHCPLEASES=$(cat /var/dhcpd/var/db/dhcpd.leases | grep "hardware ethernet" | cut -d ' ' -f 5 | sort -u | sed "s|;||")
    for LAMAC in $DHCPLEASES; do
       echo "wake on lan:  ${LAMAC}"
       /usr/local/bin/wol -i ${BROADCAST} ${LAMAC}
    done
    
    

    Output

    [2.3.2-RELEASE][root@pfSense232a.localdomain]/scripts: sh wol.sh
    wake on lan:  50:01:02:03:04:05
    Waking up 50:01:02:03:04:05…
    wake on lan:  50:01:02:03:04:06
    Waking up 50:01:02:03:04:06...
    wake on lan:  50:01:02:03:04:07
    Waking up 50:01:02:03:04:07...
    ...

    Salu2