Comandos Básicos de Red

Herramientas esenciales para diagnóstico y administración de redes en Linux

Módulo 9 ⏱️ 35-40 min 🌐 Networking 🔧 Sysadmin 📊 Avanzado

Introducción a Comandos de Red

Los comandos de red en Linux son herramientas fundamentales para cualquier administrador de sistemas. Permiten diagnosticar problemas de conectividad, monitorear el tráfico de red, configurar interfaces y automatizar tareas de red mediante scripts de Bash.

En esta lección aprenderás los comandos más importantes para la administración de redes, desde herramientas básicas de diagnóstico hasta comandos avanzados para el análisis del tráfico de red.

¿Por qué son importantes?

Los comandos de red son esenciales para troubleshooting, monitoreo de rendimiento, seguridad y automatización en entornos de producción. Un sysadmin debe dominar estas herramientas para mantener sistemas críticos funcionando correctamente.

Comandos de Diagnóstico Básico

ping - Prueba de Conectividad

El comando más básico y útil para probar la conectividad de red.

Uso básico de ping Copiar
# Ping básico (se ejecuta indefinidamente)
ping google.com

# Ping con número limitado de paquetes
ping -c 4 google.com

# Ping con intervalo personalizado (1 ping cada 2 segundos)
ping -i 2 google.com

# Ping silencioso (solo estadísticas finales)
ping -c 4 -q google.com

# Ping con timestamp
ping google.com | while read line; do echo "$(date): $line"; done
$ ping -c 4 google.com
PING google.com (172.217.168.46) 56(84) bytes of data.
64 bytes from lga25s57-in-f14.1e100.net (172.217.168.46): icmp_seq=1 ttl=117 time=12.3 ms
64 bytes from lga25s57-in-f14.1e100.net (172.217.168.46): icmp_seq=2 ttl=117 time=11.8 ms
64 bytes from lga25s57-in-f14.1e100.net (172.217.168.46): icmp_seq=3 ttl=117 time=12.1 ms
64 bytes from lga25s57-in-f14.1e100.net (172.217.168.46): icmp_seq=4 ttl=117 time=12.0 ms

--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 11.828/12.050/12.307/0.175 ms

traceroute - Rastreo de Ruta

Muestra la ruta que siguen los paquetes hasta su destino.

Traceroute avanzado Copiar
# Traceroute básico
traceroute google.com

# Traceroute con resolución de nombres deshabilitada (más rápido)
traceroute -n google.com

# Traceroute usando TCP en lugar de ICMP
traceroute -T -p 80 google.com

# Traceroute con máximo de saltos personalizado
traceroute -m 15 google.com

nslookup y dig - Consultas DNS

Herramientas para consultar y diagnosticar problemas de DNS.

Consultas DNS avanzadas Copiar
# nslookup básico
nslookup google.com

# nslookup inverso (IP a nombre)
nslookup 8.8.8.8

# dig - más potente y flexible
dig google.com

# dig para registros específicos
dig google.com MX    # Registros de mail
dig google.com AAAA  # Registros IPv6
dig google.com NS    # Nameservers

# dig con servidor DNS específico
dig @8.8.8.8 google.com

# dig traza completa
dig +trace google.com

Monitoreo de Conexiones

netstat - Estado de la Red

Muestra conexiones de red, tablas de enrutamiento, estadísticas de interfaz y más.

Netstat completo Copiar
# Todas las conexiones activas
netstat -a

# Solo conexiones TCP
netstat -t

# Solo conexiones UDP
netstat -u

# Mostrar puertos en escucha
netstat -l

# Mostrar procesos (requiere privilegios)
netstat -p

# Combinación más útil: TCP, listening, con procesos
netstat -tlp

# Estadísticas de red
netstat -s

# Tabla de enrutamiento
netstat -r
$ netstat -tlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1234/sshd: /usr/sbi 
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      5678/cupsd          
tcp6       0      0 :::80                   :::*                    LISTEN      9012/apache2        
tcp6       0      0 :::22                   :::*                    LISTEN      1234/sshd: /usr/sbi

