Establecer una dirección IP estática en Ubuntu Server 24.04
Antes de 2017, Ubuntu Server basaba su configuración de red en los parámetros almacenados en el archivo de configuración /etc/network/interfaces, una estructura heredada directamente de Debian.
Sin embargo, a partir de la versión 17.10, Canonical introduce una nueva herramienta de configuración de red llamada NetPlan, que pretende facilitar el trabajo a desarrolladores y usuarios en general.
El funcionamiento de NetPlan se basa en un archivo con la descripción de los adaptadores de red que necesitemos definir. El archivo estará escrito en YAML (siglas de YAML Ain’t Markup Language), un archivo de texto plano con un formato específico para la serialización que resulta fácilmente comprensible para las personas.
Por lo tanto, a partir de la versión 17.10, deberemos utilizar archivos de configuración con extensión yaml, almacenados en la ruta /etc/netplan.
En cuanto a la sintaxis que debemos emplear en estos archivos, hoy trataremos de arrojar algo de luz sobre ella.
La configuración inicial de NetPlan
Para comprobar el valor inicial que tiene el archivo 50-cloud-init.yaml, basta con escribir una orden como esta:
sudo cat /etc/netplan/50-cloud-init.yaml
En versiones anteriores de Ubuntu, podíamos ver (aunque no cambiar) el contenido de este archivo sin usar privilegios administrativos. Sin embargo, ahora, sí que los necesitamos. Por eso hemos escrito la orden sudo por delante de cat.
Probablemente, te hayan sorprendido los comentarios que aparecen al principio del archivo. Sin embargo, hacen referencia a una imagen que aún no ha realizado su primera ejecución de cloud-init (durante el arranque). En esos casos, los cambios que podamos hace en el archivo serían reemplazados por cloud-init.
Ten en cuenta que cloud-init se utiliza para configurar cosas en el primer arranque. Uno de esos archivos será 50-cloud-init.yaml (o como se llame el archivo predeterminado en tu sistema).
En definitiva, la advertencia se refiere a posibles cambios del archivo en contenedores, máquinas virtuales, etc., que sean utilizadas como plantilla y estén configuradas para configurarse durante el primer arranque.
En el caso de Ubuntu Server, la configuración predeterminada de NetPlan será similar a esta:
network: ethernets: enp0s3: dhcp4: true version: 2
Explicado de forma sencilla, lo que establece es que el adaptador de red que estamos definiendo es enp0s3 y que utilizará DHCP. Es decir, que su dirección IP será asignada desde otro dispositivo de nuestra red, normalmente el router que nos facilita el acceso a Internet, que actuará como servidor DHCP.
En ocasiones, también puede aparecer una línea más, parecida a esta:
renderer: networkd
Esto indicará que el demonio systemd-networkd es el encargado de administrar la red. Sin embargo, si realizas esta tarea en un sistema de escritorio, aparece NetworkManager, porque este es el programa que ofrece los servicios de detección y configuración automáticas en la interfaz gráfica.
Establecer una dirección IP fija en NetPlan
La mayoría de las veces, un servidor necesita disponer de una dirección IP fija. Imagina, por ejemplo, que quieres redireccionar algún puerto desde el router, usar SSH para administrar el servidor de forma remota, o alguna tarea por el estilo.
En estos casos, cuando utilicemos Ubuntu Server 24.04 LTS, deberemos editar el archivo de configuración correspondiente (en nuestro ejemplo, 50-cloud-init.yaml) y realizar las modificaciones oportunas.
Para lograrlo, puedes usar el editor de textos nano:
sudo nano /etc/netplan/50-cloud-init.yaml
Una vez que nos encontramos en la ventana de trabajo de nano, sustituiremos su valor por algo como esto:
network: ethernets: enp0s3: addresses: - 192.168.1.10/24 nameservers: addresses: - 208.67.222.222 routes: - to: default via: 192.168.1.1 version: 2
Obviamente, los valores concretos tendrán que adaptarse a tus necesidades pero, para facilitarte las cosas, a continuación te explicamos cada una de sus partes:
-
addresses: Establece que, en mi red, la dirección IP de equipo será siempre 192.168.1.10.
También indica que la máscara de red utiliza 24 bits (lo que equivale a 255.255.255.0). Este valor también puede cambiar según las características de tu red.
-
nameservers: Configura la dirección (o direcciones) de Internet donde se encuentra el servidor DNS que usaremos para convertir los nombres de dominio en direcciones IP. En este caso utilizaremos el servidor primario de OpenDNS.
Si necesitáramos incluir más de una dirección, bastaría con duplicar la línea, como muestra este ejemplo:
nameservers: addresses: - 208.67.222.222 - 208.67.220.220
-
A partir de Ubuntu 22.04 LTS se implementó una nueva versión de NetPlan, que propuso la desaparición de gateway4 y gateway6, aunque seguirán funcionando por un tiempo. Sin embargo, lo recomendable es que, desde ahora, en su lugar comencemos a utilizar routes que, por cada ruta definida establece dos valores:
-
to, para indicar a ruta que debe utilizarse.
-
via, para establecer la dirección IP por la que hacerlo.
Para una dirección IPv6 sería idéntico, pero usando un valor IPv6 a continuación de vía. En definitiva, algo como esto:
routes: - to: default via: 192.168.1.1 - to: default via: 2001:0000:1F40:0000:0000:0AB0:654A:110A
-
Cuando hayamos completado la configuración, estaremos listos para salir de la edición del archivo.
Al hacerlo, el editor nos pregunta si queremos guardar los cambios.
Entonces, el editor nos permite elegir entre sobrescribir el contenido del archivo original, o elegir un nombre o ubicación diferente.
Aplicar los cambios
De vuelta en el prompt del sistema, estaremos listos para aplicar los cambios del archivo de configuración. Algo que podemos conseguir ejecutando el siguiente comando:
sudo netplan apply
Si el comando no ofrece ninguna información de salida es que todo ha funcionado correctamente. No obstante, para comprobar que los cambios han surtido efecto, podemos consultar la configuración actual de la red:
ip addr
Como puedes comprobar, la configuración coincide con los valores que hemos establecido.
Y hasta aquí el contenido de este artículo. Espero que te resulte útil.