Saltar a contenido

Las Herramientas

Referencia rápida de cada comando. No para memorizar — para saber cuál usar en cada situación.


Cuándo usarlo: primera pregunta siempre. ¿Está la interfaz UP?

ip link show
ip link show eth1        # solo una interfaz

Qué mirar:

2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
                         ^^
                         esto tiene que estar

Si no aparece UP → interfaz caída. Fix: ip link set eth1 up


ip addr show — IPs asignadas

Cuándo usarlo: verificar que la IP y la máscara son correctas.

ip addr show
ip addr show eth1

Qué mirar:

inet 192.168.1.10/24 brd 192.168.1.255 scope global eth1
     ^^^^^^^^^^^^^
     IP y máscara

Errores comunes: máscara incorrecta (/25 en vez de /24), IP en el rango equivocado.


ip route show — tabla de ruteo

Cuándo usarlo: verificar que hay ruta hacia el destino.

ip route show

Qué mirar:

default via 192.168.1.1 dev eth1    ← gateway por defecto
192.168.1.0/24 dev eth1             ← red directamente conectada
10.0.0.0/30    dev eth2             ← otra red directa
192.168.2.0/24 via 10.0.0.2        ← ruta estática agregada

Si no hay default ni ruta hacia el destino → el paquete no sale.


ping — conectividad básica

Cuándo usarlo: verificar si hay comunicación entre dos puntos.

ping -c 4 192.168.1.1        # 4 paquetes y para
ping -c 2 8.8.8.8            # probar internet

Interpretar resultados:

Resultado Qué significa
64 bytes from ... Hay conectividad
Network is unreachable No hay ruta en la tabla de ruteo
Destination Net Unreachable Un router en el camino no tiene ruta
Request timeout El paquete llega pero no vuelve (o no llega)
Name resolution failure Problema de DNS (si usaste nombre)

traceroute — dónde muere el paquete

Cuándo usarlo: el ping falla y querés saber en qué router se corta el camino.

traceroute 192.168.2.10

Interpretar resultados:

1  192.168.1.1   1.2ms    ← R1: responde bien
2  10.0.0.2      1.8ms    ← R2: responde bien
3  * * *                  ← R3: no responde → problema acá
4  192.168.2.10  ...

* * * significa que el router recibe el paquete pero no responde (o no tiene ruta de vuelta). Ese es tu sospechoso.


tcpdump — ver paquetes en tiempo real

Cuándo usarlo: cuando todo lo demás es confuso. ¿El paquete realmente llega?

tcpdump -i eth1                      # todo en eth1
tcpdump -i eth1 icmp                 # solo pings
tcpdump -i eth1 host 192.168.1.10   # solo tráfico de esa IP
tcpdump -i eth1 port 80              # solo tráfico HTTP

Lo que dice tcpdump es la verdad. Si ves el paquete llegar, llegó. Si no lo ves, no llegó. Útil especialmente para confirmar el problema de ruta de vuelta: si ves ICMP echo request pero no ves ICMP echo reply, el destino recibió el ping pero no sabe responder.


ss — puertos abiertos y conexiones activas

Cuándo usarlo: verificar si un servicio está escuchando.

ss -tlnp          # TCP, listening, numérico, con proceso
ss -ulnp          # UDP
ss -tlnp | grep 80

Qué mirar:

State   Recv-Q  Send-Q  Local Address:Port  ...  Process
LISTEN  0       128     0.0.0.0:80               users:(("nginx",...))
                        ^^^^^^^
                        0.0.0.0 = escucha en todas las interfaces

Si el puerto no aparece → el servicio no está corriendo.
Si aparece en 127.0.0.1:puerto → solo escucha localmente, no acepta conexiones externas.


nmap — escaneo de puertos desde afuera

Cuándo usarlo: verificar qué puertos son accesibles desde el cliente (no desde el servidor).

nmap 192.168.1.20           # escaneo básico
nmap -p 80,443 192.168.1.20 # puertos específicos

Diferencia con ss: ss te dice qué escucha el servidor. nmap te dice qué ve el cliente — si hay firewall en el medio, nmap lo detecta.

Estado nmap Qué significa
open Puerto accesible, servicio respondiendo
filtered Firewall bloqueando (DROP)
closed No hay servicio, pero tampoco firewall

dig — diagnóstico de DNS

Cuándo usarlo: el ping por IP funciona pero por nombre no.

dig google.com                  # consulta al servidor configurado
dig google.com @8.8.8.8        # consulta a un servidor específico
dig google.com @192.168.1.1    # consulta al DNS local

Qué mirar:

;; ANSWER SECTION:
google.com. 300 IN A 142.250.x.x    ← respuesta: hay resolución

;; SERVER: 8.8.8.8#53               ← quién respondió
;; Query time: 12 msec

Si no hay ANSWER SECTION → el nombre no resuelve.
Si Query time es enorme o hay timeout → el servidor DNS no responde.

cat /etc/resolv.conf    # ver qué servidor DNS está configurado

iptables -L — reglas de firewall activas

Cuándo usarlo: el servicio escucha (ss lo confirma) pero nmap lo muestra filtrado.

iptables -L -n -v           # todas las reglas, numérico, con contadores
iptables -L INPUT -n -v     # solo la cadena INPUT

Qué mirar:

Chain INPUT (policy ACCEPT)
target  prot  opt  source    destination
DROP    tcp   --   anywhere  anywhere    tcp dpt:80
^^      ^^^                              ^^^
acción  proto                            puerto bloqueado

Los contadores (pkts, bytes) te dicen si una regla está siendo usada. Si el contador sube mientras reproducís el problema, encontraste la regla que bloquea.