LinuxParty

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

En este caso, vamos a usar como ejemplo Reddit, que supongamos no carga desde tu conexión, no des por hecho que la plataforma ha bloqueado tu dirección IP: una entrada en /etc/hosts, un filtro DNS o un bloqueador instalado en el equipo podrían ser los verdaderos responsables

Intentas acceder a Reddit desde el navegador y la página no responde. Pruebas varias veces, utilizas otro navegador e incluso empiezas a sospechar que la plataforma ha bloqueado tu dirección IP o todo el rango de direcciones de tu proveedor.

Aunque esa posibilidad existe, no siempre es la explicación correcta. En este caso práctico descubrimos que www.reddit.com estaba configurado para apuntar a 127.0.0.1, es decir, al propio ordenador del usuario.

El bloqueo no procedía de Reddit ni del proveedor de Internet. Se encontraba en la configuración local del sistema Linux.

Comprobar la conexión con curl

El primer paso consiste en comprobar qué ocurre al intentar establecer una conexión HTTPS con Reddit.

Podemos probar por separado IPv4 e IPv6:

curl -4 -I https://www.reddit.com/
curl -6 -I https://www.reddit.com/

La opción -I solicita únicamente las cabeceras HTTP, sin descargar todo el contenido de la página. Por su parte, -4 obliga a utilizar IPv4 y -6 fuerza una conexión mediante IPv6.

En nuestro caso, la prueba con IPv4 devolvía este error:

curl: (7) Failed to connect to www.reddit.com port 443 after 1 ms:
Couldn't connect to server

El detalle de que la conexión fallase después de solamente un milisegundo resultaba especialmente revelador. Cuando existe un problema de enrutamiento o el servidor remoto no responde, el intento suele tardar varios segundos.

Un fallo prácticamente inmediato puede indicar que el dominio está apuntando al propio equipo o a una dirección que rechaza la conexión directamente.

La prueba mediante IPv6 tampoco funcionaba:

curl: (6) Could not resolve host: www.reddit.com

Por sí solos, estos mensajes no permiten asegurar que exista un bloqueo de IP. Era necesario comprobar si otros subdominios de Reddit continuaban funcionando.

Probar con Old Reddit

Reddit mantiene una versión clásica de su interfaz en old.reddit.com. Podemos comprobarla mediante:

curl -I https://old.reddit.com/

En este caso, el servidor devolvió:

HTTP/2 302
server: snooserv
via: 1.1 varnish
x-reddit-ct: v=1,dn=FT,p=MAD,cs=HIT

Un código 302 es una redirección HTTP. Lo importante es que la solicitud alcanzó correctamente la infraestructura utilizada por Reddit.

La respuesta incluía además una redirección hacia su página de inicio de sesión:

location: https://old.reddit.com/login/?reason=lor2

Esto demostraba que la dirección IP podía comunicarse con Reddit. Si existiera un bloqueo completo de la IP o de la red del proveedor, probablemente tampoco se habría obtenido una respuesta válida desde old.reddit.com.

Por tanto, el problema parecía afectar exclusivamente a www.reddit.com.

Averiguar qué dirección utiliza el sistema

El comando getent permite consultar las bases de datos que utiliza Linux para resolver nombres, respetando el orden establecido en /etc/nsswitch.conf.

Para comprobar las direcciones asociadas a Reddit ejecutamos:

getent ahosts www.reddit.com
getent ahosts old.reddit.com

El resultado mostró una diferencia fundamental:

127.0.0.1       STREAM www.reddit.com
127.0.0.1       DGRAM
127.0.0.1       RAW

Mientras tanto, old.reddit.com resolvía hacia direcciones públicas pertenecientes a la infraestructura de distribución utilizada por Reddit:

151.101.1.140
151.101.65.140
151.101.129.140
151.101.193.140

Ya teníamos localizado el problema: www.reddit.com estaba asociado a 127.0.0.1.

¿Qué significa la dirección 127.0.0.1?

La dirección 127.0.0.1, conocida como localhost o dirección de bucle local, representa al propio ordenador.

Cuando una aplicación intenta conectarse a esa dirección, el tráfico no sale a Internet. Regresa al mismo equipo.

Por tanto, si encontramos esta asociación:

127.0.0.1 www.reddit.com

el navegador no está intentando comunicarse con los servidores reales de Reddit. Está buscando un servidor web dentro del propio ordenador.

Si no existe ningún servicio escuchando en el puerto 443 local, la conexión será rechazada inmediatamente. Eso explica por qué curl indicaba que no podía conectarse después de solamente un milisegundo.

Revisar el archivo /etc/hosts

Una de las formas más habituales de establecer este tipo de redirecciones consiste en utilizar /etc/hosts.

