Interfaces de red en Linux: IPs, nombres y resolución

Cada adaptador de red que el kernel reconoce —físico, virtual o interno— aparece en el sistema como una interfaz de red: una representación lógica que expone ese hardware (o esa funcionalidad) al resto del sistema operativo. No estás trabajando con el chip directamente; trabajas con la interfaz que el kernel pone encima. Esa separación es exactamente por qué puedes tener una interfaz lo que funciona sin ningún hardware físico, o varias interfaces sobre un único adaptador físico mediante VLANs.

El comando de referencia para ver las interfaces es ip link (y ip addr para ver también las direcciones asignadas). ifconfig quedó obsoleto hace años: no entiende namespaces de red, no habla bien con el kernel moderno, y en Debian Bookworm ni siquiera está instalado por defecto.

Las interfaces que vas a encontrar siempre

lo es la interfaz de loopback. Existe en cualquier sistema Linux sin excepción, independientemente del hardware. Su dirección es 127.0.0.1/8 en IPv4 (y ::1/128 en IPv6). Cualquier proceso que se conecte a 127.0.0.1 se está conectando consigo mismo, nunca sale a la red física. Es el mecanismo por el que un servidor web local y un cliente en la misma máquina se hablan sin tocar ningún cable.

Las interfaces ethernet siguen el esquema de nombres predecibles (predictable network interface names) que impuso systemd hace años para resolver el problema histórico de que eth0 podía referirse a adaptadores distintos según el orden de detección. Ahora el nombre codifica la topología del bus:

  • enp0s3 → ethernet, bus PCI, puerto 0, slot 3
  • ens3 → ethernet, bus PCI, slot 3 (forma corta usada en muchas VMs)
  • eth0 → nombre clásico; todavía aparece en algunas imágenes de contenedores o VMs antiguas donde biosdevname y net.ifnames están desactivados

Para WiFi el patrón es el mismo pero con prefijo wl: wlp2s0 es lo habitual en portátiles físicos; wlan0 aparece en sistemas embebidos o cuando los nombres predecibles están desactivados.

Dirección IP, gateway y DNS: el trío mínimo

Una dirección IP en notación CIDR como 192.168.1.10/24 codifica dos cosas a la vez: la dirección del host (192.168.1.10) y la máscara de red (/24, equivalente a 255.255.255.0). La máscara define qué rango de IPs son “locales” (alcanzables directamente en el mismo segmento) y cuáles requieren pasar por un router. Con /24, cualquier IP de 192.168.1.0 a 192.168.1.255 es local; el resto no.

El gateway por defecto es la IP del router al que se envía todo el tráfico destinado a IPs fuera del segmento local. Si no está configurado o es incorrecto, la máquina puede hablar con otros hosts de la misma red pero no llega a internet ni a otras subredes.

El resolver DNS traduce nombres de dominio a IPs. En Debian, /etc/resolv.conf contiene la lista de servidores DNS que el sistema consulta. Si el archivo no tiene entradas válidas, los nombres no resuelven y prácticamente todo lo que depende de red deja de funcionar, aunque la conectividad IP esté perfecta.

Antes de consultar DNS, el sistema mira /etc/hosts. Ese archivo es un override local: si pones 10.0.0.5 miservidor.interno, cualquier resolución de miservidor.interno devuelve 10.0.0.5 sin consultar ningún servidor DNS. El orden de consulta está definido en /etc/nsswitch.conf, en la línea hosts:, que en Debian pone files dns por defecto: primero files (es decir, /etc/hosts), luego dns.

[Ubuntu] En Ubuntu moderno (desde 18.04), systemd-resolved actúa como resolver DNS local. Escucha en 127.0.0.53 (el stub resolver) y /etc/resolv.conf es un enlace simbólico que apunta a su configuración generada. En Debian Bookworm, systemd-resolved existe como paquete opcional pero no está activo por defecto; el sistema usa directamente los servidores en /etc/resolv.conf.

Gestión de red: NetworkManager frente a systemd-networkd

En Debian hay dos gestores principales:

