Configuración de IP Estática en Linux: Guía Completa para Netplan, NetworkManager e ifupdown

Introducción

Configurar una dirección IP estática en servidores Linux es una habilidad fundamental para administradores de sistemas e ingenieros DevOps. A diferencia de las direcciones IP dinámicas asignadas por servidores DHCP, las direcciones IP estáticas permanecen constantes, lo que las hace esenciales para servidores, infraestructura de red y servicios que requieren direccionamiento de red predecible. Ya sea que estés configurando un servidor web, un clúster de bases de datos o un dispositivo de red, comprender cómo configurar direcciones IP estáticas en diferentes distribuciones de Linux es crucial para mantener una conectividad de red confiable y segura.

Esta guía completa cubre la configuración de IP estática en tres sistemas principales de gestión de red utilizados en distribuciones Linux modernas: Netplan (Ubuntu 18.04+), NetworkManager (RHEL, CentOS, Fedora) y el sistema tradicional ifupdown (Debian). Al dominar estos métodos de configuración, estarás equipado para manejar la configuración de red en prácticamente cualquier distribución de Linux.

¿Por Qué Usar Direcciones IP Estáticas?

Las direcciones IP estáticas ofrecen varias ventajas para entornos de servidor:

  • Predictibilidad: Los servicios siempre se vinculan a la misma dirección IP, simplificando la configuración de DNS y las reglas de firewall
  • Acceso Remoto: Las direcciones IP consistentes hacen que el acceso SSH y la administración remota sean confiables
  • Servicios de Red: Esenciales para servidores que alojan DNS, correo electrónico, servicios web y bases de datos
  • Dependencias de Servicios: Las aplicaciones que esperan direcciones IP específicas funcionan correctamente
  • Monitoreo y Registro: Seguimiento y correlación simplificados de la actividad de red
  • Dependencias DHCP Reducidas: Elimina la dependencia de la disponibilidad del servidor DHCP

Requisitos Previos

Antes de configurar direcciones IP estáticas en tu sistema Linux, asegúrate de tener:

  • Acceso root o sudo al servidor Linux de destino
  • Comprensión básica de conceptos de redes (direcciones IP, máscaras de subred, gateways)
  • Acceso SSH al servidor (si se configura remotamente)
  • Copia de seguridad de los archivos de configuración de red actuales
  • Información válida de dirección IP, máscara de subred, gateway y servidor DNS
  • Conocimiento del nombre de tu interfaz de red (eth0, ens33, enp0s3, etc.)

Verificación de tu Configuración de Red Actual

Antes de realizar cambios, documenta tu configuración de red actual:

# Ver todas las interfaces de red
ip addr show

# Mostrar tabla de enrutamiento actual
ip route show

# Verificar configuración de DNS
cat /etc/resolv.conf

# Ver conexiones de red actuales
ss -tuln

Configuración de IP Estática con Netplan (Ubuntu 18.04+ y Derivados)

Netplan es la herramienta predeterminada de configuración de red para Ubuntu 18.04 y versiones posteriores. Utiliza archivos de configuración YAML para definir ajustes de red, que luego se aplican a través de renderizadores subyacentes como systemd-networkd o NetworkManager.

Comprendiendo la Arquitectura de Netplan

Netplan actúa como una capa de abstracción de configuración de red, traduciendo archivos YAML en configuración para renderizadores de backend. Este enfoque proporciona una experiencia de configuración consistente en diferentes versiones de Ubuntu y derivados.

Configuración Paso a Paso de Netplan

Paso 1: Identificar la Interfaz de Red

Primero, identifica el nombre de tu interfaz de red:

ip link show

Los nombres de interfaz comunes incluyen:

  • ens33, ens18 - VMware y VirtualBox
  • enp0s3, enp0s8 - Servidores físicos
  • eth0, eth1 - Convención de nomenclatura antigua

Paso 2: Respaldar la Configuración Existente

Siempre crea una copia de seguridad antes de modificar la configuración de red:

sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.backup

Paso 3: Editar la Configuración de Netplan

Los archivos de configuración de Netplan están ubicados en /etc/netplan/. Edita el archivo de configuración principal:

sudo nano /etc/netplan/00-installer-config.yaml

Reemplaza el contenido con tu configuración de IP estática:

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: no
      addresses:
        - 192.168.1.100/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4

Desglose de la configuración:

  • network.version: 2 - Especifica la sintaxis de Netplan versión 2
  • renderer: networkd - Usa systemd-networkd como backend (alternativa: NetworkManager)
  • dhcp4: no - Deshabilita DHCP para IPv4
  • addresses - Dirección IP estática con notación CIDR (/24 = 255.255.255.0)
  • routes - Configuración de gateway predeterminado
  • nameservers - Direcciones de servidores DNS

Paso 4: Validar la Sintaxis de Configuración

Antes de aplicar los cambios, valida la sintaxis YAML:

sudo netplan --debug generate

Si no aparecen errores, la sintaxis es correcta.

Paso 5: Aplicar la Configuración

Aplica la nueva configuración de red:

sudo netplan apply

Para propósitos de prueba, puedes probar la configuración con reversión automática:

sudo netplan try

Este comando espera confirmación antes de aplicar permanentemente los cambios, revirtiendo automáticamente después de 120 segundos si no se confirma.

Configuraciones Avanzadas de Netplan

Múltiples Direcciones IP

Configura múltiples direcciones IP en una sola interfaz:

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: no
      addresses:
        - 192.168.1.100/24
        - 192.168.1.101/24
        - 192.168.1.102/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

Rutas Estáticas

Agrega rutas estáticas personalizadas:

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: no
      addresses:
        - 192.168.1.100/24
      routes:
        - to: default
          via: 192.168.1.1
        - to: 10.10.0.0/16
          via: 192.168.1.254
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]

Configuración de Interfaz Bond

Configura bonding de red para redundancia:

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: no
    ens34:
      dhcp4: no
  bonds:
    bond0:
      dhcp4: no
      interfaces:
        - ens33
        - ens34
      addresses:
        - 192.168.1.100/24
      routes:
        - to: default
          via: 192.168.1.1
      parameters:
        mode: active-backup
        primary: ens33
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

Configuración de IP Estática con NetworkManager (RHEL, CentOS, Rocky Linux, Fedora)

NetworkManager es el sistema predeterminado de configuración de red para distribuciones basadas en Red Hat. Proporciona herramientas tanto de línea de comandos (nmcli) como de interfaz de usuario basada en texto (nmtui) para la configuración de red.

Usando nmcli (Interfaz de Línea de Comandos)

La herramienta nmcli ofrece potentes capacidades de configuración de red desde la línea de comandos.

Paso 1: Listar Conexiones de Red

Ver las conexiones de red existentes:

nmcli connection show

Identifica el nombre de tu conexión (por ejemplo, "System eth0" o "Wired connection 1").

Paso 2: Configurar IP Estática con nmcli

Configurar direccionamiento IP estático:

# Establecer dirección IPv4 estática
sudo nmcli connection modify "System eth0" ipv4.addresses 192.168.1.100/24

# Establecer gateway
sudo nmcli connection modify "System eth0" ipv4.gateway 192.168.1.1

# Establecer servidores DNS
sudo nmcli connection modify "System eth0" ipv4.dns "8.8.8.8 8.8.4.4"

# Cambiar de auto (DHCP) a manual
sudo nmcli connection modify "System eth0" ipv4.method manual

# Bajar y subir la conexión para aplicar cambios
sudo nmcli connection down "System eth0"
sudo nmcli connection up "System eth0"

Paso 3: Verificar la Configuración

Confirmar la configuración:

nmcli connection show "System eth0"
ip addr show

Usando nmtui (Interfaz de Usuario de Texto)

Para aquellos que prefieren una interfaz gráfica basada en texto:

sudo nmtui

Navega a través de la interfaz:

  1. Selecciona "Edit a connection"
  2. Elige tu interfaz de red
  3. Selecciona "IPv4 CONFIGURATION" y cambia a "Manual"
  4. Agrega tu dirección IP, gateway y servidores DNS
  5. Selecciona "OK" y luego "Activate a connection" para aplicar

Usando Archivos de Configuración Directamente

NetworkManager almacena perfiles de conexión en /etc/NetworkManager/system-connections/ (RHEL 8+) o usa archivos ifcfg en /etc/sysconfig/network-scripts/ (RHEL 7).

Para RHEL 7 y CentOS 7 (archivos ifcfg):

