generate-systemd-networkd: Generar /etc/netplan/01-network-manager-all.yaml y aplicar configuración resolviendo problema WOL en Ubuntu 18.04

Como ya habéis podido comprobar, tras alguna actualización del kernel en Ubuntu 18.04, nos ha dejado de funcionar el Wake On Lan que nos permitía encender remotamente las máquinas del centro.

Revisando mis máquinas, he encontrado dos posibles ficheros de configuración en el directorio /etc/netplan:

  • /etc/netplan/01-network-manager-all.yaml
  • /etc/netplan/01-systemd-networkd.yaml

Lo que evidencia que cada imagen de clonación la ha hecho una persona diferente y cada uno ha elegido la configuración que mejor le ha parecido.

En el primer fichero de configuración se usa el renderer NetworkManager. Y, en el segundo, networkd. Pero, en ninguno de los dos casos funciona WOL, aunque el Wake-On-Lan se encuentre activado:

ethtool enp2s0 | grep 'Wake-on'
 Supports Wake-on: pg
 Wake-on: g

Después de leer mucha documentación y realizar unas cuantas pruebas, he podido comprobar que, aunque tenga activado el Wake-On-Lan en el fichero de configuración de netplan:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp2s0:
      dhcp4: yes
      dhcp6: no
      wakeonlan: true
      optional: true

Wake-On-Lan no va a funcionar, a menos que especifiquemos la MAC de la interfaz de red:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp2s0:
      dhcp4: yes
      dhcp6: no
      match:
        macaddress: 1c:6f:65:7b:9b:7a
      wakeonlan: true
      optional: true

Para automatizar la generación del fichero de configuración utilizando el renderer networkd, he escrito un pequeño script (generate-systemd-networkd) que podéis distribuir a vuestros clientes vía puppet y ejecutar manualmente o desde una tarea que genere dicho fichero de configuración y elimine los demás.

El script crea la configuración en base a las interfaces de red en estado UP detectadas.

A continuación podéis ver el código del script:

#!/bin/bash
#
# generate-systemd-networkd: Script para generar el fichero /etc/netplan/01-systemd-networkd.yaml
# y aplicar la configuración habilitando WOL
#
# Esteban M. Navas 
# Fecha creación:      03/10/2018
# Última modificación: 08/10/2018

ip link show up | grep ^[0-9] | grep -v lo | cut -f2 -d":" | sed 's/^[ \t]*//' | grep -v 'wl' > /tmp/INTERFACES

if [ -s /tmp/INTERFACES ]; then

rm -f /etc/netplan/*

echo "network:
  version: 2
  renderer: networkd
  ethernets:" > /etc/netplan/01-systemd-networkd.yaml

while read INTERFACE; do

MACADDRESS=$(ip link show $INTERFACE| grep 'link/ether' | sed 's/^[ \t]*//' | cut -f2 -d" ")

echo "    $INTERFACE:
      dhcp4: yes
      dhcp6: no
      match:
        macaddress: $MACADDRESS
      wakeonlan: true
      optional: true">> /etc/netplan/01-systemd-networkd.yaml

done < /tmp/INTERFACES

netplan apply

fi
This Article Has 2 Comments
  1. Juan Antonio Reply

    Hola Esteban, perdona mi torpeza pero no veo desde donde descargar scripts en el blog, generate-system-netowrk.

    • Sagrario Pedraza Reply

      Buenas tardes, Juan Antonio. Parece que al realizar la migración del blog, el script se había perdido. Muchas gracias por la información.

Por favor acceder para comentar.