- 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
Opinión en Hacker News
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
También soporta enrutamiento geográfico dividido basado en reglas, lo cual es útil
Como referencia, hay un texto relacionado en este blog
Me molestaba no poder ver capturas de pantalla, y creo que esta publicación será el último empujón que necesitaba
Este tipo de bloqueo se puede eludir fácilmente, pero si Imgur desapareciera, muchos sitios se romperían
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
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
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
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
Reddit es todavía peor: ni siquiera puedes ver el perfil de usuarios que alguna vez publicaron contenido NSFW
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
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 unos 15 minutos puedes configurar que solo ciertos dominios pasen por el VPN, y funciona muy bien
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