Redes en Linux: Configuración y Troubleshooting
La gestión de redes Linux es una habilidad fundamental para cualquier administrador de sistemas. No se trata solo de ejecutar ifconfig y esperar lo mejor; la configuración y el troubleshooting de redes requieren un conocimiento profundo de la pila de red, herramientas de diagnóstico y protocolos. Este artículo te guiará a través de las mejores prácticas para configurar interfaces, diagnosticar problemas comunes y utilizar herramientas esenciales como netstat, tcpdump y nmap.
Dominar estas técnicas no solo te permitirá mantener la conectividad, sino también optimizar el rendimiento y asegurar la infraestructura. Vamos a sumergirnos en el núcleo de la administración de redes en Linux.
Configuración de Redes en Linux: El ABC
La configuración de redes en Linux ha evolucionado. Atrás quedaron los días de depender únicamente de /etc/network/interfaces. Hoy, coexisten múltiples herramientas como netplan (Ubuntu), nmcli (NetworkManager) y los scripts de red tradicionales. La elección depende de la distribución y el entorno (servidor vs. escritorio).
Interfaces de Red: Identificación y Gestión
El primer paso es identificar las interfaces disponibles. El comando ip link show es la herramienta moderna para esto.
# Listar todas las interfaces de red
ip link show
# Ver direcciones IP asignadas
ip addr show
# Activar/Desactivar una interfaz (ej. eth0)
sudo ip link set eth0 up
sudo ip link set eth0 down
Nota: Aunque ifconfig sigue disponible, está obsoleto. ip del paquete iproute2 es la herramienta estándar actual.
Configuración Estática vs. DHCP
Para servidores, la IP estática es la norma. Aquí un ejemplo de configuración estática con netplan (Ubuntu 18.04+):
# /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
Aplica los cambios con:
sudo netplan apply
Para distribuciones basadas en Red Hat (RHEL, CentOS, Fedora), se usan archivos en /etc/sysconfig/network-scripts/ifcfg-*.
# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
ONBOOT=yes
Luego reinicias el servicio de red:
sudo systemctl restart network
[TIP] Siempre verifica la conectividad después de aplicar cambios usando ping a la puerta de enlace y a un DNS externo.
Configuración de DNS
El archivo /etc/resolv.conf es el corazón de la resolución de nombres. Aunque a menudo es gestionado automáticamente, puedes modificarlo manualmente (con cuidado).
# /etc/resolv.conf
nameserver 8.8.8.8
nameserver 1.1.1.1
search midominio.local
Para un control más fino, usa systemd-resolved o NetworkManager. La herramienta resolvectl (parte de systemd) permite gestionar DNS por interfaz.
# Ver estado de DNS
resolvectl status
# Configurar DNS para una interfaz específica
sudo resolvectl dns ens33 8.8.8.8 1.1.1.1
Troubleshooting de Redes: El Arte del Diagnóstico
El troubleshooting de redes es un proceso iterativo. Comienza desde lo más básico (capa física) y asciende hasta la aplicación. Aquí tienes una metodología probada.
1. Verificar la Capa Física y Enlace
Antes de culpar a la configuración, asegúrate de que el cable esté conectado y el switch esté encendido.
# Ver estado del enlace
ip link show eth0
# Busca "state UP" o "LOWER_UP"
# Ver estadísticas de errores
ip -s link show eth0
# Busca "errors", "dropped", "overruns"
Si ves muchos errores, podría ser un problema de cable, tarjeta de red o duplex mismatch.
2. Diagnóstico de Capa 3 (IP)
Una vez que la capa 2 funciona, verifica la configuración IP.
# Ver tabla de enrutamiento
ip route show
# Probar conectividad básica
ping -c 4 192.168.1.1 # Puerta de enlace
ping -c 4 8.8.8.8 # Internet
# Ver resolución DNS
nslookup google.com
dig google.com
Problemas comunes:
- Sin ruta por defecto:
ip route showdebe mostrar una entradadefault via .... - IP duplicada: Usa
arping -D <IP>para detectar conflictos. - MTU incorrecto: Prueba con
ping -M do -s 1472 google.com(MTU 1500). Si falla, reduce el MTU.
3. Herramientas Clave: netstat, tcpdump y nmap
Aquí es donde la cosa se pone seria. Estas tres herramientas son el arsenal de cualquier SysAdmin.
netstat: El Veterano de las Conexiones
netstat es ideal para obtener una instantánea de las conexiones activas, puertos en escucha y estadísticas.
# Ver todas las conexiones TCP activas
netstat -tunapl
# Ver puertos en escucha (servicios)
netstat -tulpn | grep LISTEN
# Ver estadísticas de red por protocolo
netstat -s
# Ver tabla de enrutamiento (similar a ip route)
netstat -rn
[WARNING] netstat está obsoleto en muchas distribuciones. Usa ss (socket statistics) como reemplazo moderno. Es más rápido y proporciona más información.
# Equivalente a netstat -tunapl
ss -tunapl
# Ver puertos en escucha
ss -tulpn
tcpdump: El Analizador de Paquetes Definitivo
tcpdump te permite capturar y analizar tráfico de red en tiempo real. Es indispensable para depurar problemas complejos.
Sintaxis básica:
# Capturar todo el tráfico en eth0
sudo tcpdump -i eth0
# Capturar solo tráfico HTTP (puerto 80)
sudo tcpdump -i eth0 port 80
# Capturar tráfico entre dos hosts
sudo tcpdump -i eth0 host 192.168.1.50 and 10.0.0.1
# Guardar la captura en un archivo para analizar con Wireshark
sudo tcpdump -i eth0 -w captura.pcap
# Leer un archivo de captura
tcpdump -r captura.pcap
Ejemplo práctico: Diagnosticar por qué un servidor web no responde.
# Capturar tráfico en el puerto 80
sudo tcpdump -i eth0 port 80 -nn
# Ver si llegan los SYN, si se envían SYN-ACK, etc.
# Si ves SYN pero no SYN-ACK, el servidor no está escuchando.
# Si ves SYN-ACK pero no ACK, el cliente no completa el handshake.
[INFO] Usa -nn para no resolver nombres de host ni puertos (más rápido y limpio). Agrega -v para más verbosidad.
nmap: El Escáner de Red
nmap es la navaja suiza para el descubrimiento de redes y auditoría de seguridad. Úsalo para mapear tu red, encontrar hosts activos y servicios.
Comandos esenciales:
# Escanear un host específico
nmap 192.168.1.100
# Escanear toda una subred
nmap 192.168.1.0/24
# Escaneo de puertos específicos (ej. SSH, HTTP, HTTPS)
nmap -p 22,80,443 192.168.1.100
# Detección de sistema operativo y servicios
nmap -O -sV 192.168.1.100
# Escaneo sigiloso (SYN scan)
sudo nmap -sS 192.168.1.100
[WARNING] Usa nmap solo en redes que te pertenecen o con permiso explícito. Escanear redes ajenas es ilegal en muchos lugares.
Escenarios Comunes de Troubleshooting
Problema: No hay conectividad a Internet
Diagnóstico:
ping 8.8.8.8→ ¿Responde? Si no, ve al paso 2.ping 192.168.1.1(puerta de enlace) → ¿Responde? Si no, hay problema en la red local.ip route show→ ¿Hay ruta por defecto? Si no, configúrala.ip addr show→ ¿La IP es correcta? ¿DHCP funciona?tcpdump -i eth0 icmp→ ¿Se envían paquetes ICMP? ¿Hay respuesta?
Solución típica:
- Si la puerta de enlace no responde, verifica el cable y la configuración del switch.
- Si la puerta de enlace responde pero no Internet, el problema está en el router o en el ISP.
Problema: Un servicio no está disponible (ej. Apache en puerto 80)
Diagnóstico:
ss -tulpn | grep :80→ ¿Apache está escuchando?curl localhost:80→ ¿Responde localmente?curl 192.168.1.100:80desde otro host → ¿Responde?sudo tcpdump -i eth0 port 80→ ¿Llegan las peticiones?sudo iptables -L -n→ ¿Hay reglas de firewall bloqueando el puerto?
Solución típica:
- Si Apache no escucha, reinicia el servicio:
systemctl restart apache2. - Si solo responde localmente, revisa
Listenen la configuración de Apache (debe ser0.0.0.0:80). - Si el firewall bloquea, agrega una regla:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT.
Problema: Resolución DNS lenta o fallida
Diagnóstico:
dig google.com→ ¿Cuánto tarda? ¿Hay errores?cat /etc/resolv.conf→ ¿Los servidores DNS son correctos?nslookup midominio.local→ ¿Funciona la resolución local?tcpdump -i eth0 port 53→ ¿Se envían consultas? ¿Hay respuesta?
Solución típica:
- Cambia los servidores DNS a
8.8.8.8y1.1.1.1. - Si usas
systemd-resolved, verificaresolvectl statusy configura correctamente. - Si el problema es con nombres locales, revisa
/etc/hostso el servidor DNS interno.
Buenas Prácticas y Automatización
Persistencia de Configuración
Siempre que modifiques la red, asegúrate de que los cambios persistan tras reinicios. Usa las herramientas de tu distribución (netplan, nmcli, archivos ifcfg).
Monitoreo Proactivo
Implementa herramientas como iftop (tráfico en tiempo real), nethogs (ancho de banda por proceso) y mtr (combinación de traceroute y ping).
# Monitorear tráfico en tiempo real
sudo iftop -i eth0
# Ver ancho de banda por proceso
sudo nethogs eth0
# Diagnóstico de ruta con rendimiento
mtr google.com
Logs y Alertas
Revisa los logs del sistema para eventos de red:
# Ver logs de red
journalctl -u networking.service
journalctl -u NetworkManager.service
# Ver eventos de kernel relacionados con red
dmesg | grep -i eth
[TIP] Crea scripts que verifiquen la conectividad cada minuto y envíen alertas si falla. Por ejemplo, un script simple con ping y mail.
Conclusión
La configuración y el troubleshooting de redes Linux son habilidades que se perfeccionan con la práctica. Desde la configuración básica con ip y netplan hasta el análisis profundo con tcpdump y nmap, cada herramienta tiene su lugar en el cinturón del SysAdmin.
Recuerda siempre seguir un enfoque metódico: capa física, enlace, red, transporte y aplicación. Y no subestimes el poder de ss y tcpdump para desentrañar los misterios más complejos.
La próxima vez que enfrentes un problema de red, respira hondo, abre tu terminal y aplica lo aprendido. La red no es magia, es solo paquetes viajando. Y tú tienes las herramientas para controlarlos.
