Cómo usar netplan para configurar la red en Linux

Cómo usar netplan para configurar la red en Linux

Imagen netplan

En esta entrada te voy a enseñar a trabajar con el sistema de gestión de red “netplan”. Este sistema está actualmente implementado para las distribuciones de Ubuntu, tanto Desktop como Server. Te mostraré de forma clara y con ejemplos cómo usar este potente sistema que es neplan.

Si quieres conocer más sobre cómo funciona Linux y quieres saber cómo instalar tu propia distribución de Debian, puedes acceder de forma gratuita a mi curso básico de Linux.

Pero antes de empezar vamos a ver de forma resumida qué es esto de netplan, y qué ventajas tiene con respecto a todos los otros sistemas de gestión de red que hay ya en Linux.

¿Qué es netplan?

Pues según nos indica en la propia web de canonical podemos ver que:

Netplan es una utilidad para configurar fácilmente redes en un sistema Linux. Simplemente crea una descripción YAML de las interfaces de red requeridas y para qué debe configurarse cada una. A partir de esta descripción, Netplan generará toda la configuración necesaria para la herramienta de renderización elegida.

Web de netplan.io

Por tanto, lo que podemos extraer de esta definición es que es una aplicación que han creado por encima de los sistemas de renderización de redes (ya sea Networkd o NetworkManager). Además, se basa en ellos para luego realizar los ajustes de red necesarios.

Es verdad que con netplan se puede realizar una configuración muy limpia y fácilmente legible y entendible, pero ahora veremos si realmente mejora lo que ya teníamos antes.

Cómo configurar y usar el YAML de netplan

Para empezar hay que saber que todos los ficheros de netplan siguen un estándar y hay que poner los encabezados correctamente para que puedan ser tratados por la aplicación.

network:
  version: 2
  renderer: [networkd or NetworkManager]

Por defecto, Ubuntu Desktop utiliza el renderizador de red “NetworkManager” y en cambio Ubuntu Server utiliza “networkd”. Si quieres saber qué sistema de gestión de red se está usando en tu equipo puedes buscar más información en este enlace de AskUbuntu.

Después deberás especificar en el fichero qué tipo de configuración quieres realizar. Si solo quieres configurar una (o varias) interfaz de red deberás usar “ethernets”, si quieres crear un bonding con varias interfaces de red para que trabajen como una sola, escribe “bonds” y si lo que deseas es crear una vlan para una interfaz, “vlans” es la configuración.

Cómo configurar la red por DCHP al usar netplan

Esta es la configuración más sencilla que podemos crear, aunque antes de nada deberás asegurarte de cual es el nombre de tu interfaz de red.

jaime@aprendolinux:~$ ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 24:4b:fe:90:54:6c brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.36/24 brd 192.168.0.255 scope global dynamic noprefixroute enp3s0
       valid_lft 83953sec preferred_lft 83953sec
    inet6 fe80::72b1:c231:d7d0:bcd2/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Bien, una vez que ya sabes el nombre de la interfaz de red que deseas configurar en tu equipo, el paso siguiente será escribir la configuración en el directorio “/etc/netplan”. El nombre de esta configuración también deberá seguir un estandar:

ID-nombre.yaml

Así, por ejemplo podemos utilizar el que ya existe por defecto o crear un nuevo:

jaime@aprendolinux:~$ ls /etc/netplan/
01-network-manager-all.yaml
jaime@aprendolinux:~$ cat /etc/netplan/01-network-manager-all.yaml 
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

Cambiar renderizador de NetworkManager a Networkd en netplan

Si queremos empezar a gestionar nosotros mismos la configuración de red del equipo, deberás cambiar “NetworkManager” por “networkd”. Y después puedes especificar que deseas que el equipo obtenga una dirección IP mediante un servicio de DHCP.

root@aprendolinux:/etc/netplan# cat 001-default.yaml 
network:
  version: 2
  renderer: networkd
  ethernets:
        enp3s0:
            dhcp4: true

Una vez que tenemos la configuración así, podemos lanzar el comando de netplan que aplica la configuración:

root@aprendolinux:/etc/netplan# netplan apply
root@aprendolinux:/etc/netplan# systemctl status systemd-networkd
● systemd-networkd.service - Network Service
     Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled-runtime; vendor preset: enabled)
     Active: active (running) since Mon 2021-11-08 23:14:16 CET; 10s ago
       Docs: man:systemd-networkd.service(8)
   Main PID: 7376 (systemd-network)
     Status: "Processing requests..."
      Tasks: 1 (limit: 35959)
     Memory: 1.7M
     CGroup: /system.slice/systemd-networkd.service
             └─7376 /lib/systemd/systemd-networkd

nov 08 23:14:16 aprendolinux systemd[1]: Starting Network Service...
nov 08 23:14:16 aprendolinux systemd-networkd[7376]: enp3s0: Gained IPv6LL
nov 08 23:14:16 aprendolinux systemd-networkd[7376]: Enumeration completed
nov 08 23:14:16 aprendolinux systemd[1]: Started Network Service.
nov 08 23:14:16 aprendolinux systemd-networkd[7376]: enp3s0: IPv6 successfully enabled
nov 08 23:14:18 aprendolinux systemd-networkd[7376]: enp3s0: DHCPv4 address 192.168.0.36/24 via 192.168.0.1

Si quieres tener la total certeza que NetworkManager no está interfiriendo en la configuración, puedes parar el servicio y para futuros reinicios puedes incluso deshabilitarlo:

root@aprendolinux:/etc/netplan# systemctl stop network-manager
root@aprendolinux:/etc/netplan# systemctl disable network-manager
Synchronizing state of network-manager.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable network-manager
Removed /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.

Cómo configurar un IP estática al usar netplan

Una vez que ya hemos visto la configuración básica de netplan, puedes comenzar a jugar con los diferentes tipos de configuración. Ahora te voy a mostrar cómo se debería realizar la configuración de una interfaz de red asignando una IP estática al equipo.

Para ello especificaremos también el gateway o puerta de enlace para la salida del equipo al exterior. Este gateway se configura mediante la definición de la ruta por defecto:

root@aprendolinux:/etc/netplan# cat 001-default.yaml 
network:
  version: 2
  renderer: networkd
  ethernets:
        enp3s0:
            dhcp4: no
            addresses:
                - 192.168.0.37/24
            nameservers:
                search: [mydomain, otherdomain]
                addresses: [8.8.8.8, 1.1.1.1]
            routes:
                - to: default
                  via: 192.168.0.1
root@aprendolinux:/etc/netplan# netplan apply
root@aprendolinux:/etc/netplan# ip address show
... 
       valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 24:4b:fe:90:54:6c brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.37/24 brd 192.168.0.255 scope global enp3s0
       valid_lft forever preferred_lft forever
    inet6 fe80::72b1:c231:d7d0:bcd2/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *