Ir al contenido

4.8 Enrutamiento Estático

Cuando un paquete necesita salir del servidor, el kernel consulta su tabla de enrutamiento para decidir por qué interfaz enviarlo. Entender y manipular esa tabla es una habilidad LFCS fundamental, especialmente en servidores con múltiples interfaces o subredes privadas.


ventana terminal
# Ver la tabla de enrutamiento (forma moderna)
ip route show
# o abreviado
ip r
# Salida típica de un servidor con una sola interfaz:
# default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.50 metric 100
# 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.50

Cómo leer la salida:

CampoSignificado
defaultRuta por defecto (gateway de último recurso)
via 192.168.1.1Siguiente salto (el router)
dev eth0Interfaz de salida
proto dhcpCómo se aprendió la ruta (dhcp/static/kernel)
metric 100Coste (menor = preferida si hay varias rutas al mismo destino)
ventana terminal
# Ver qué interfaz y ruta se usaría para alcanzar una IP concreta
ip route get 8.8.8.8
# 8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.50 uid 1000
ip route get 192.168.10.5
# indica si hay ruta directa o necesita gateway

Los cambios con ip route son inmediatos pero no sobreviven al reinicio.

ventana terminal
# Añadir una ruta a una red concreta a través de un gateway
sudo ip route add 10.20.0.0/16 via 192.168.1.254
# Añadir una ruta a través de una interfaz específica (red directamente conectada)
sudo ip route add 172.16.5.0/24 dev eth1
# Cambiar el gateway por defecto
sudo ip route add default via 192.168.1.1
# Eliminar una ruta
sudo ip route del 10.20.0.0/16 via 192.168.1.254
# Eliminar el gateway por defecto
sudo ip route del default
# Reemplazar una ruta existente (add + del en una sola operación)
sudo ip route replace default via 192.168.1.254

3. Rutas permanentes (Netplan — Ubuntu/Debian moderno)

Sección titulada “3. Rutas permanentes (Netplan — Ubuntu/Debian moderno)"

En sistemas que usan Netplan (Ubuntu 18.04+ y Debian 12+), la configuración de red persistente vive en /etc/netplan/*.yaml:

ventana terminal
ls /etc/netplan/
# 01-netcfg.yaml (o similar)

Editar para añadir una ruta estática:

/etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
eth0:
dhcp4: false
addresses:
- 192.168.1.50/24
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
routes:
# Gateway por defecto
- to: default
via: 192.168.1.1
# Ruta estática adicional a una red interna
- to: 10.20.0.0/16
via: 192.168.1.254
metric: 200

Aplicar:

ventana terminal
# Validar sintaxis YAML antes de aplicar
sudo netplan generate
# Aplicar la configuración
sudo netplan apply
# Verificar
ip route show
network:
version: 2
ethernets:
eth0:
routes:
- to: 10.20.0.0/16
via: 192.168.1.254
ventana terminal
sudo netplan apply

Cuando hay un problema de red, el protocolo LFCS es medir capa a capa antes de tocar nada:

ventana terminal
# 1. ¿Tengo IP asignada?
ip addr show
# 2. ¿Tengo ruta de salida?
ip route show
# Busca "default via ..."
# 3. ¿El gateway responde?
ping -c 3 <ip_del_gateway>
# 4. ¿Llego a internet?
ping -c 3 8.8.8.8
# 5. ¿Funciona el DNS?
ping -c 3 google.com
# Si el ping a 8.8.8.8 funciona pero google.com falla → problema de DNS
# 6. ¿Qué ruta toma el paquete? (tracing)
traceroute 8.8.8.8
# o la versión moderna
mtr 8.8.8.8

Para que un servidor reenvíe paquetes entre interfaces (actúa como router o gateway NAT), el kernel necesita IP forwarding activado:

ventana terminal
# Ver estado actual
sysctl net.ipv4.ip_forward
# 0 = desactivado, 1 = activado
# Activar temporalmente
sudo sysctl -w net.ipv4.ip_forward=1
# Activar permanentemente
echo "net.ipv4.ip_forward = 1" | sudo tee /etc/sysctl.d/99-ip-forward.conf
sudo sysctl --system

Con IP forwarding activado y UFW/iptables configurado para hacer NAT, el servidor puede actuar como gateway para una red interna. Esta configuración es la base de redes de contenedores, VPNs y laboratorios de virtualización.