ss - Socket Statistics (sucesor de netstat)

Herramienta más moderna y eficiente que netstat.

ss - Socket Statistics Copiar
# Equivalente a netstat -tlp
ss -tlp

# Solo conexiones establecidas
ss -t state established

# Filtrar por puerto específico
ss -tlp sport = :80

# Mostrar procesos usando un puerto específico
ss -tlp sport = :22

# Estadísticas resumidas
ss -s

Configuración de Interfaces

ifconfig - Configuración de Interfaces

Comando tradicional para configurar interfaces de red (en desuso en favor de ip).

ifconfig básico Copiar
# Ver todas las interfaces
ifconfig

# Ver una interfaz específica
ifconfig eth0

# Configurar IP estática
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0

# Activar/desactivar interfaz
sudo ifconfig eth0 up
sudo ifconfig eth0 down

ip - Herramienta Moderna de Red

Sucesor moderno de ifconfig, route, y arp. Más potente y flexible.

ip command avanzado Copiar
# Ver todas las interfaces
ip addr show
# o simplemente
ip a

# Ver una interfaz específica
ip addr show eth0

# Agregar IP a una interfaz
sudo ip addr add 192.168.1.100/24 dev eth0

# Eliminar IP de una interfaz
sudo ip addr del 192.168.1.100/24 dev eth0

# Activar/desactivar interfaz
sudo ip link set eth0 up
sudo ip link set eth0 down

# Ver tabla de enrutamiento
ip route show
# o
ip r

# Agregar ruta
sudo ip route add 192.168.2.0/24 via 192.168.1.1

# Ver estadísticas de tráfico
ip -s link show eth0

Monitoreo de Tráfico

iftop - Monitor de Ancho de Banda

Herramienta interactiva para monitorear el uso de ancho de banda por conexión.

iftop avanzado Copiar
# Monitor básico (requiere privilegios root)
sudo iftop

# Monitor en interfaz específica
sudo iftop -i eth0

# Resolver nombres de host
sudo iftop -n

# Mostrar puertos
sudo iftop -P

nethogs - Uso de Red por Proceso

Muestra el uso de ancho de banda por proceso, ideal para identificar aplicaciones que consumen mucho ancho de banda.

nethogs por proceso Copiar
# Monitor básico
sudo nethogs

# Monitor en interfaz específica
sudo nethogs eth0

# Actualizar cada 5 segundos
sudo nethogs -d 5

Scripts de Red Avanzados

Script de Diagnóstico de Red

Script completo para diagnosticar problemas de conectividad:

network_diagnostic.sh Copiar
#!/bin/bash

# Script de Diagnóstico de Red Completo
# Uso: ./network_diagnostic.sh [host]

HOST=${1:-"google.com"}
LOG_FILE="/tmp/network_diagnostic_$(date +%Y%m%d_%H%M%S).log"

echo "=== DIAGNÓSTICO DE RED ===" | tee $LOG_FILE
echo "Fecha: $(date)" | tee -a $LOG_FILE
echo "Host objetivo: $HOST" | tee -a $LOG_FILE
echo "=========================" | tee -a $LOG_FILE

# Función para logging
log_section() {
    echo -e "\n--- $1 ---" | tee -a $LOG_FILE
}

# 1. Información de interfaces
log_section "INTERFACES DE RED"
ip addr show | tee -a $LOG_FILE

# 2. Tabla de enrutamiento
log_section "TABLA DE ENRUTAMIENTO"
ip route show | tee -a $LOG_FILE

# 3. Servidores DNS
log_section "CONFIGURACIÓN DNS"
cat /etc/resolv.conf | tee -a $LOG_FILE

# 4. Test de conectividad
log_section "TEST DE CONECTIVIDAD"
echo "Ping a $HOST:" | tee -a $LOG_FILE
if ping -c 4 $HOST 2>&1 | tee -a $LOG_FILE; then
    echo "✓ Conectividad OK" | tee -a $LOG_FILE
