आधुनिक इंटरनेट एक काफी कष्टप्रद जगह है। अक्सर, निर्दोष गतिविधियों जैसे टेक्स्ट पढ़ना या वीडियो देखना प्रचार संदेशों से बाधित होते हैं जिन्हें विज्ञापन के रूप में जाना जाता है। यह कोई समस्या नहीं होगी यदि विज्ञापन प्रासंगिक, अच्छी तरह से समयबद्ध, या गैर-घुसपैठ थे, लेकिन कृत्रिम बुद्धिमत्ता, गहन शिक्षा और अन्य बज़वर्ड्स में बहुत "प्रगति" के बावजूद, वे उनमें से कोई भी नहीं हैं। फिर, हमारे पास गोपनीयता और क्या नहीं है।
विज्ञापन देने वालों और विज्ञापन अवरोधकों के बीच लड़ाई जारी है। यह धीरे-धीरे बढ़ भी रहा है, क्योंकि अधिक से अधिक लोग आक्रामक इन-यर-फेस विज्ञापन मॉडल के खिलाफ हो रहे हैं। अधिकांश भाग के लिए, यदि आप अपने ब्राउज़र में एक विज्ञापन अवरोधक एक्सटेंशन का उपयोग करते हैं, तो आप तैयार हैं। लेकिन फिर, आप ब्राउज़र कंपनी की दया पर हैं और वे क्या अनुमति देते हैं, साथ ही यह हर ब्राउज़र और/या ऑपरेटिंग सिस्टम में हमेशा काम नहीं करता। समाधान विज्ञापन सर्वरों को नेटवर्क अनुरोधों को पूरी तरह से ब्लॉक करना है, और यही पाई-होल करता है। आइए समीक्षा करें।

