- 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 टिप्पणियां
Hacker News राय
Linux चला रहे सस्ते fanless box में कई ports हैं, और मैंने
systemd-networkdसे WireGuard interface सिर्फ एक बार सेट किया हैइसकी वजह से मैं सिर्फ खास traffic को VPN से route कर सकता हूँ, या VPN-केवल SSID/VLAN अलग रख सकता हूँ
हालांकि domain-based routing मुश्किल हो सकती है, इसलिए जरूरत पड़ी तो router में local DNS override कर सकने वाला proxy जोड़ने का सोच रहा हूँ
यह rule-based geographic split routing भी support करता है, इसलिए उपयोगी है
संदर्भ के लिए संबंधित लेख इस ब्लॉग में है
screenshots न दिखने से परेशानी हो रही थी, और लगता है यह पोस्ट आखिरी प्रेरणा बन जाएगी
ऐसे block को bypass करना आसान है, लेकिन अगर Imgur गायब हो जाए तो बहुत सी sites टूट जाएँगी
अगर लोग censorship को bypass कर लें और traffic loss बहुत बड़ा न हो, तो यह महत्वपूर्ण है कि foreign servers authoritarian regulation के आगे झुकने को मजबूर न हों
EU भी शायद इसी दिशा में जा रहा है, इसलिए censorship को ठुकरा सकने वाले tools का व्यापक होना जरूरी है
Raspberry Pi या mini PC पर PiHole के साथ इसे सेट कर दें, तो परिवार के घर का traffic मेरे IP के जरिए tunnel किया जा सकता है
mobile app में WireGuard config file जोड़ें, फिर policy engine में तय करें कि सिर्फ खास domains को VPN interface से route किया जाए
मैंने IPv6 ranges को block करने के लिए लंबा firewall rule बनाकर अस्थायी समाधान किया, लेकिन Cloudflare आधारित sites पर रुकावट आई
उम्मीद है UniFi IPv6 WireGuard support दे
Reddit तो और भी खराब है; जिन users ने कभी NSFW post किया हो, उनकी profile तक नहीं देखी जा सकती
इससे हर बार VPN on/off करने की झंझट के बिना सब अपने आप हो जाएगा
जैसे age verification वाले social networks, देश के हिसाब से block होने वाले apps (Spotify आदि), news site censorship जैसी स्थितियों में यह उपयोगी होगा
आम तौर पर यह सिर्फ HTTP/S requests पर लागू होता है, लेकिन ZScaler जैसे vendors इसे दूसरे protocols तक बढ़ाते हैं
Tailscale में App Connector फीचर वही काम करता है
करीब 15 मिनट में खास domains को VPN पर भेजने का setup हो जाता है, और यह बहुत अच्छी तरह काम करता है
airplane Wi‑Fi जैसी जगहों पर जहाँ VPN block होता है, वहाँ SSH फिर भी allowed होता है, इसलिए मैंने dynamic forwarding और PAC file को मिलाकर inflight entertainment या tracking sites को direct connect होने दिया
यह काफी अच्छी तरह काम करता है