// DevOps

Netplan: configuración avanzada de red (túneles, VLAN, puentes, bonding)

Publicado el 22.09.2026


Introducción

Netplan — es una utilidad para la configuración declarativa de redes en Linux (Ubuntu, Debian y derivados).
Normalmente se usa para casos sencillos como Ethernet o Wi-Fi, pero puede mucho más:

  • interfaces de túnel (IPIP, GRE, VXLAN, WireGuard),
  • VLAN,
  • puentes (bridges),
  • agrupación de interfaces (bonding).

Estas capacidades permiten construir topologías de red complejas — desde VPN domésticos hasta centros de datos y entornos en la nube.


Interfaces de túnel

Los túneles encapsulan paquetes de un protocolo dentro de otro. Se usan para VPN, conexiones entre servidores o aislamiento de redes.

IPIP (IP-in-IP)

El túnel IPv4-a-IPv4 más sencillo.

yaml
network:
  version: 2
  renderer: networkd
  tunnels:
    tun0:
      mode: ipip
      local: 192.168.1.100
      remote: 203.0.113.1
      addresses: [10.0.0.1/30]
      routes:
        - to: 10.0.1.0/24
          via: 10.0.0.2

GRE (Generic Routing Encapsulation)

Soporta más protocolos que IPIP.

yaml
network:
  version: 2
  renderer: networkd
  tunnels:
    gre0:
      mode: gre
      local: 192.168.1.100
      remote: 203.0.113.1
      addresses: [10.0.0.1/30]
      routes:
        - to: 10.0.2.0/24
          via: 10.0.0.2

VXLAN (Virtual Extensible LAN)

Se utiliza en virtualización y en la nube. El soporte para VXLAN llegó a netplan 0.105.

yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      addresses: [192.168.1.100/24]
  tunnels:
    vxlan0:
      mode: vxlan
      id: 42               # identificador de red VXLAN (VNI), 1–16777215
      link: enp0s3
      local: 192.168.1.100
      remote: 203.0.113.1  # dirección de la otra parte o grupo multicast, por ejemplo 239.1.1.1
      port: 4789           # puerto estándar de VXLAN
      addresses: [10.0.0.1/24]

No existe una clave independiente para el grupo multicast en netplan: la dirección del grupo se especifica en remote. La interfaz indicada en link debe estar descrita en la misma configuración (bloque ethernets), de lo contrario netplan generate fallará con un error.

WireGuard

VPN moderno; el soporte llegó a netplan 0.100.

yaml
network:
  version: 2
  renderer: networkd
  tunnels:
    wg0:
      mode: wireguard
      port: 51820
      addresses: [10.0.0.2/24]
      key: /etc/wireguard/private.key   # clave privada (base64) o ruta al archivo
      peers:
        - keys:
            public: <remote-public-key>
          endpoint: 203.0.113.1:51820
          allowed-ips: [0.0.0.0/0]
          keepalive: 25

La clave privada se especifica con key (o keys: private:), la clave pública del par — keys: public:, el intervalo keepalive — keepalive. Las claves private-key, public-key y persistent-keepalive, habituales en wg-quick, no existen en netplan — si las usas netplan generate terminará con error. La ruta a un archivo en lugar de la clave en línea está soportada con systemd-networkd a partir de la versión 242. En lugar de <remote-public-key> sustituye la clave pública de la otra parte en base64 — netplan no aceptará un marcador de posición.


VLAN (Virtual LAN)

Segmentación del tráfico por VLAN ID.

yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: no
  vlans:
    vlan10:
      id: 10
      link: enp0s3
      addresses: [192.168.10.100/24]
      routes:
        - to: default
          via: 192.168.10.1

Puentes (Bridges)

Unen varios interfaces.

yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3: { dhcp4: no }
    enp0s8: { dhcp4: no }
  bridges:
    br0:
      interfaces: [enp0s3, enp0s8]
      addresses: [192.168.1.100/24]
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]

Bonding (agrupación de interfaces)

Para tolerancia a fallos y/o aumentar el ancho de banda.

yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3: { dhcp4: no }
    enp0s8: { dhcp4: no }
  bonds:
    bond0:
      interfaces: [enp0s3, enp0s8]
      addresses: [192.168.1.100/24]
      routes:
        - to: default
          via: 192.168.1.1
      parameters:
        mode: 802.3ad                # LACP (requiere soporte en el switch)
        transmit-hash-policy: layer3+4
        mii-monitor-interval: 100

