2 पॉइंट द्वारा GN⁺ 2025-11-29 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Imgur द्वारा यूके उपयोगकर्ताओं पर ब्लॉक के कारण Reddit, फोरम, दस्तावेज़ आदि में मौजूद इमेज लिंक सभी “unavailable” दिखने लगे।
  • व्यक्तिगत VPN की जगह पूरे नेटवर्क स्तर पर स्वचालित बाइपास संरचना बना कर सभी डिवाइस से Imgur एक्सेस हो सके, ऐसा सेटअप किया गया।
  • Pi-hole, Traefik, Gluetun, Nginx, NixOS को मिलाकर DNS ब्लॉक को बायपास करने और ट्रैफिक को VPN के जरिए रूट करने वाली आर्किटेक्चर डिज़ाइन की।
  • TLS पास-थ्रू और Docker नेटवर्क शेयरिंग की मदद से एन्क्रिप्टेड ट्रैफिक को बिना डिक्रिप्ट किए पास करते हुए स्पीड ड्रॉप को न्यूनतम रखा गया।
  • परिणामस्वरूप सभी डिवाइस पर बिना अलग सेटअप के Imgur इमेज तक पहुंच संभव हुई, यानी बिना गति हानि वाला पारदर्शी नेटवर्क-स्तरीय ब्लॉक हटाने का सेटअप बना।

Imgur ब्लॉक और असुविधा के उदाहरण

  • Imgur द्वारा यूके उपयोगकर्ताओं के लिए पहुंच ब्लॉक करने के बाद, Reddit, फोरम, दस्तावेज़ जैसे अलग-अलग वेबपेज़ों पर इमेज लिंक नहीं दिखने जैसी समस्या आई।
    • Minecraft शेडर प्रिव्यू इमेज सभी गायब हो गईं, जिससे कौन सा शेडर है यह पहचानना कठिन हो गया।
    • पुराने पोस्ट या README फाइलों में भी Imgur लिंक बने रहने के कारण एक्सेस न हो पाने की समस्या बनी रही।

VPN के बजाय नेटवर्क-स्तरीय समाधान चुनना

  • सामान्य समाधान के रूप में VPN इस्तेमाल किया जाता है, लेकिन 2.5Gbps हाई-स्पीड इंटरनेट में पूरा ट्रैफिक VPN के जरिए रीरूट करने पर स्पीड गिरावट आ जाती है।
  • प्रत्येक डिवाइस पर VPN इंस्टॉल करके कनेक्ट करना और सेटअप करना पड़ता है, जिससे मैनेजमेंट की जटिलता आती है।
  • लक्ष्य था कि सभी डिवाइसों पर स्वतः काम करने वाला, क्लाइंट-सेटअप की जरूरत न होने वाला नेटवर्क-स्तरीय समाधान बने।

नेटवर्क-स्तर संरचना का डिज़ाइन

  • मौजूदा होमलैब सेटअप में पहले से Traefik (reverse proxy), Pi-hole (DNS), NixOS (declarative configuration) का उपयोग था।
  • DNS चरण में i.imgur.com अनुरोधों को इंटरसेप्ट करके उन्हें VPN-कनेक्टेड कंटेनर (Gluetun) के पास भेजा गया।
    • Pi-hole Traefik का IP लौटाता है।
    • Traefik SNI होस्टनेम देखकर Gluetun की ओर रूट करता है।
    • Gluetun अनुरोध को VPN के माध्यम से आगे भेजता है।
    • Gluetun के अंदर वास्तविक Imgur सर्वर तक proxy करने के लिए Nginx
    • इमेज़ को फिर से टनल के जरिए वापस लौटाया जाता है।

