2 puntos por GN⁺ 2025-11-29 | 1 comentarios | Compartir por WhatsApp
  • El bloqueo de usuarios de Imgur en Reino Unido provocó que enlaces de imágenes en Reddit, foros, documentación y otros sitios se mostraran como “unavailable”
  • En lugar de una VPN personal, se configuró una estructura de derivación automática a nivel de red completa para habilitar el acceso a Imgur en todos los dispositivos
  • Se diseñó una arquitectura con Pi-hole, Traefik, Gluetun, Nginx y NixOS para evadir el bloqueo DNS y enrutar el tráfico a través de una VPN
  • Con TLS passthrough y compartición de red de Docker, se mantiene el tráfico cifrado intacto y se minimiza la caída de rendimiento
  • Como resultado, el acceso a imágenes de Imgur quedó disponible en todos los dispositivos sin configuración adicional, implementando una estructura transparente de desbloqueo de bloqueo geográfico sin pérdida de velocidad

Bloqueo de Imgur y casos de incomodidad

  • Al bloquear el acceso de usuarios del Reino Unido, Imgur provocó que enlaces de imágenes en diversas páginas web como Reddit, foros y documentación no se mostraran
    • Las miniaturas de previsualización de shaders de Minecraft desaparecieron, quedando imposible identificar cuál shader era
    • En publicaciones antiguas o archivos README, los enlaces a Imgur siguen presentes, por lo que el problema de inaccesibilidad continúa

Elegir una solución a nivel de red en lugar de VPN

  • Una solución común es usar VPN, pero con una conexión de 2.5Gbps, desviar todo el tráfico por VPN provoca degradación de velocidad
  • Existe un problema de complejidad operativa, porque hay que instalar y conectar la VPN en cada dispositivo
  • Se buscó una solución a nivel de red sin configuración de cliente, que funcione de forma automática en todos los dispositivos

Diseño de arquitectura a nivel de red

  • En el homelab ya se usan Traefik (reverse proxy), Pi-hole (DNS) y NixOS (configuración declarativa)
  • En la etapa de DNS se interceptan solicitudes a i.imgur.com y se derivan al contenedor de conexión VPN (Gluetun)
    • Pi-hole devuelve la IP de Traefik
    • Traefik verifica el host SNI y lo enruta a Gluetun
    • Gluetun envía la solicitud a través de la VPN
    • El Nginx dentro de Gluetun hace proxy al servidor real de Imgur
    • Se devuelven las imágenes nuevamente por el túnel

Configuración de Nginx y Gluetun

  • Gluetun solo aporta la conexión VPN, por eso se requiere un Nginx dentro de la red VPN que actúe como proxy
  • Nginx se configura en modo stream TCP para leer el encabezado SNI y reenviar tráfico a i.imgur.com:443
    • El handshake TLS se realiza de extremo a extremo y Nginx no ve datos descifrados
  • En Docker Compose se ejecutan dos contenedores (Gluetun y Nginx)
    • Con la configuración network_mode: "service:gluetun" Nginx comparte el stack de red de Gluetun
    • Todo el tráfico de Nginx atraviesa automáticamente el túnel VPN

Integración con Traefik y NixOS

  • Traefik usa enrutamiento TCP y TLS passthrough para enviar las peticiones de i.imgur.com a Gluetun
    • No termina TLS y solo inspecciona el encabezado SNI
  • En NixOS, el stack de Docker Compose se ejecuta como servicio de systemd
    • Las credenciales de la VPN se guardan cifradas con Agenix
    • Manteniendo público el repositorio completo de dotfiles y protegiendo datos sensibles

Resultados y rendimiento

  • Todos los dispositivos de la red (móvil, portátil, invitados incluido) pueden acceder a imágenes de Imgur sin configuración adicional
  • Pi-hole intercepta DNS, Traefik enruta y Gluetun realiza el túnel VPN
  • La carga de imágenes casi no se retrasa, y el tráfico hacia Imgur pasa por VPN mientras se mantiene la velocidad del tráfico general
  • El mantenimiento es simple y se completa una estructura automatizada de desbloqueo geográfico en el homelab
  • Se volvió a visualizar normalmente contenido basado en Imgur, como shaders de Minecraft