Por qué el bonding no acelera una única conexión y cómo elegir el modo se explica en el artículo «Redundancia de enlaces: dentro del edificio».


Parámetros adicionales

  • MTU:
    yaml
    mtu: 9000
  • Dirección MAC:
    yaml
    macaddress: 00:16:3e:12:34:56
  • Métricas de rutas:
    yaml
    routes:
      - to: 192.168.2.0/24
        via: 192.168.1.1
        metric: 100

Aplicación de la configuración

  1. Comprobación de sintaxis:
    bash
    sudo netplan generate
  2. Prueba de 120 segundos:
    bash
    sudo netplan try
  3. Aplicar:
    bash
    sudo netplan apply

Consejos útiles

  • Permisos: los archivos de configuración /etc/netplan/*.yaml deben ser 600 o 644, de lo contrario aparecerán advertencias.
    bash
    sudo chmod 600 /etc/netplan/*.yaml
  • Comprobación de interfaces:
    ip a, ip r, nmcli (si se usa NetworkManager).
  • Registros:
    journalctl -u systemd-networkd o /var/log/syslog.
  • Copias de seguridad: siempre guarda copias antes de experimentar.

Compatibilidad de características de Netplan por versión

CaracterísticaSoporte en NetplanVersión mínima de UbuntuComentarios
Ethernet, Wi-Fisiempre17.10+ (por defecto)Escenarios básicos, soportado por todos los renderers
VLANsiempre17.10+vlans: funciona tanto con networkd como con NetworkManager
Bridgessiempre17.10+Soporte completo de puentes
Bondingsiempre17.10+Modos: active-backup, balance-rr, 802.3ad, etc.
IPIP0.99+20.04+mode: ipip, funciona vía networkd
GRE0.99+20.04+mode: gre
VXLAN0.105+depende de la versión del paqueteEl grupo multicast se especifica en remote, puerto estándar 4789
WireGuard0.100+depende de la versión del paqueteClaves key, keys.public, keepalive; ruta a archivo de clave — con networkd 242
MAC/MTU/Routessiempre17.10+Ajuste fino de rutas e interfaces

Consejos prácticos

  • Para Ubuntu 18.04: Netplan ya está presente, pero el soporte de túneles es limitado. Es mejor actualizar o instalar netplan.io desde backports.
  • Para Ubuntu 20.04 y posteriores: la disponibilidad de WireGuard y VXLAN depende de la versión instalada de netplan.io (WireGuard — desde 0.100, VXLAN — desde 0.105); compruébala antes de configurar.
  • Comprobar la versión del paquete:
    bash
    apt show netplan.io | grep Version

Preguntas frecuentes (FAQ)

¿❓ Cómo comprobar si la configuración de Netplan funciona?
Usa:

bash
sudo netplan try

— tendrás 120 segundos para confirmar. Si todo está correcto, luego ejecuta:

bash
sudo netplan apply

¿❓ Cómo configurar VLAN con Netplan?
Ejemplo:

yaml
vlans:
  vlan10:
    id: 10
    link: enp0s3
    addresses: [192.168.10.100/24]

¿❓ Cómo configurar WireGuard en Netplan?
A partir de netplan.io 0.100:

yaml
tunnels:
  wg0:
    mode: wireguard
    key: /etc/wireguard/private.key
    peers:
      - keys:
          public: <remote-pubkey>
        endpoint: 203.0.113.1:51820
        allowed-ips: [0.0.0.0/0]

¿❓ Por qué Netplan se queja de los permisos del archivo?
Los archivos en /etc/netplan/ pueden contener claves y contraseñas, por eso netplan advierte si el archivo es accesible por otros usuarios. Establece permisos 600:

bash
sudo chmod 600 /etc/netplan/*.yaml

¿❓ ¿Soporta Netplan bonding?
Sí. Ejemplo para LACP (802.3ad):

yaml
bonds:
  bond0:
    interfaces: [enp0s3, enp0s8]
    parameters:
      mode: 802.3ad

Enlaces útiles

// Contact

¿Necesitas ayuda?

Escríbeme y te ayudaré a resolver el problema

Respondo en un día laborable (03:00-13:00 GMT)

Или оставьте заявку здесь:

Confirme que no es un bot.

Escribir y recibir una respuesta rápida