Nginx और Gluetun सेटअप

  • Gluetun केवल VPN कनेक्शन देता है, इसलिए VPN नेटवर्क के अंदर proxy की भूमिका निभाने वाला Nginx ज़रूरी था।
  • Nginx को TCP स्ट्रीम मोड पर सेट किया गया ताकि वह SNI हेडर पढ़कर ट्रैफिक को i.imgur.com:443 पर भेजे।
    • TLS हैंडशेक एंड-टू-एंड होता है, इसलिए Nginx डिक्रिप्टेड डेटा नहीं देखता।
  • Docker Compose में दो कंटेनर (Gluetun, Nginx) चलाए गए।
    • network_mode: "service:gluetun" सेट करने से Nginx, Gluetun का नेटवर्क स्टैक शेयर करता है।
    • सभी Nginx ट्रैफिक स्वतः ही VPN टनल से होकर गुजरता है।

Traefik और NixOS इंटीग्रेशन

  • Traefik TCP routing और TLS पास-थ्रू का उपयोग करके i.imgur.com अनुरोधों को Gluetun की ओर भेजता है।
    • TLS terminate नहीं किया जाता, केवल SNI हेडर inspect होता है।
  • NixOS में systemd service से Docker Compose स्टैक रन किया जाता है।
    • Agenix की मदद से VPN credentials को encrypted करके store किया गया।
    • पूरी dotfiles repository सार्वजनिक रखते हुए भी secret data सुरक्षित रही।

परिणाम और परफॉर्मेंस

  • नेटवर्क के सभी डिवाइस (फोन, लैपटॉप, गेस्ट डिवाइस समेत) बिना किसी अतिरिक्त सेटअप के Imgur इमेज देख सकते हैं।
  • Pi-hole DNS को इंटरसेप्ट करता है, Traefik route करता है, Gluetun VPN tunneling करता है
  • इमेज लोडिंग में लगभग कोई देरी नहीं दिखी, और Imgur ट्रैफिक केवल VPN से होकर भी सामान्य ट्रैफिक की स्पीड बनी रही।
  • मेंटेनेंस आसान रहा और होमलैब के लिए ऑटोमेटेड नेटवर्क-स्तरीय क्षेत्रीय ब्लॉक हटाने का सेटअप पूरा हो गया।
  • Minecraft शेडर जैसी Imgur-आधारित सामग्री फिर से सामान्य रूप से देखी जा सकी।

