Cómo usar netplan para configurar la red en Linux
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.
Índice de contenidos
¿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