NetworkManager está pensado para entornos de escritorio donde las interfaces cambian (conectas y desconectas WiFi, enchufas un cable, aparece una VPN). Gestiona eventos de forma reactiva. Se controla con nmcli desde la línea de comandos o con nmtui para una interfaz de texto interactiva. En Debian se instala automáticamente con cualquier entorno de escritorio.

systemd-networkd es el gestor para servidores: configuración declarativa en /etc/systemd/network/, arranque limpio, sin GUI, sin lógica de reconexión WiFi. Es la opción correcta cuando quieres que la red esté exactamente como la definiste en los archivos y nada más.

En un sistema Debian típico solo uno de los dos debe gestionar cada interfaz. Si los dos intentan gestionar la misma interfaz a la vez, el resultado es impredecible.

[Ubuntu] Ubuntu añade netplan como capa de abstracción por encima: escribes un YAML en /etc/netplan/ y netplan genera la configuración para NetworkManager o para systemd-networkd según el renderer que especifiques. En Debian no existe netplan salvo que lo instales explícitamente, y no hay razón para hacerlo.

Ejemplo: inspeccionar y entender el estado de red completo

# Ver todas las interfaces con sus direcciones IPv4 e IPv6
ip addr show

# Ver solo la tabla de rutas (incluye el gateway por defecto)
ip route show
# La línea "default via X.X.X.X dev enp0s3" es el gateway

# Ver el resolver DNS configurado
cat /etc/resolv.conf

# Comprobar qué tiene /etc/hosts además del loopback estándar
cat /etc/hosts

# Verificar qué gestor de red está activo
systemctl is-active NetworkManager
systemctl is-active systemd-networkd

# Si NetworkManager está activo: ver estado de las conexiones
nmcli connection show
nmcli device status

# Ver la ruta que seguiría un paquete a 8.8.8.8
# (confirma que el gateway está bien configurado)
ip route get 8.8.8.8

# Resolver un nombre con el stack completo del sistema (respeta /etc/hosts)
getent hosts debian.org

# Resolver solo vía DNS, saltándose /etc/hosts
# (útil para depurar conflictos entre hosts y DNS)
host debian.org

Qué está pasando en cada paso

ip addr show devuelve el estado de cada interfaz con su MTU, flags (UP, LOWER_UP, NO-CARRIER) y todas las direcciones asignadas. El flag UP significa que la interfaz está activa a nivel software; LOWER_UP significa que hay señal física (cable conectado o radio activa). Una interfaz puede estar UP sin LOWER_UP si el cable está desconectado, y en ese caso no va a transmitir nada.

ip route show te da la tabla de enrutamiento completa. La línea que empieza por default via es el gateway: todo el tráfico que no casa con ninguna ruta más específica sale por ahí. Si esa línea no existe, la máquina no puede alcanzar ninguna red que no esté directamente conectada.

cat /etc/resolv.conf muestra qué servidores DNS usa el sistema. En Debian puro verás líneas nameserver X.X.X.X. Si ves nameserver 127.0.0.53, es que systemd-resolved está activo como stub resolver.

systemctl is-active sobre ambos gestores te dice cuál está corriendo. Si los dos responden active, revisa cuál tiene asignada cada interfaz: con nmcli device status ves qué interfaces gestiona NetworkManager; las interfaces que aparezcan como unmanaged las gestiona otro proceso (o nadie).

ip route get 8.8.8.8 es diagnóstico puro: el kernel te dice exactamente por qué interfaz y vía qué gateway saldría ese paquete. No envía nada; solo consulta la tabla de rutas. Es más rápido y más preciso que interpretar la tabla completa a mano cuando hay rutas específicas que podrían solaparse con la ruta por defecto.

getent hosts debian.org respeta /etc/nsswitch.conf completo, igual que haría cualquier aplicación del sistema. Si hay una entrada en /etc/hosts que sobreescribe ese nombre, getent la devuelve. host debian.org en cambio va directo al DNS ignorando /etc/hosts, lo que permite comparar ambas respuestas y detectar si hay un override local que está causando problemas.

78

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio