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:
ip -brief address
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:
ip route show default
default via 203.0.113.1 dev eth0 proto static
Y los servidores DNS en uso. En Ubuntu, que usa systemd-resolved:
resolvectl status eth0
En Rocky Linux y Debian basta con leer /etc/resolv.conf:
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:
ls /etc/netplan/
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:
sudo nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
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ú:
sudo nano /etc/netplan/60-static.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:
addressesadmite varias direcciones, incluidas IPv6, cada una con su prefijo.routesconto: defaultsustituye a la antigua clavegateway4, 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:
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:
sudo chmod 600 /etc/netplan/60-static.yaml
Aplicar los cambios de forma segura
Valida la sintaxis antes de aplicar:
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:
sudo netplan try
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:
sudo netplan apply
Comprueba el resultado:
ip -brief address show eth0
ip route show default
resolvectl dns eth0
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:
nmcli connection show
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:
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:
nmcli -g ipv4.method,ipv4.addresses,ipv4.gateway,ipv4.dns connection show "System eth0"
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:
sudo nmcli connection up "System eth0"
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:
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:
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:
sudo nano /etc/network/interfaces
Sustituye el bloque de tu interfaz (normalmente iface eth0 inet dhcp) por uno estático:
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:
sudo nano /etc/resolv.conf
nameserver 1.1.1.1
nameserver 9.9.9.9
NotaSi tienes instalado el paquete
resolvconf, este archivo se regenera. En ese caso añade la líneadns-nameservers 1.1.1.1 9.9.9.9dentro del bloqueiface eth0 inet staticen 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:
sudo ifdown eth0 && sudo ifup eth0
Comprueba la configuración:
ip -brief address show eth0
ip route show default
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:
ping -c 3 203.0.113.1
Después, que sales a Internet usando una IP, sin depender del DNS:
ping -c 3 1.1.1.1
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
Por último, que la resolución de nombres funciona:
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:
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.
