Aunque pareciese que no tiene nada que ver una cosa con otra, lo que es cierto es que estas últimas semanas han ido ligadas de la mano, pero de la manera mala. Dejadme que me explique.

El caso es que una de las aplicaciones que mantenemos empezó en un momento dado a recibir incidencias como si estuviese caída. El servidor estaba bien y yo desde mi oficina llegaba perfectamente, después de mucho indagar descubirmos que no se llegaba desde las conexiones Movistar u O2, además, lo que vimos es que había ya quejas de otros servidores que estaban afectados y solo tenían en común una cosa, que estaban detrás de Cloudflare. La cosa es que media internet utiliza los servicios de cloudflare, como CDN o como protección contra ataques DDOS o como proxy para ahorrar ancho de banda. Entendimos que debía ser un problema de enrutamiento de Movistar y desactivamos cloudflare momentaneamente a la espera de que lo solucionasen… Estamos hablando del día 3 de febrero.

Esto estuvo pasando durante toda la tarde, llegado un momento nos dijeron que ya volvía a funcionar (y que todo debería ser una avería, no nos dijeron otra cosa)

Peeero, casualidades de la vida, el día 8 se jugaba el derbi y, mira por donde, resulta que empezamos a recibir incidencias de nuevo… Vuelta a desactivar cloudflare y esperando de nuevo… Pero esta vez no lo arreglaron, el domingo seguía la cosa igual:

Y esto se quedó así hasta el lunes (qué curioso!) sin que nadie se dignase dar ninguna explicación ni disculpa. Miles de negocios perdidos y webs expuestas a ataques sin remedio por alimentar a las alimañas del deporte. Era tan evidente que ya se publicó como noticia en varios medios (https://hipertextual.com/2025/02/movistar-cloudflare-futbol). El caso es que estuvo funcionando bien hasta los partidos de champions en los que se repitieron cortes de 15 minutos alternos (igual esto había cantado demasiado).
¿Qué hacer?
Ahora nos surge el problema de qué hacer el fin de semana. No podemos irnos a descansar porque si nos vuelven a cortar cloudflare tendríamos que volver a desactivarlo a mano, así que, para todos aquellos que tengáis cloudflare os recomiendo usar algo como esto:
import requests
import subprocess
import os
def check_ip_reachable(ip):
try:
result = subprocess.run(['ping', '-c', '4', ip], capture_output=True, text=True, timeout=10)
return result.returncode == 0
except subprocess.TimeoutExpired:
return False
def pause_cloudflare(domain, email, api_key):
headers = {
'X-Auth-Email': email,
'X-Auth-Key': api_key,
'Content-Type': 'application/json'
}
# Obtener el Zone ID
zone_response = requests.get(f'https://api.cloudflare.com/client/v4/zones?name={domain}', headers=headers)
zone_data = zone_response.json()
if not zone_data['success']:
print("Error al obtener el Zone ID")
return False
zone_id = zone_data['result'][0]['id']
# Pausar el servicio
pause_url = f'https://api.cloudflare.com/client/v4/zones/{zone_id}'
pause_data = {'paused': True}
response = requests.patch(pause_url, headers=headers, json=pause_data)
result = response.json()
if result['success']:
print(f"Servicio pausado para el dominio {domain}")
return True
else:
print(f"Error al pausar el servicio: {result['errors']}")
return False
# Configuración
ip_to_check = "192.168.1.1" # Reemplaza con la IP que quieres comprobar
domain = "ejemplo.com" # Reemplaza con tu dominio
cloudflare_email = "[email protected]" # Reemplaza con tu email de Cloudflare
cloudflare_api_key = "tu_api_key" # Reemplaza con tu API key de Cloudflare
# Comprobar si la IP está accesible
if not check_ip_reachable(ip_to_check):
print(f"La IP {ip_to_check} no está accesible. Pausando el servicio en Cloudflare...")
if pause_cloudflare(domain, cloudflare_email, cloudflare_api_key):
print("Servicio pausado exitosamente")
else:
print("No se pudo pausar el servicio")
else:
print(f"La IP {ip_to_check} está accesible")
Este programita básicamente lo que hace es comprobar si una IP responde al ping y si no lo hace pone en pausa cloudflare para el dominio que queramos. Para ello solo hay que configurarlo con la IP, el dominio y los datos del API de cloudflare de nuestra cuenta. Lo recomendable es hacer un bucle que lo chequee cada cierto tiempo y (código que todavía no he hecho) que cuando vuelva la conectividad se vuelva a activar cloudflare.
Para mi estas actuaciones son completamente ilegales y atentan contra la neutralidad de la red. ¿Qué será lo siguiente? ¿Evitar que visitemos blogs de ideologías no aprobadas?, ¿Hacer inaccesible el porno? Por desgracia en mi casa usamos O2, pero igual tengo que cambiarme visto lo visto.