Edita el archivo de configuración de la interfaz:

sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0

Configurar IP estática:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4

Reiniciar la red:

sudo systemctl restart network
# O para sistemas más nuevos:
sudo nmcli connection reload
sudo nmcli connection up eth0

Configuración de IP Estática con ifupdown (Método Tradicional de Debian)

El sistema de redes tradicional de Debian utiliza /etc/network/interfaces para la configuración. Aunque Debian 10+ a menudo usa NetworkManager por defecto, muchas instalaciones de servidor aún utilizan ifupdown.

Paso 1: Editar la Configuración de Interfaces

Edita el archivo principal de configuración de red:

sudo nano /etc/network/interfaces

Paso 2: Configurar IP Estática

Reemplaza la configuración DHCP con configuración estática:

# La interfaz de red de loopback
auto lo
iface lo inet loopback

# La interfaz de red primaria
auto eth0
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4
    dns-search example.com

Notación CIDR alternativa (Debian 10+):

auto eth0
iface eth0 inet static
    address 192.168.1.100/24
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4

Paso 3: Configurar la Resolución DNS

Editar la configuración DNS:

sudo nano /etc/resolv.conf

Agregar servidores DNS:

nameserver 8.8.8.8
nameserver 8.8.4.4
search example.com

Para evitar que DHCP sobrescriba /etc/resolv.conf:

sudo chattr +i /etc/resolv.conf

Paso 4: Reiniciar la Red

Aplicar la configuración:

sudo systemctl restart networking
# O
sudo ifdown eth0 && sudo ifup eth0

Configuraciones Avanzadas de ifupdown

Múltiples Direcciones IP (Aliasing de IP)

Configurar direcciones IP adicionales:

auto eth0
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1

auto eth0:0
iface eth0:0 inet static
    address 192.168.1.101
    netmask 255.255.255.0

auto eth0:1
iface eth0:1 inet static
    address 192.168.1.102
    netmask 255.255.255.0

Rutas Estáticas

Agregar enrutamiento personalizado:

auto eth0
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4
    # Ruta estática a red 10.0.0.0/8
    up ip route add 10.0.0.0/8 via 192.168.1.254
    down ip route del 10.0.0.0/8 via 192.168.1.254

Verificación y Pruebas

Después de configurar direcciones IP estáticas, prueba exhaustivamente tu configuración de red.

Pruebas Básicas de Conectividad

Verificar la Asignación de Dirección IP

ip addr show
# O comando antiguo
ifconfig

Busca tu dirección IP configurada en la interfaz correcta.

Verificar la Tabla de Enrutamiento

ip route show
# Verificar gateway predeterminado
ip route | grep default

Probar la Conectividad del Gateway

ping -c 4 192.168.1.1

Probar la Resolución DNS

# Verificar servidores DNS
cat /etc/resolv.conf

# Probar resolución DNS
nslookup google.com
dig google.com

# Probar con servidor DNS específico
nslookup google.com 8.8.8.8

Probar la Conectividad a Internet

ping -c 4 8.8.8.8
ping -c 4 google.com

Pruebas de Red Avanzadas

Verificar el Estado de la Interfaz de Red

ip link show eth0
# Busca "state UP"

Probar el Rendimiento de Red

# Prueba de velocidad de descarga
wget -O /dev/null http://speedtest.tele2.net/100MB.zip

# Descubrimiento de ruta MTU
ping -M do -s 1472 192.168.1.1

Verificar la Vinculación de Servicios

# Verificar qué servicios están escuchando
ss -tuln
netstat -tuln

# Verificar puerto específico
ss -tuln | grep :80

Solución de Problemas Comunes

Problema 1: La Interfaz de Red No Se Levanta

Síntomas: La interfaz muestra estado "DOWN"

Soluciones:

# Verificar estado de la interfaz
ip link show

# Levantar la interfaz manualmente
sudo ip link set eth0 up

# Para Netplan
sudo netplan apply

# Para NetworkManager
sudo nmcli connection up "System eth0"

# Para ifupdown
sudo ifup eth0

Problema 2: Sin Ruta al Gateway

Síntomas: No se puede hacer ping al gateway

Diagnóstico:

ip route show

Soluciones:

# Agregar gateway predeterminado manualmente
sudo ip route add default via 192.168.1.1