शुरुआत करना
पाई-होल इंटरनेट विज्ञापनदाताओं के लिए एक ब्लैक होल है। यह सॉफ्टवेयर टूल का एक सेट है जो विज्ञापन सेवा के लिए पहचाने गए डोमेन के लिए DNS अनुरोधों को ब्लॉक करेगा ताकि आपके ब्राउज़िंग सत्र - या उस मामले के लिए कोई भी इंटरनेट-सामना करने वाली गतिविधि - कभी भी किसी भी विज्ञापन को शामिल न करे। यह एक नेटवर्क-स्तरीय समाधान है, और इस तरह, यह सभी परिदृश्यों के लिए काम करना चाहिए। लाभ, कम शोर के अलावा, कम ट्रैफिक वॉल्यूम, बेहतर गोपनीयता और क्या नहीं भी शामिल हैं।
इसने मुझे दिलचस्पी दी, और मैंने पाई-होल सेटअप करने का फैसला किया। अब, सामान्य तौर पर, पाई-होल को एक उपकरण के रूप में उपयोग करने के लिए डिज़ाइन किया गया है। जैसा कि इसके नाम से पता चलता है, आप एक सस्ते रास्पबेरी पाई डिवाइस का उपयोग करना चाह सकते हैं, उस पर पाई-होल इंस्टॉल करें, और फिर इसे अपने नेटवर्क फिल्टर के रूप में उपयोग करें। इसमें समस्या नंबर एक निहित है - आपको पाई-होल को सही ढंग से कॉन्फिगर करने में सक्षम होने के लिए नेटवर्किंग की कुछ समझ की आवश्यकता है। कुल मिलाकर, एक पूर्ण पाई-होल समाधान कवर करता है:
- पाई-होल सॉफ्टवेयर चलाने वाले डिवाइस का सेटअप - यह आपके नेटवर्क पर एक समर्पित सिस्टम हो सकता है, या आप किसी भी मशीन पर लिनक्स चलाकर पाई-होल कॉन्फिगर कर सकते हैं। उदाहरण के लिए, यदि आपके पास कुछ लिनक्स लैपटॉप या डेस्कटॉप हैं, तो प्रत्येक अपने स्वयं के नेटवर्क फिल्टर के रूप में हो सकता है।
- अगला चरण पाई-होल को DNS सर्वर के रूप में कॉन्फिगर करना है - संक्षेप में, हम IP पतों के बजाय डोमेन नामों का उपयोग करके ब्राउज़ करते हैं। मनुष्यों को 1.2.3.4 या जैसे संख्याओं के अनुक्रम की तुलना में dedoimedo.com या example.com जैसी चीज़ याद रखना बहुत आसान लगता है। यह डोमेन नेम सिस्टम (DNS) रिज़ॉल्यूशन सेवा के माध्यम से किया जाता है, जो मानव-पठनीय नामों से संख्याओं में अनुवाद करता है। पाई-होल इस बिंदु पर अपने फ़िल्टरिंग नियम लागू कर सकता है - यदि यह किसी ऐसे पते पर अनुरोध की पहचान करता है जिसे यह इंटरनेट विज्ञापनदाताओं में से एक से संबंधित मानता है, तो यह इस अनुरोध को छोड़ सकता है, और इसलिए ऐसी सामग्री कभी नहीं परोसी जाएगी। बेशक, इसमें फाल्स पॉजिटिव भी शामिल हो सकते हैं।
- अंतिम चरण अन्य सिस्टम को पाई-होल को अपने DNS सर्वर के रूप में उपयोग करने के लिए कॉन्फिगर करना है - फिर से, इसके लिए नेटवर्किंग के कुछ ज्ञान की आवश्यकता होती है। लेकिन यह वास्तव में किसी भी ऑपरेटिंग सिस्टम पर लागू होता है। जबकि पाई-होल उपकरण को लिनक्स होना चाहिए, कोई भी मशीन अपने DNS कॉन्फिगरेशन को उपकरण का उपयोग करने के लिए बदल सकती है, और उस बिंदु से, पाई-होल मध्यस्थ होगा, नेटवर्क अनुरोधों को फ़िल्टर करेगा।
इसलिए आपको याद रखना होगा कि उपरोक्त सभी को विशेषज्ञता की आवश्यकता है। आप इस प्रकृति के समाधान को अपने सेटअप में लापरवाही से प्लग 'एन' प्ले नहीं कर सकते। लेकिन अगर आपका एक नर्डी दोस्त है, तो वे आपके लिए यह कर सकते हैं। यह कितना सरल या जटिल है, ठीक है, चलिए जारी रखते हैं।
इंस्टॉलेशन विज़ार्ड
मैंने स्क्रिप्ट डाउनलोड की और इसे चलाया। आपको एक टेक्स्ट-आधारित विज़ार्ड मिलता है जो अपेक्षाकृत सरल है। मैंने इसे KDE नियॉन पर चलाया, और इसने सिस्टम रिपॉजिटरी से केवल सॉफ्टवेयर इंस्टॉल किया, इसके अपने घटकों के अलावा, जो GitHub से आते हैं।



आपको पाई-होल को बताना होगा कि किस DNS का उपयोग करना है। उदाहरण के लिए, आप अपने स्वयं के राउटर का उपयोग कर सकते हैं, जो आमतौर पर लिनक्स सिस्टम उपयोग करेंगे, जैसे 192.168.1.1 या 192.168.2.1 या समान। सिस्टमड के साथ अब चीजें थोड़ी अधिक समझने में मुश्किल हैं, लेकिन हम वहां पहुंच जाएंगे। आपके पास मौजूदा इंटरनेट DNS (जैसे गूगल या क्लाउडफ्लेयर) में से कुछ का उपयोग करने का विकल्प भी है। मैंने अपने कस्टम सेटअप के साथ शुरू करने का फैसला किया।

किसी भी विज्ञापन अवरोधक की तरह, पाई-होल विज्ञापनों को ब्लॉक करने के लिए सूचियों का उपयोग करता है। यह समाधान का सबसे मजबूत और सबसे कमजोर कड़ी है, क्योंकि यदि सूचियां अद्यतन नहीं हैं, गलत हैं, या खराब बनी हैं, तो आपके पास अंतराल या फाल्स पॉजिटिव हो सकते हैं, जहां वैध डोमेन अस्वीकार हो जाते हैं। लेकिन उस बात के लिए, यह ब्राउज़र एक्सटेंशन के माध्यम से विज्ञापन अवरोधन से अलग नहीं है, सिवाय इसके कि यह थोड़ा अधिक गहन है, इसलिए आक्रामक। अधिकांश ब्राउज़र एक्सटेंशन नियमों को केवल थर्ड-पार्टी डोमेन पर लागू करते हैं, इसलिए अपेक्षित डोमेन के गलत व्यवहार की संभावना अपेक्षाकृत कम है। पाई-होल फूलप्रूफ होने के लिए है, और इसका मतलब है कि यह वैध साइटों को लोड होने से रोक सकता है।