Este archivo permite asociar manualmente nombres de dominio con direcciones IP. Sus entradas pueden tener prioridad sobre las respuestas proporcionadas por los servidores DNS.

Para buscar cualquier referencia a Reddit podemos ejecutar:

grep -in reddit /etc/hosts

Si aparece algo parecido a lo siguiente, habremos encontrado el bloqueo:

127.0.0.1 www.reddit.com

Podemos editar el archivo mediante Nano:

sudo nano /etc/hosts

Después localizamos la entrada y la eliminamos o la dejamos comentada añadiendo una almohadilla al principio:

# 127.0.0.1 www.reddit.com

Para guardar los cambios en Nano pulsamos:

Ctrl+O
Enter
Ctrl+X

Es importante no modificar otras entradas de /etc/hosts si desconocemos su finalidad.

Limpiar la caché y probar nuevamente

Después de modificar la resolución local conviene limpiar la caché DNS:

sudo resolvectl flush-caches

Si el sistema no utiliza systemd-resolved o el comando anterior no está disponible, podemos reiniciar NetworkManager:

sudo systemctl restart NetworkManager

A continuación, repetimos las comprobaciones:

getent ahosts www.reddit.com
curl -I https://www.reddit.com/

getent ya no debería mostrar 127.0.0.1. En su lugar, tendrá que devolver una o varias direcciones públicas.

Si Reddit también vuelve a cargar desde el navegador, el problema habrá quedado resuelto.

¿Y si Reddit no aparece en /etc/hosts?

En algunas ocasiones, getent puede devolver 127.0.0.1 aunque el dominio no figure en /etc/hosts. En ese supuesto, la respuesta podría proceder de un sistema de filtrado DNS.

Podemos comparar el resultado del servidor DNS habitual con el obtenido desde servidores externos:

dig www.reddit.com A
dig @1.1.1.1 www.reddit.com A
dig @8.8.8.8 www.reddit.com A

Si la primera consulta devuelve 127.0.0.1, pero las consultas dirigidas a Cloudflare o Google muestran direcciones públicas, el bloqueo se encuentra en el DNS configurado.

Entre los posibles responsables encontramos:

  • Un servidor Pi-hole instalado en la red.
  • AdGuard Home.
  • Un sistema de control parental.
  • Un filtro configurado en el router.
  • Una lista de bloqueo de publicidad o contenido.
  • Un servidor DNS proporcionado por la empresa.
  • Algún programa de seguridad instalado en el ordenador.

También podemos consultar los servidores DNS que está utilizando el sistema:

resolvectl status

Antes de cambiar la configuración conviene averiguar quién generó la entrada. Algunas aplicaciones actualizan /etc/hosts automáticamente y podrían volver a añadir el dominio después de reiniciar o actualizar sus listas.

Cómo distinguir un bloqueo local de uno remoto

Cuando una página no funciona, algunas señales pueden ayudarnos a orientar el diagnóstico.

Un bloqueo local mediante /etc/hosts suele presentar estas características:

  • El dominio resuelve como 127.0.0.1 o 0.0.0.0.
  • La conexión falla de manera prácticamente instantánea.
  • Algunos subdominios continúan funcionando.
  • El tráfico nunca alcanza los servidores reales.
  • El problema puede desaparecer al modificar /etc/hosts o el DNS.

Un bloqueo remoto o una limitación aplicada por la plataforma suele comportarse de otra forma:

  • El dominio resuelve hacia una dirección pública válida.
  • Se establece la conexión con el servidor remoto.
  • El servidor devuelve códigos como 403 o 429.
  • Puede aparecer una página explicando la restricción.
  • Las cabeceras HTTP pertenecen a la infraestructura del servicio.

No basta, por tanto, con que una página no cargue para concluir que nuestra IP ha sido bloqueada.

Una solución sencilla para un problema engañoso

En este caso, la solución fue eliminar la asociación local que dirigía www.reddit.com hacia 127.0.0.1. Después de hacerlo, el dominio volvió a resolver correctamente y Reddit recuperó su funcionamiento normal.

La experiencia demuestra la utilidad de herramientas como curl, getent, dig y grep. Con cuatro comandos básicos pudimos seguir el recorrido de la conexión y determinar que el fallo se encontraba en el propio sistema.

Antes de contactar con el proveedor de Internet o solicitar a una plataforma que desbloquee nuestra dirección IP, merece la pena comprobar la resolución del dominio.

A veces el supuesto bloqueo exterior se encuentra mucho más cerca: en una sola línea de /etc/hosts.

No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

 

Dona a LInuxParty

Donar 10

Donar 20

 

 

Tutorial de Linux

Top 15 artículos por Fecha

Viendo artículos de: Agosto de 2026

Filtro por Categorías