# Hacer permanente actualizando archivos de configuración

Problema 3: Fallo en la Resolución DNS

Síntomas: Se puede hacer ping a direcciones IP pero no a nombres de dominio

Diagnóstico:

cat /etc/resolv.conf
nslookup google.com

Soluciones:

# Actualizar servidores DNS en /etc/resolv.conf
sudo nano /etc/resolv.conf

# Agregar nameservers
nameserver 8.8.8.8
nameserver 1.1.1.1

# Para sistemas systemd-resolved
sudo systemctl restart systemd-resolved

Problema 4: La Configuración No Persiste Después del Reinicio

Síntomas: La IP estática funciona hasta el reinicio

Soluciones:

Para Netplan:

# Verificar archivo de configuración
ls -la /etc/netplan/
sudo netplan apply

Para NetworkManager:

# Asegurar que la conexión inicie en el arranque
sudo nmcli connection modify "System eth0" connection.autoconnect yes

Para ifupdown:

# Verificar directiva "auto" en /etc/network/interfaces
auto eth0

Problema 5: Conflicto de Dirección IP

Síntomas: La red se desconecta intermitentemente o muestra advertencias de IP duplicada

Diagnóstico:

# Verificar conflictos de IP
sudo arping -D -I eth0 192.168.1.100

Soluciones:

  • Verificar que ningún otro dispositivo use la misma dirección IP
  • Usar una dirección IP diferente del pool disponible
  • Configurar el servidor DHCP para excluir el rango de IP estática

Problema 6: Errores de Sintaxis YAML en Netplan

Síntomas: "netplan apply" falla con errores de sintaxis

Soluciones:

# Validar sintaxis YAML
sudo netplan --debug generate

# Problemas comunes:
# - Indentación incorrecta (usar espacios, no tabulaciones)
# - Dos puntos faltantes después de claves
# - Sintaxis de array incorrecta

Ejemplo de indentación correcta:

network:
  version: 2
  ethernets:
    ens33:
      addresses:
        - 192.168.1.100/24  # Nota: indentación de 2 espacios para elementos de array

Mejores Prácticas para la Configuración de IP Estática

1. Planificación y Documentación de Direcciones IP

  • Mantener una hoja de cálculo o base de datos de gestión de direcciones IP (IPAM)
  • Reservar rangos de IP para asignaciones estáticas (por ejemplo, .100-.200)
  • Usar DHCP para asignaciones dinámicas fuera del rango estático
  • Documentar todas las asignaciones de IP estáticas con nombre de host, propósito y fecha de asignación

2. Copias de Seguridad de Configuración de Red

Siempre respalda la configuración antes de los cambios:

# Copia de seguridad de Netplan
sudo cp /etc/netplan/*.yaml /root/netplan-backup/

# Copia de seguridad de NetworkManager
sudo cp /etc/NetworkManager/system-connections/* /root/nm-backup/
sudo cp /etc/sysconfig/network-scripts/ifcfg-* /root/ifcfg-backup/

# Copia de seguridad de ifupdown
sudo cp /etc/network/interfaces /etc/network/interfaces.backup

3. Usar Gestión de Configuración

Para gestionar múltiples servidores, utiliza herramientas de gestión de configuración:

  • Playbooks de Ansible para configuración de red
  • Recetas de Puppet o Chef
  • Estados de Salt
  • Control de versiones para archivos de configuración (Git)

4. Mejores Prácticas de DNS

  • Configurar al menos dos servidores DNS para redundancia
  • Usar proveedores DNS confiables (Google: 8.8.8.8, Cloudflare: 1.1.1.1)
  • Considerar servidores DNS internos para entornos corporativos
  • Establecer dominios de búsqueda DNS apropiados

5. Consideraciones de Seguridad

# Deshabilitar interfaces de red no utilizadas
sudo ip link set eth1 down

# Configurar reglas de firewall para IP estática
sudo ufw allow from 192.168.1.0/24 to any port 22

# Restringir SSH a IPs específicas en /etc/ssh/sshd_config
ListenAddress 192.168.1.100

6. Procedimientos de Prueba

Establecer una lista de verificación de pruebas:

  1. Verificar asignación de dirección IP
  2. Probar conectividad de gateway
  3. Confirmar resolución DNS
  4. Verificar conectividad a Internet
  5. Verificar accesibilidad de servicio
  6. Probar después del reinicio del servidor
  7. Monitorear conflictos de IP

7. Seguridad en Configuración Remota

Cuando configures remotamente vía SSH:

# Usar screen o tmux para prevenir desconexión
screen

# Para Netplan, usar "netplan try" para reversión automática
sudo netplan try

# Configurar acceso a consola/IPMI antes de hacer cambios
# Mantener la sesión SSH actual abierta hasta la verificación

8. Monitoreo y Alertas

Configurar monitoreo para el estado de la interfaz de red:

# Crear script de monitoreo
cat << 'EOF' | sudo tee /usr/local/bin/check_network.sh
#!/bin/bash
INTERFACE="eth0"
if ! ip link show $INTERFACE | grep -q "state UP"; then
    echo "Network interface $INTERFACE is down!" | mail -s "Network Alert" [email protected]
fi
EOF

sudo chmod +x /usr/local/bin/check_network.sh

# Agregar a crontab
echo "*/5 * * * * /usr/local/bin/check_network.sh" | sudo crontab -