else
    echo "✗ Falló la conectividad" | tee -a $LOG_FILE
fi

# 5. Resolución DNS
log_section "RESOLUCIÓN DNS"
echo "Resolviendo $HOST:" | tee -a $LOG_FILE
if nslookup $HOST 2>&1 | tee -a $LOG_FILE; then
    echo "✓ DNS OK" | tee -a $LOG_FILE
else
    echo "✗ Falló resolución DNS" | tee -a $LOG_FILE
fi

# 6. Traceroute
log_section "TRACEROUTE"
echo "Ruta a $HOST:" | tee -a $LOG_FILE
traceroute -n $HOST 2>&1 | tee -a $LOG_FILE

# 7. Puertos abiertos
log_section "PUERTOS EN ESCUCHA"
netstat -tlnp 2>/dev/null | grep LISTEN | tee -a $LOG_FILE

# 8. Estadísticas de red
log_section "ESTADÍSTICAS DE RED"
cat /proc/net/dev | tee -a $LOG_FILE

echo -e "\n=== FIN DEL DIAGNÓSTICO ===" | tee -a $LOG_FILE
echo "Log guardado en: $LOG_FILE" | tee -a $LOG_FILE
Monitor de Red en Tiempo Real

Script para monitorear el estado de múltiples hosts:

network_monitor.sh Copiar
#!/bin/bash

# Monitor de Red Multi-Host
# Uso: ./network_monitor.sh

# Lista de hosts a monitorear
HOSTS=(
    "google.com"
    "github.com"
    "stackoverflow.com"
    "8.8.8.8"
)

INTERVAL=30  # Segundos entre chequeos

# Colores
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# Función para obtener timestamp
timestamp() {
    date '+%Y-%m-%d %H:%M:%S'
}

# Función para test de conectividad
test_host() {
    local host=$1
    if ping -c 1 -W 3 $host &>/dev/null; then
        echo -e "${GREEN}✓${NC} $host - OK"
        return 0
    else
        echo -e "${RED}✗${NC} $host - FALLO"
        return 1
    fi
}

# Función principal de monitoreo
monitor_network() {
    while true; do
        clear
        echo "=== MONITOR DE RED ==="
        echo "Timestamp: $(timestamp)"
        echo "Intervalo: ${INTERVAL}s"
        echo "======================"
        
        local failed_hosts=0
        
        for host in "${HOSTS[@]}"; do
            if ! test_host "$host"; then
                ((failed_hosts++))
            fi
        done
        
        echo "======================"
        if [ $failed_hosts -eq 0 ]; then
            echo -e "Estado general: ${GREEN}TODOS OK${NC}"
        else
            echo -e "Estado general: ${RED}$failed_hosts FALLOS${NC}"
        fi
        
        echo "Próxima verificación en ${INTERVAL}s..."
        sleep $INTERVAL
    done
}

# Verificar si se ejecuta como script principal
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
    echo "Iniciando monitor de red..."
    echo "Presiona Ctrl+C para salir"
    sleep 2
    monitor_network
fi

Ejercicios Prácticos

Ejercicio 1: Diagnóstico Completo

Ejecuta un diagnóstico completo de tu conexión de red:

  1. Verifica la configuración de todas tus interfaces de red
  2. Identifica tu gateway predeterminado
  3. Realiza un ping a tu gateway
  4. Realiza un traceroute a un sitio web
  5. Verifica qué puertos tienes abiertos
Comandos del Ejercicio 1 Copiar
# 1. Configuración de interfaces
ip addr show

# 2. Gateway predeterminado
ip route | grep default

# 3. Ping al gateway (sustituye IP_DEL_GATEWAY)
ping -c 4 IP_DEL_GATEWAY

# 4. Traceroute a un sitio
traceroute -n google.com

# 5. Puertos abiertos
ss -tlnp
Ejercicio 2: Monitoreo de Uso

Implementa un script que monitore el uso de ancho de banda de tu interfaz principal durante 5 minutos, guardando estadísticas cada 30 segundos.