1 टिप्पणियां

 
GN⁺ 2025-11-29
Hacker News राय
  • मेरे नेटवर्क में मैंने ऐसा सेटअप किया है कि केवल एक router ही VPN को संभाले
    Linux चला रहे सस्ते fanless box में कई ports हैं, और मैंने systemd-networkd से WireGuard interface सिर्फ एक बार सेट किया है
    इसकी वजह से मैं सिर्फ खास traffic को VPN से route कर सकता हूँ, या VPN-केवल SSID/VLAN अलग रख सकता हूँ
    हालांकि domain-based routing मुश्किल हो सकती है, इसलिए जरूरत पड़ी तो router में local DNS override कर सकने वाला proxy जोड़ने का सोच रहा हूँ
    • अलग browser खोले बिना FoxyProxy extension से URL pattern के हिसाब से proxy तय कर दें तो यह आसानी से हल हो सकता है
    • मैंने RPi पर x-ray/singbox आधारित एक central VPN splitter रखा है, और उसमें Tailscale जोड़ दिया है ताकि कहीं से भी access किया जा सके
      यह rule-based geographic split routing भी support करता है, इसलिए उपयोगी है
    • उस fanless Linux box का product name जानना चाहता हूँ
  • शीर्षक “Geo-Unblocked” देखकर लगा था कि यह UK के बाहर के IP block सीधे configure करने की बात होगी, लेकिन यह तो बस कुछ traffic को VPN से भेजने की कहानी निकली
    • अगर आप खुद ISP की भूमिका निभाएँ, तो आप जहाँ चाहें वहाँ हो सकते हैं
      संदर्भ के लिए संबंधित लेख इस ब्लॉग में है
    • लेकिन WAN address बदलना network के अंदर IP schema बदलने जैसा है, इसलिए लगता नहीं कि यह व्यवहार में काम करेगा
  • कभी-कभी लगता है, “क्या सिर्फ Imgur images देखने के लिए इतना सब करना पड़ेगा?” लेकिन हाल में सामग्री खोजते हुए समझ आया कि Imgur पर निर्भरता काफी ज्यादा है
    screenshots न दिखने से परेशानी हो रही थी, और लगता है यह पोस्ट आखिरी प्रेरणा बन जाएगी
    • अभी यह जरूरत से ज्यादा लग सकता है, लेकिन सरकारें धीरे-धीरे और ज्यादा content access सीमित करना चाहती दिख रही हैं, इसलिए पहले से तैयारी करना समझदारी है
    • Imgur उम्मीद से कहीं ज्यादा जगह इस्तेमाल हो रहा है। उदाहरण के लिए Core Devices (Pebble successor team) website की images भी Imgur पर हैं
      ऐसे block को bypass करना आसान है, लेकिन अगर Imgur गायब हो जाए तो बहुत सी sites टूट जाएँगी
    • censorship Imgur पर रुकने वाली नहीं है
      अगर लोग censorship को bypass कर लें और traffic loss बहुत बड़ा न हो, तो यह महत्वपूर्ण है कि foreign servers authoritarian regulation के आगे झुकने को मजबूर न हों
      EU भी शायद इसी दिशा में जा रहा है, इसलिए censorship को ठुकरा सकने वाले tools का व्यापक होना जरूरी है
    • मुझे भी bypass उम्मीद से ज्यादा मुश्किल लगा, लेकिन Veepn free version को Singapore पर सेट करने से धीमा सही, कुछ हद तक काम हुआ
  • यह तरीका Netflix या Spotify के ‘same household’ restriction को bypass करने में भी काम आ सकता है
    Raspberry Pi या mini PC पर PiHole के साथ इसे सेट कर दें, तो परिवार के घर का traffic मेरे IP के जरिए tunnel किया जा सकता है
  • UniFi में भी policy-based routing (PBR) से इसे आसानी से लागू किया जा सकता है
    mobile app में WireGuard config file जोड़ें, फिर policy engine में तय करें कि सिर्फ खास domains को VPN interface से route किया जाए
    • कमी यह है कि अगर IPv6 enabled हो, तो वह VPN को bypass कर देता है
      मैंने IPv6 ranges को block करने के लिए लंबा firewall rule बनाकर अस्थायी समाधान किया, लेकिन Cloudflare आधारित sites पर रुकावट आई
      उम्मीद है UniFi IPv6 WireGuard support दे
  • Imgur का UK geo-block cookie के जरिए बना रहता है, इसलिए थोड़ी देर के लिए VPN चालू करना काफी नहीं है
    Reddit तो और भी खराब है; जिन users ने कभी NSFW post किया हो, उनकी profile तक नहीं देखी जा सकती
  • मैं सोच रहा था कि क्या कोई तरीका है जिसमें सिर्फ खास domains को VPN पर भेजा जाए और बाकी सामान्य traffic बना रहे
    इससे हर बार VPN on/off करने की झंझट के बिना सब अपने आप हो जाएगा
    जैसे age verification वाले social networks, देश के हिसाब से block होने वाले apps (Spotify आदि), news site censorship जैसी स्थितियों में यह उपयोगी होगा
    • इसे domain-based split tunneling कहते हैं
      आम तौर पर यह सिर्फ HTTP/S requests पर लागू होता है, लेकिन ZScaler जैसे vendors इसे दूसरे protocols तक बढ़ाते हैं
      Tailscale में App Connector फीचर वही काम करता है
    • दरअसल उस पोस्ट में पहले से ही वैसा setup लागू किया गया है
  • मैंने भी इसी तरह OpenWRT router के PBR feature से सेट किया है
    करीब 15 मिनट में खास domains को VPN पर भेजने का setup हो जाता है, और यह बहुत अच्छी तरह काम करता है
  • मैं ऐसे मामलों को आमतौर proxy PAC file से हल करता हूँ
    airplane Wi‑Fi जैसी जगहों पर जहाँ VPN block होता है, वहाँ SSH फिर भी allowed होता है, इसलिए मैंने dynamic forwarding और PAC file को मिलाकर inflight entertainment या tracking sites को direct connect होने दिया
    यह काफी अच्छी तरह काम करता है