1 comentarios

 
GN⁺ 2025-11-29
Opinión en Hacker News
  • En mi red hice que solo un router supiera del VPN
    Tengo una caja fanless barata con Linux y varios puertos, y configuré una sola vez una interfaz WireGuard con systemd-networkd
    Gracias a eso, puedo enrutar solo cierto tráfico por el VPN o incluso tener un SSID/VLAN aparte exclusivo para VPN
    Eso sí, el enrutamiento basado en dominios puede ser complicado, así que si hace falta pienso agregar al router un proxy que permita overrides de DNS locales
    • Se puede resolver fácil sin abrir otro navegador si usas la extensión FoxyProxy para asignar proxies por patrón de URL
    • Yo puse en una RPi un splitter central de VPN basado en x-ray/singbox, y le añadí Tailscale para poder acceder desde cualquier lugar
      También soporta enrutamiento geográfico dividido basado en reglas, lo cual es útil
    • Me da curiosidad cuál es el nombre de ese producto fanless con Linux
  • Al ver el título “Geo-Unblocked”, pensé que se trataría de configurar directamente bloques de IP fuera del Reino Unido, pero en realidad era solo pasar parte del tráfico por un VPN
    • Si haces directamente el papel de ISP, puedes estar donde quieras
      Como referencia, hay un texto relacionado en este blog
    • Pero cambiar la dirección WAN se parece a cambiar el esquema de IP dentro de la red, así que no creo que en la práctica funcione
  • Uno piensa: “¿De verdad hay que llegar hasta este punto solo para ver imágenes de Imgur?”, pero al investigar materiales recientes me di cuenta de que la dependencia de Imgur es bastante alta
    Me molestaba no poder ver capturas de pantalla, y creo que esta publicación será el último empujón que necesitaba
    • Ahora puede sentirse exagerado, pero los gobiernos cada vez intentan restringir el acceso a más contenido, así que me parece sensato prepararse con anticipación
    • Imgur se usa en más lugares de los que parece. Por ejemplo, las imágenes del sitio web de Core Devices (el equipo sucesor de Pebble) también están en Imgur
      Este tipo de bloqueo se puede eludir fácilmente, pero si Imgur desapareciera, muchos sitios se romperían
    • La censura no se va a detener en Imgur
      Incluso si la gente logra esquivarla y la pérdida de tráfico no es tan grande, es importante que los servidores en el extranjero no tengan que someterse a regulaciones autoritarias
      Parece que la UE también va en una dirección parecida, así que deberían difundirse ampliamente herramientas capaces de rechazar la censura
    • A mí también me costó más de lo esperado eludirlo, pero al poner la versión gratuita de Veepn en Singapur, funcionó más o menos, aunque lento
  • Parece que este método también podría servir para eludir la restricción de “mismo hogar” de Netflix o Spotify
    Si lo configuras junto con PiHole en una Raspberry Pi o mini PC, podrías tunelizar el tráfico de la casa de tu familia a través de tu IP
  • En UniFi también se puede implementar fácilmente con policy-based routing (PBR)
    Solo agregas el archivo de configuración de WireGuard en la app móvil y, en el motor de políticas, indicas que solo ciertos dominios se enruten por la interfaz VPN
    • La desventaja es que si IPv6 está activado, termina saltándose el VPN
      Yo lo resolví temporalmente creando una larga regla de firewall para bloquear rangos de IPv6, pero me bloqueó en sitios basados en Cloudflare
      Ojalá UniFi soporte WireGuard sobre IPv6
  • El bloqueo geográfico de Imgur en el Reino Unido persiste mediante cookies, así que no se resuelve simplemente activando el VPN un momento
    Reddit es todavía peor: ni siquiera puedes ver el perfil de usuarios que alguna vez publicaron contenido NSFW
  • Me preguntaba si había alguna forma de enviar solo ciertos dominios por VPN y mantener el resto como tráfico normal
    Así podría hacerse automáticamente sin la molestia de estar activando y desactivando el VPN cada vez
    Sería útil, por ejemplo, en situaciones como redes sociales con verificación de edad, apps bloqueadas por país (como Spotify) o censura de sitios de noticias
    • A eso se le llama split tunneling basado en dominios
      Por lo general solo se aplica a solicitudes HTTP/S, pero vendors como ZScaler lo extienden también a otros protocolos
      En Tailscale, la función App Connector cumple ese papel
    • En la práctica, ese artículo ya implementaba precisamente esa configuración
  • Yo hice algo parecido con la función PBR de un router OpenWRT
    En unos 15 minutos puedes configurar que solo ciertos dominios pasen por el VPN, y funciona muy bien
  • Yo suelo resolver este tipo de problema con un archivo PAC de proxy
    Incluso en entornos donde el VPN está bloqueado, como el Wi‑Fi de los aviones, SSH sí suele estar permitido, así que combiné reenvío dinámico con un archivo PAC para que el entretenimiento a bordo o los sitios de rastreo se conectaran directamente
    Funciona bastante bien