LinuxParty
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.1o0.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/hostso 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
403o429. - 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.
-
Internet
- Cómo detectar y eliminar un bloqueo de red local
- ChatGPT llega oficialmente a Linux con Work y Codex integrados
- Agregar la Máquina VirtualBox a nuestra LAN, 192.168.1.X
- Crear un Web Crawler Básico con Python
- 📡 Cómo medir el ancho de banda que consumes en tu servidor Linux (en tiempo real y con histórico)
- Medir y ajustar el ancho de banda con Iperf
- JPageBuilder un constructor de plantillas de Joomla, infinitamente mejor que Elementor.
- La industria de certificados HTTPS adopta nuevos requisitos de seguridad
- 6 Razones por las que tu web ha perdido posicionamiento y tráfico en Internet
- Comprobar la velocidad de Internet desde la línea de comandos en Linux
- Los cortes de Internet alcanzan niveles récord en África, donde el acceso se convierte en un arma
- Compartir o Enviar archivos sin una Red Local o LAN con woof