वेब UI एक अच्छी चीज़ की तरह लगता है। मैंने इसे कॉन्फिगर किया था।

और बस। माना जाता है, पाई-होल इंस्टॉल और कॉन्फिगर किया गया था, और मैं अब इसका उपयोग कर सकता था।
क्या यह काम किया?
नहीं। मेरे पास कोई इंटरनेट कनेक्टिविटी नहीं थी - नाम रिज़ॉल्यूशन में विफलता। मेरा स्थानीय सिस्टम - नियॉन - खुद को अपने DNS के रूप में उपयोग कर रहा था (या बल्कि इंस्टॉल किया गया पाई-होल, जो राउटर का उपयोग कर रहा था), लेकिन ऐसा लग रहा था कि पाई-होल अपनी रिज़ॉल्यूशन सेवा प्रदान नहीं कर रहा था।
इस बिंदु पर समस्या है - आप ऑनलाइन नहीं जा सकते क्योंकि आपके पास इंटरनेट नहीं है, इसलिए यदि आप उत्तर खोजना चाहते हैं, तो आपको दूसरी मशीन की आवश्यकता है। मैंने पाई-होल को अनइंस्टॉल करने की कोशिश की, और यह एक सरल और साफ समाधान था, और कनेक्टिविटी तुरंत बहाल हो गई। मैंने इसे फिर से इंस्टॉल किया, और वही परिणाम मिले।
मैंने कुछ कमांड-लाइन जांच करने का फैसला किया। पाई-होल कई कमांड के साथ आता है जो आपको इसे सक्षम, अक्षम, नाम रिज़ॉल्यूशन सेवा शुरू करने, स्थिति जांचने और समान करने देते हैं। पता चला मुझे पाईहोल-FTL नामक किसी चीज़ के साथ समस्या थी। खैर, ठीक है।
pihole enable
[i] Enabling blocking
[✗] pihole-FTL: no process found
[✓] Pi-hole Enabled
मैंने pihole-FTL चलाने की कोशिश की, लेकिन यह शुरू नहीं हुआ। खैर, जैसा कि पता चला, मुझे sudo की आवश्यकता थी। ऑनलाइन दस्तावेज़ीकरण को देखते हुए, सेटअप त्रुटियों को अच्छी तरह से प्रलेखित नहीं किया गया है। तो ऐसा लगता है कि मैंने कॉन्फिगरेशन में अपनी पहली बाधा पार कर ली है।
pihole-FTL
FATAL: Opening of FTL log (/var/log/pihole-FTL.log) failed!
Make sure it exists and is writeable by user neon
sudo pihole-FTL
FTL started!
लेकिन मेरे पास अभी भी इंटरनेट नहीं था। मुझे लगा कि DNS सेवा अभी भी डाउन है, इसलिए मैंने इसे पुनः आरंभ करने की कोशिश की।
pihole restartdns
[✗] Failed to start pihole-FTL.service: Unit pihole-FTL.service not found.
त्रुटि से, मैंने अनुमान लगाया कि FTL सेवा शुरू करने के लिए कोई यूनिट फ़ाइल नहीं थी, या यह बर्बाद थी। ऑनलाइन खोज करते हुए, मैंने सीखा कि सेवा फ़ाइल को बदलने की आवश्यकता थी। अर्थात्, /etc/init.d/pihole-FTL के तहत, मुझे एक लाइन संपादित करनी थी जो FTL को इससे लागू करती है:
su -s /bin/sh -c "/usr/bin/pihole-FTL" "$FTLUSER"
सिर्फ इस लाइन तक:
/usr/bin/pihole-FTL
इसके बाद, पाई-होल त्रुटियों के बिना शुरू हुआ।
sudo pihole restartdns
[✓] Starting DNS service
पाई-होल विज्ञापनों को ब्लॉक नहीं कर रहा था
मेरे पास कनेक्टिविटी थी, लेकिन विज्ञापन थे। पाई-होल कोई फ़िल्टरिंग नहीं कर रहा था। इसलिए मैंने वेब UI तक पहुंचने और देखने का फैसला किया कि क्या मैं वहां कोई बदलाव और ट्वीक कर सकता हूं। लेकिन जब मैंने पाई-होल पते पर जाने की कोशिश की, तो कोई वेब सर्वर सुन नहीं रहा था। https://ip-address/admin और https://pi-hole/admin ने कुछ नहीं किया।
मैंने कमांड लाइन पर कुछ और परीक्षण किए, और जैसा कि पता चला, लाइटटीपीडी सेवा नहीं चल रही थी, जो बताएगा कि मेरे पास वेब UI क्यों नहीं था। तो कुछ और जादू करने का समय था, और फिर से, इस विषय पर दस्तावेज़ीकरण थोड़ा विरल था। मुझे और त्रुटियां मिलीं:
sudo systemctl restart lighttpd.service
Job for lighttpd.service failed because the control process exited with error code. See "systemctl status lighttpd.service" and "journalctl -xe" for details.
इस बार, हालांकि, क्योंकि मेरे पास इंटरनेट था, मैं ऑनलाइन खोज सकता था, और जल्द ही इस मुद्दे का सही जवाब मिल गया - हालांकि त्रुटि लॉग में ऐसा कुछ भी नहीं है जो समाधान का संकेत दे। और यहां, मैं एक बार फिर, सिस्टमड की अविवेकपूर्ण जटिलता को इंगित करना चाहूंगा। मुझे एक बाइनरी लॉग में जानकारी खोजनी पड़ी, और फिर भी, जानकारी बेकार थी।
मैं वास्तव में एक पैकेज - गैमिन - याद कर रहा था, क्यों इसे तुरंत निर्भरता के रूप में इंस्टॉल नहीं किया गया, कोई आइडिया नहीं। लेकिन एक बार जब मैंने इसे इंस्टॉल किया, तो लाइटटीपीडी ठीक शुरू हुआ, और वेब UI मेरे अन्वेषण के लिए वहां था।
sudo apt-get install gamin
systemctl status lighttpd.service
● lighttpd.service - Lighttpd Daemon
Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2019-05-09 15:34:03 CEST; 2s ago
Process: 19060 ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf (code=exited, status=0/SUCCESS)
Main PID: 19069 (lighttpd)
Tasks: 6 (limit: 4915)
CGroup: /system.slice/lighttpd.service
├─19069 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
├─19078 /usr/bin/php-cgi
├─19079 /usr/bin/php-cgi
├─19080 /usr/bin/php-cgi
├─19081 /usr/bin/php-cgi
└─19082 /usr/bin/php-cgi

