Configuración de red en sistemas Linux - systemd-networkd
Ya hemos visto que Linux nos ofrece diferentes métodos para configurar los parámetros de red. Actualmente según la distribución que utilicemos y la configuración del sistema que estemos utilizando, tendremos a nuestra disposición algunos de estos métodos:
- ifupdown: Es una herramienta tradicional para configurar redes en Linux basada en los archivos que encontramos en el directorio
/etc/network
. - NetworkManager: Es una solución moderna y flexible diseñada para entornos de escritorio y servidores. Ofrece una interfaz gráfica (como
nm-applet
) y herramientas de línea de comandos (nmcli
ynmtui
). - systemd-networkd: Es una alternativa más reciente que forma parte de
systemd
. Se utiliza principalmente en servidores y entornos que buscan configuraciones administradas de manera declarativa a través de archivos de configuración en/etc/systemd/network/
.
En este tercer artículo voy a introducir el servicio systemd-networkd para realizar la configuración de nuestra red.
Configuración de red con ssytemd-networkd
systemd-networkd es un componente de systemd diseñado para gestionar la configuración de red en sistemas Linux. Proporciona un enfoque declarativo y centralizado para configurar interfaces de red, redes virtuales, enlaces y rutas.
Hemos deshabilitado NetworkManager y si es necesario instalamos el servicio
sudo apt install systemd-networkd
systemd-networkd utiliza archivos de configuración ubicados en /etc/systemd/network/
para definir la configuración de las interfaces de red. Cada archivo debe tener la extensión .network
, .netdev
o .link
dependiendo de su propósito.
.network
: Nos permiten declarar la configuración básica d las interfaces de red..netdev
: Se utilizan para definir interfaces virtuales como túneles, bridges y VLANs..link
: Nos permiten configurar atributos específicos de las interfaces como el nombre, el MTU o las opciones de Wake-on-LAN.
Veamos un ejemplo de una configuración de red dinámica. Creamos el fichero /etc/systemd/network/10-enp1s0.network
:
[Match]
Name=enp1s0
[Network]
DHCP=yes
El fichero puede llamarse como queramos, pero suele empezar con un número para indicar la prioridad de activación. Para realizar una configuración estática, cambiaríamos el fichero de la siguiente manera:
[Match]
Name=enp1s0
[Network]
Address=192.168.1.2/24
Gateway=192.168.1.1
DNS=1.1.1.1 9.9.9.9
La sección [Match]
permite especificar a qué interfaces se aplicará la configuración (por nombre, dirección MAC, o características específicas).
Si necesitamos especificar alguna ruta estática, lo podemos hacer de la siguiente manera:
[Match]
Name=enp1s0
[Network]
Address=192.168.1.2/24
Gateway=192.168.1.1
DNS=1.1.1.1 9.9.9.9
[Route]
Destination=10.0.0.0/8
Gateway=192.168.1.1
Comandos útiles
Si queremos ver la lista de interfaces:
networkctl list
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 enp1s0 ether routable configured
Si queremos ver el estado de la red:
networkctl status
● State: routable
Online state: online
Address: 192.16.1.2 on enp1s0
fe80::f816:3eff:fe0d:5da6 on enp1s0
Gateway: 192.168.1.1 on enp1s0
DNS: 1.1.1.1 9.9.9.9
Si queremos ver el estado de una interfaz concreta: networkctl status enp1s0
.
Si cambiamos alguna configuración y queremos recargarla sin detener los servicios de red:
networkctl reload
Si queremos aplicar de nuevo la configuración de una interfaz:
networkctl reconfigure enp1s0
Podemos desactivar una interfaz ejecutando:
networkctl down enp1s0
Y volver a iniciarla:
networkctl up enp1s0
Si necesitamos reiniciar el servicio de red:
systemctl restart systemd-networkd
Para revisar los logs para diagnosticar problemas:
journalctl -u systemd-networkd
Conclusión
systemd-networkd
es una herramienta poderosa y flexible para gestionar configuraciones de red en sistemas Linux. Con este manual, puedes configurar desde interfaces simples hasta configuraciones avanzadas como bridges, bonding o rutas estáticas. Explora las capacidades adicionales consultando la documentación oficial: systemd.network.
Leave a Comment
Your email address will not be published. Required fields are marked *