--- title: "IP estática en Linux con Netplan, NetworkManager e ifupdown" description: "Configura una dirección IP estática en Ubuntu 24.04 con Netplan, en Rocky Linux 9 con nmcli y en Debian 12 con ifupdown, sin perder el acceso SSH al servidor." category: "Configuración de Red" language: es source: https://cubepath.com/es/docs/configuración-de-red/configuracion-de-ip-estatica-en-linux-netplan-networkmanager-ifupdown updated: 2026-09-25 --- # IP estática en Linux con Netplan, NetworkManager e ifupdown Un servidor necesita una dirección IP que no cambie: los registros DNS, las reglas de firewall y los clientes que se conectan a él dependen de ella. Cada familia de distribuciones gestiona la red con una herramienta distinta: Netplan en Ubuntu, NetworkManager en Rocky Linux y el resto de la familia RHEL, e ifupdown en Debian. En este tutorial configurarás una IP estática con cada una de ellas, aplicarás los cambios de forma segura para no perder el acceso SSH y comprobarás que la dirección, la puerta de enlace y el DNS funcionan. ## Requisitos previos - Un servidor con Ubuntu 24.04 LTS, Rocky Linux 9 o Debian 12, por ejemplo un VPS de CubePath. - Un usuario no root con privilegios `sudo`. - Los datos de red que vas a asignar: dirección IP con su prefijo (por ejemplo `/24`), puerta de enlace y servidores DNS. En un servidor alojado te los da el proveedor; en una red local, el administrador de la red. - Acceso por consola (VNC o consola web del panel) por si un error de configuración deja el servidor sin red. Es la red de seguridad de todo este tutorial. En los ejemplos se usan direcciones de documentación que debes sustituir por las tuyas: | Dato | Valor de ejemplo | |---|---| | Interfaz | `eth0` | | Dirección IP | `203.0.113.10/24` | | Puerta de enlace | `203.0.113.1` | | DNS | `1.1.1.1` y `9.9.9.9` | ## Paso 1: Identificar la interfaz y la configuración actual Antes de cambiar nada, anota cómo está la red ahora. Lista las interfaces y sus direcciones: ```bash ip -brief address ``` ```output lo UNKNOWN 127.0.0.1/8 ::1/128 eth0 UP 203.0.113.10/24 fe80::be24:11ff:fe2a:3b4c/64 ``` La interfaz que te interesa es la que tiene la dirección pública o de la red local (aquí `eth0`; en tu sistema puede llamarse `ens18`, `enp1s0` o similar). Consulta también la ruta por defecto, que te indica la puerta de enlace actual: ```bash ip route show default ``` ```output default via 203.0.113.1 dev eth0 proto static ``` Y los servidores DNS en uso. En Ubuntu, que usa `systemd-resolved`: ```bash resolvectl status eth0 ``` En Rocky Linux y Debian basta con leer `/etc/resolv.conf`: ```bash cat /etc/resolv.conf ``` Guarda estos valores. Si vas a cambiar la IP de un servidor remoto, recuerda que la sesión SSH se cortará en cuanto la IP cambie y tendrás que reconectar a la nueva dirección. ## Paso 2: IP estática con Netplan (Ubuntu 24.04) Netplan lee archivos YAML de `/etc/netplan/` y genera la configuración para `systemd-networkd` (en servidores) o NetworkManager (en escritorios). Lista los archivos existentes: ```bash ls /etc/netplan/ ``` ```output 50-cloud-init.yaml ``` ### Evitar que cloud-init sobrescriba la configuración Si el archivo se llama `50-cloud-init.yaml`, la red la genera cloud-init al arrancar, como ocurre en la mayoría de VPS. Si cloud-init ya configura correctamente tu IP, solo necesitas este paso cuando vayas a cambiar la configuración a mano (por ejemplo, para añadir una IP adicional). Para que cloud-init no vuelva a escribir la red en el siguiente arranque, desactiva su gestión de red: ```bash sudo nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg ``` ```yaml network: {config: disabled} ``` ### Escribir la configuración Crea tu propio archivo con un número mayor, para que tenga prioridad y quede claro que lo gestionas tú: ```bash sudo nano /etc/netplan/60-static.yaml ``` ```yaml network: version: 2 renderer: networkd ethernets: eth0: dhcp4: false addresses: - 203.0.113.10/24 routes: - to: default via: 203.0.113.1 nameservers: addresses: - 1.1.1.1 - 9.9.9.9 ``` Algunas claves importantes: - `addresses` admite varias direcciones, incluidas IPv6, cada una con su prefijo. - `routes` con `to: default` sustituye a la antigua clave `gateway4`, que está obsoleta y genera un aviso. - YAML depende de la indentación: usa siempre espacios, nunca tabuladores. Si has desactivado cloud-init, mueve su archivo fuera de `/etc/netplan/` para que no haya dos configuraciones de la misma interfaz: ```bash sudo mv /etc/netplan/50-cloud-init.yaml /root/50-cloud-init.yaml.bak ``` Netplan avisa si los archivos son legibles por otros usuarios, porque pueden contener contraseñas de Wi-Fi. Restringe los permisos: ```bash sudo chmod 600 /etc/netplan/60-static.yaml ``` ### Aplicar los cambios de forma segura Valida la sintaxis antes de aplicar: ```bash sudo netplan generate ``` Si no muestra nada, el YAML es correcto. Ahora aplica la configuración con `netplan try`, que la activa y espera tu confirmación durante 120 segundos. Si pierdes la conexión y no puedes pulsar Enter, revierte automáticamente a la configuración anterior: ```bash sudo netplan try ``` ```output Do you want to keep these settings? Press ENTER before the timeout to accept the new configuration Changes will revert in 118 seconds ``` Pulsa Enter para confirmar. Si el cambio de IP implica que tu sesión SSH se corta, `netplan try` no podrá recibir la confirmación y revertirá. En ese caso, aplica la configuración desde la consola del panel con: ```bash sudo netplan apply ``` Comprueba el resultado: ```bash ip -brief address show eth0 ip route show default resolvectl dns eth0 ``` ```output eth0 UP 203.0.113.10/24 fe80::be24:11ff:fe2a:3b4c/64 default via 203.0.113.1 dev eth0 proto static Link 2 (eth0): 1.1.1.1 9.9.9.9 ``` ## Paso 3: IP estática con NetworkManager (Rocky Linux 9) En Rocky Linux, AlmaLinux, RHEL 9 y Fedora la red la gestiona NetworkManager, y la forma recomendada de configurarla en un servidor es `nmcli`. Desde RHEL 9 los perfiles se guardan como archivos de NetworkManager en `/etc/NetworkManager/system-connections/`; los antiguos `ifcfg-eth0` de `network-scripts` están obsoletos, así que no los edites a mano. ### Localizar la conexión NetworkManager trabaja con conexiones (perfiles), que no siempre se llaman igual que la interfaz. Lista las conexiones: ```bash nmcli connection show ``` ```output NAME UUID TYPE DEVICE System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0 lo 0f1b9a3c-8c1d-4c6e-9d0f-8c3b1e2f4a5b loopback lo ``` Usa el valor de la columna `NAME` (aquí `System eth0`, entre comillas porque tiene un espacio). ### Configurar la dirección Asigna dirección, puerta de enlace y DNS, y cambia el método de `auto` (DHCP) a `manual`. Todas las propiedades se pueden pasar en una sola orden: ```bash sudo nmcli connection modify "System eth0" \ ipv4.method manual \ ipv4.addresses 203.0.113.10/24 \ ipv4.gateway 203.0.113.1 \ ipv4.dns "1.1.1.1 9.9.9.9" ``` Revisa que los valores se han guardado: ```bash nmcli -g ipv4.method,ipv4.addresses,ipv4.gateway,ipv4.dns connection show "System eth0" ``` ```output manual 203.0.113.10/24 203.0.113.1 1.1.1.1,9.9.9.9 ``` ### Aplicar los cambios Los cambios no se aplican hasta que reactivas la conexión: ```bash sudo nmcli connection up "System eth0" ``` ```output Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3) ``` Si la IP nueva es distinta de la actual, lanza este comando desde la consola del panel o reconecta a la nueva dirección. Verifica: ```bash ip -brief address show eth0 ip route show default cat /etc/resolv.conf ``` Si prefieres una interfaz de menús, `sudo nmtui` permite hacer los mismos cambios en "Edit a connection". Al terminar, usa "Activate a connection" para desactivarla y activarla de nuevo. ## Paso 4: IP estática con ifupdown (Debian 12) Debian 12 en servidores usa ifupdown, que lee `/etc/network/interfaces`. Haz una copia de seguridad antes de editarlo: ```bash sudo cp /etc/network/interfaces /etc/network/interfaces.bak ``` Si tu VPS usa cloud-init, desactiva su gestión de red igual que en el paso 2 creando `/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg`. En ese caso la configuración de la interfaz puede estar en un archivo dentro de `/etc/network/interfaces.d/`; revisa su contenido con `ls /etc/network/interfaces.d/` y edita o elimina ese archivo para que la interfaz no quede definida dos veces. Abre el archivo: ```bash sudo nano /etc/network/interfaces ``` Sustituye el bloque de tu interfaz (normalmente `iface eth0 inet dhcp`) por uno estático: ```text source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 203.0.113.10/24 gateway 203.0.113.1 ``` `auto eth0` hace que la interfaz se active al arrancar. La dirección se escribe con su prefijo en la línea `address`, sin necesidad de la antigua línea `netmask`. ### Configurar el DNS ifupdown no gestiona el DNS por sí solo. En una instalación básica de Debian 12, el archivo `/etc/resolv.conf` es un archivo normal que puedes editar: ```bash sudo nano /etc/resolv.conf ``` ```text nameserver 1.1.1.1 nameserver 9.9.9.9 ``` > Nota: Si tienes instalado el paquete `resolvconf`, este archivo se regenera. En ese caso añade la línea `dns-nameservers 1.1.1.1 9.9.9.9` dentro del bloque `iface eth0 inet static` en lugar de editar `/etc/resolv.conf`. ### Aplicar los cambios Reinicia la interfaz. Hazlo en una sola línea para que la sesión SSH no se quede a medias entre el `ifdown` y el `ifup`, y preferiblemente desde la consola del panel: ```bash sudo ifdown eth0 && sudo ifup eth0 ``` Comprueba la configuración: ```bash ip -brief address show eth0 ip route show default ``` ```output eth0 UP 203.0.113.10/24 fe80::be24:11ff:fe2a:3b4c/64 default via 203.0.113.1 dev eth0 onlink ``` ## Paso 5: Verificar la conectividad Con cualquiera de los tres métodos, termina con las mismas comprobaciones. Primero, que llegas a la puerta de enlace: ```bash ping -c 3 203.0.113.1 ``` Después, que sales a Internet usando una IP, sin depender del DNS: ```bash ping -c 3 1.1.1.1 ``` ```output 3 packets transmitted, 3 received, 0% packet loss, time 2003ms ``` Por último, que la resolución de nombres funciona: ```bash getent hosts cubepath.com ``` Si esta última falla pero las anteriores funcionan, el problema es exclusivamente del DNS. Para comprobar que la configuración sobrevive a un reinicio, reinicia el servidor y repite estas pruebas: ```bash sudo reboot ``` ## Solución de problemas **He perdido el acceso SSH tras aplicar los cambios** Entra por la consola del panel. En Ubuntu restaura el archivo de cloud-init (`sudo mv /root/50-cloud-init.yaml.bak /etc/netplan/`), borra tu `60-static.yaml` y ejecuta `sudo netplan apply`. En Debian restaura `/etc/network/interfaces.bak`. En Rocky, revisa los valores con `nmcli connection show "System eth0"` y corrígelos. **`netplan` muestra `Error in network definition` o errores de indentación** El YAML está mal indentado o hay tabuladores. Revisa que cada nivel use dos espacios y que las listas empiecen con `- `. `sudo netplan generate` indica la línea del error. **La IP se pierde después de reiniciar** Casi siempre es cloud-init regenerando la red en el arranque. Comprueba que existe `/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg` con `network: {config: disabled}`. **`ping` a IPs funciona pero no se resuelven nombres** Revisa el DNS con `resolvectl status` (Ubuntu) o `cat /etc/resolv.conf` (Debian, Rocky). Asegúrate de que el firewall permite el tráfico saliente al puerto 53. **`RTNETLINK answers: File exists` en Debian** La interfaz ya tenía una dirección o ruta asignada. Ejecuta `sudo ip address flush dev eth0` desde la consola y vuelve a lanzar `sudo ifup eth0`. ## Conclusión Has configurado una IP estática con Netplan en Ubuntu 24.04, con `nmcli` en Rocky Linux 9 y con ifupdown en Debian 12, aplicando los cambios de forma que puedas recuperar el servidor si algo falla, y has verificado puerta de enlace, conectividad y DNS. Como siguientes pasos puedes añadir una segunda dirección a la misma interfaz, configurar también IPv6 o actualizar los registros DNS de tus dominios para que apunten a la nueva IP.