वेब UI लॉगिन और पासवर्ड
लेकिन मेरे पास अभी भी कोई विज्ञापन अवरुद्ध नहीं था। इसलिए मैंने लॉगिन करने की कोशिश की, और महसूस किया कि मुझे एक और समस्या थी - मैं एडमिन पेज तक नहीं पहुंच सका जहां मैं वास्तव में सभी लॉग और विवरण देख सकता था, और बदलाव कर सकता था। फिर से, ऑनलाइन खोज करते हुए, मैंने पाया कि मुझे कमांड लाइन से डिफ़ॉल्ट पासवर्ड रीसेट करना होगा:
pihole -a -p
फिर मुझे वेब UI सेटिंग्स तक पहुंच मिली। यह वास्तव में एक अच्छा और शक्तिशाली इंटरफेस है। आपको बहुत सारे विकल्प मिलते हैं, जिसमें पाई-होल को अस्थायी रूप से रोकने की क्षमता शामिल है, इसलिए यदि आपको समस्याएं आती हैं, तो सब कुछ बदलने के बजाय, आप केवल फ़िल्टरिंग को रोक सकते हैं। DNS सेटिंग्स के साथ खेलने की कोई आवश्यकता नहीं।
ब्लॉकलिस्ट भरें
और इंटरफेस के माध्यम से जाने पर, मुझे एहसास हुआ कि मेरी ब्लॉकलिस्ट सभी खाली थीं। हां, यह मुख्य पेज से स्पष्ट है, लेकिन आपको यह जानने की जरूरत है कि आप क्या ढूंढ रहे हैं। पाई-होल आपको सूचियों को अपडेट करने के लिए संकेत क्यों नहीं देगा या वास्तव में इसे सेटअप के हिस्से के रूप में करेगा? मैंने कमांड लाइन से मैन्युअल अपडेट चलाया, और सूचियां उत्पन्न हुईं।
pihole -g -f