Optimización de Rendimiento

Configuración de MTU

Optimizar la Unidad Máxima de Transmisión para tu red:

Netplan:

network:
  version: 2
  ethernets:
    ens33:
      mtu: 9000
      addresses: [192.168.1.100/24]

NetworkManager:

sudo nmcli connection modify "System eth0" 802-3-ethernet.mtu 9000

ifupdown:

iface eth0 inet static
    mtu 9000

Longitud de Cola de Interfaz de Red

Aumentar la longitud de la cola de transmisión para servidores de alto tráfico:

sudo ip link set eth0 txqueuelen 10000

Hacer permanente agregando a la configuración de red o rc.local.

Consideraciones de Seguridad

1. Configuración de Firewall

Después de establecer la IP estática, configura las reglas del firewall:

# UFW (Ubuntu)
sudo ufw allow from 192.168.1.0/24 to 192.168.1.100 port 22
sudo ufw enable

# firewalld (RHEL/CentOS)
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="22" protocol="tcp" accept'
sudo firewall-cmd --reload

2. Segmentación de Red

Colocar servidores en segmentos de red apropiados:

  • DMZ para servidores públicos
  • Red interna para bases de datos y servidores de aplicaciones
  • Red de gestión para acceso administrativo

3. Deshabilitar IPv6 si No se Usa

Si IPv6 no es requerido:

Netplan:

network:
  version: 2
  ethernets:
    ens33:
      dhcp6: no
      accept-ra: no

Sysctl:

sudo nano /etc/sysctl.conf
# Agregar:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

sudo sysctl -p

4. Filtrado de Direcciones MAC

Para entornos sensibles, considera el filtrado de direcciones MAC a nivel de switch y documentación:

# Ver dirección MAC
ip link show eth0 | grep link/ether

Conclusión

Configurar direcciones IP estáticas en Linux es una habilidad fundamental de redes que todo administrador de sistemas debe dominar. Ya sea que trabajes con sistemas Ubuntu modernos usando Netplan, distribuciones basadas en Red Hat con NetworkManager o sistemas Debian tradicionales con ifupdown, comprender los matices de cada enfoque asegura una configuración de red confiable en entornos diversos.

Puntos clave de esta guía:

  • Netplan proporciona un enfoque moderno basado en YAML para Ubuntu y derivados
  • NetworkManager ofrece potentes herramientas CLI y TUI para sistemas basados en Red Hat
  • ifupdown permanece relevante para implementaciones tradicionales de servidor Debian
  • Siempre respalda las configuraciones antes de hacer cambios
  • Prueba exhaustivamente después de los cambios de configuración, especialmente antes de reiniciar
  • Implementa prácticas de monitoreo y documentación
  • Considera las implicaciones de seguridad de las asignaciones de IP estática

Al seguir las mejores prácticas descritas en esta guía, mantendrás configuraciones de red estables, seguras y bien documentadas que forman la base de una infraestructura de servidor confiable. Recuerda adaptar estas configuraciones a tu entorno de red específico y siempre probar los cambios en un entorno no productivo cuando sea posible.

Para el aprendizaje continuo, explora temas avanzados como bonding de red, VLANs y redes definidas por software para mejorar aún más tu experiencia en redes Linux.