Saltar a contenido

Caso 07: El servidor responde ping pero no el servicio

El escenario

Hay un servidor corriendo un servicio en el puerto 8080. El cliente puede hacer ping al servidor sin problema, pero la conexión al servicio nunca establece.


Topología

name: "caso-07-firewall"
nodes:
  - name: CLIENTE
    type: HOST
    x: 150
    y: 200
  - name: SERVIDOR
    type: HOST
    x: 500
    y: 200
  - name: SW
    type: SWITCH
    x: 325
    y: 200
links:
  - source: CLIENTE
    target: SW
  - source: SERVIDOR
    target: SW

Configuración inicial

En CLIENTE:

ip addr add 192.168.1.10/24 dev eth1
ip link set eth1 up

En SERVIDOR:

ip addr add 192.168.1.20/24 dev eth1
ip link set eth1 up
# Levantar el servicio en puerto 8080
nc -lk -p 8080 &


Introducir la falla

⚙️ Comando para romper el escenario — no leer si sos el alumno
# En SERVIDOR — bloquear el puerto 8080
iptables -A INPUT -p tcp --dport 8080 -j DROP

🔴 El síntoma

Desde CLIENTE:

ping -c 2 192.168.1.20
64 bytes from 192.168.1.20: icmp_seq=0   ✅
64 bytes from 192.168.1.20: icmp_seq=1

nc -w 3 192.168.1.20 8080
(sin respuesta, timeout después de 3 segundos)   ❌

El servidor responde ping perfectamente. El servicio no responde. El servidor dice que el servicio está corriendo.


Tu misión

Encontrá por qué el servicio no es accesible desde el cliente y arreglalo.


Pistas

Pista 1 El ping funciona (ICMP pasa) pero la conexión TCP no (puerto 8080 no responde). Eso sugiere que algo está filtrando tráfico TCP hacia ese puerto específico — no es un problema de conectividad general.
Pista 2 Verificá dos cosas en el SERVIDOR: 1. ¿El servicio está escuchando?
ss -tlnp | grep 8080
2. ¿Hay reglas de firewall que bloqueen ese puerto?
iptables -L INPUT -n -v
Pista 3 Desde el CLIENTE, `nmap` te dice exactamente cómo ve el puerto desde afuera:
nmap -p 8080 192.168.1.20
Un puerto `filtered` significa que el firewall lo está descartando (DROP). Un puerto `closed` significa que no hay servicio pero tampoco firewall.
Solución completa **Diagnóstico:**
# En SERVIDOR
ss -tlnp | grep 8080
LISTEN  0  1  0.0.0.0:8080  ...   ← el servicio SÍ está escuchando
# En SERVIDOR
iptables -L INPUT -n -v
Chain INPUT (policy ACCEPT)
pkts  bytes  target  prot  opt  source    destination
  4   240    DROP    tcp   --   0.0.0.0/0  0.0.0.0/0   tcp dpt:8080
El contador de pkts aumenta con cada intento de conexión — iptables está descartando los paquetes TCP entrantes al puerto 8080. Confirmación desde CLIENTE:
nmap -p 8080 192.168.1.20
PORT     STATE    SERVICE
8080/tcp filtered http-proxy   ← DROP: filtrado silenciosamente
**Fix:**
# En SERVIDOR — eliminar la regla que bloquea el puerto
iptables -D INPUT -p tcp --dport 8080 -j DROP
**Verificación:**
# Desde CLIENTE
nc -w 3 192.168.1.20 8080   # ✅ conecta
nmap -p 8080 192.168.1.20   # → open ✅
**La lección:** cuando el ping funciona pero el servicio no, el problema casi siempre es firewall o que el servicio no está corriendo. `ss` responde la segunda pregunta, `iptables -L` + `nmap` responden la primera. Los contadores de iptables son clave: si suben mientras reproducís el problema, encontraste la regla culpable.