ठीक है, क्या इसने काम किया?
हां, अब, यह अंततः काम कर रहा था! पाई-होल अब अपना DNS कर्तव्य निभा रहा था और ट्रैफिक को फ़िल्टर भी कर रहा था। मुझे कहना होगा कि यह प्रभावी और गैर-घुसपैठ था। और अगर मैं गलत नहीं हूं, तो नेटवर्क पक्ष पर थोड़ा प्रदर्शन सुधार भी था, क्योंकि सिस्टम को कम क्वेरी संभालनी थीं और कम सामग्री परोसनी थी। वास्तव में, कुछ निर्दोष ब्राउज़िंग के साथ भी, सभी क्वेरी का 20% अवरुद्ध था। यह बहुत लगता है। लेकिन यह आधुनिक इंटरनेट की वर्तमान स्थिति को भी उजागर करता है। तथ्य यह है कि ब्लॉकलिस्ट पर 100,000 से अधिक डोमेन हैं, इस दुखद कहानी का अपना हिस्सा बताता है। यह कोमल विलंबता सुधार भी बताता है।

निष्कर्ष
दिन के अंत में, मेरे पास पाई-होल चल रहा था, लेकिन सेटअप तुच्छ से बहुत दूर था। चार या पांच कार्डिनल समस्याएं थीं, और इनमें से किसी को भी नहीं होना चाहिए था, क्योंकि इंस्टॉलेशन विज़ार्ड अलग-अलग जांच के माध्यम से जा सकता था ताकि यह सुनिश्चित हो सके कि चीजें काम कर रही थीं। पहली बार चलाने का हिस्सा सेवा जांच हो सकता है, और यदि वहां समस्याएं हैं, तो यह सुनिश्चित करने के लिए किसी प्रकार का स्व-निदान कि FTL चालू है और चल रहा है। वही वेब सेवा के लिए लागू होता है। फिर, पासवर्ड रीसेट और सूची अपडेट है। ये सभी अनुभव को बहुत अधिक सुव्यवस्थित बना देंगे।
एक उत्पाद के रूप में, पाई-होल एक बहुत अच्छा और शक्तिशाली उपकरण है। यह अपना काम बेहद अच्छी तरह से करता है, यह तेज़, प्रभावी और मजबूत है, और वेब UI अच्छी तरह से डिज़ाइन किया गया है। आप ट्रैफिक पक्ष पर भी कुछ हासिल करते हैं, क्योंकि कम सामग्री परोसी जानी है, और हल करने के लिए कम क्वेरी हैं, इसलिए जो मायने रखता है उसके लिए प्रदर्शन सुधार। सेटअप तुच्छ नहीं है लेकिन यह प्राप्त करने योग्य है, और आपके पास अपने नेटवर्क को कैसे वायर करना है, इसमें बहुत लचीलापन है। आप पाई-होल को एक स्टैंडअलोन सिस्टम के रूप में रख सकते हैं, या यह आपके घर में सभी अलग-अलग उपकरणों की सेवा कर सकता है। कुल मिलाकर, यह अगर और जब इंटरनेट आप पर दुष्ट हो जाता है तो प्रलय का हथियार है। परीक्षण के लायक है, लेकिन थर्मोडायनामिक्स के दूसरे नियम को याद रखें। आप एक ही समय में तुच्छ और जटिल नहीं हो सकते।
चीयर्स।