আধুনিক ইন্টারনেট একটি কফি বিরক্তিকর জায়গা। খুব প্রয়শই, নিরপেক্ষ কার্যকলাপ যেমন টেক্সট পড়া বা ভিডিও দেখা প্রোমোশনাল মেসেজ দ্বারা বাধা পায় যাকে অ্যাড বলা হয়। এটি কোনো সমস্যা হত না যদি অ্যাডগুলো প্রাসঙ্গিক, সু-টাইমড, বা non-intrusive হত, কিন্তু "প্রগতি" এর despeate artificial intelligence, deep learning এবং অন্যান্য buzzwords-এর সত্ত্বেও, সেগুলো उनमें से কিছুই নেই। তারপর, আমাদের কাছে প্রাইভেসি এবং সেরকম।
অ্যাড দাতা এবং অ্যাড ব্লকারের মধ্যে লড়াই চলছে। এটি ধীরে ধীরে escalate করছে, কারণ আরও বেশি মানুষ aggressive in-yer-face অ্যাড মডেলের বিপক্ষে ফিরছেন। অধিকাংশ পার্টে, আপনি যদি আপনার ব্রাউজারে একটি অ্যাডব্লকিং এক্সটেনশন ব্যবহার করেন, আপনি সব সেট। কিন্তু তারপর, আপনি ব্রাউজার কোম্পানির দয়ায় আছেন এবং তারা কী অনুমতি দেয়, প্লাস এটি সব ব্রাউজার এবং/অথবা অপারেটিং সিস্টেমে সবসময় কাজ করে না। সমাধান হচ্ছে অ্যাড সার্ভারগুলোর নেটওয়ার্ক রিকোয়েস্ট সম্পূর্ণ ব্লক করা, এবং সেটি Pi-Hole করে। চলুন রিভিউ করি।

শুরু করা যাক
Pi-Hole ইন্টারনেট বিজ্ঞাপনদাতাদের জন্য একটি ব্ল্যাক হোল। এটি সফটওয়ার টুলের একটি সেট যা DNS রিকোয়েস্ট ব্লক করে ডোমেইনগুলোর যেগুলো আইডেন্টিফাইড হয়েছে অ্যাড সার্ভিং হিসেবে তাই আপনার ব্রাউজিং সেশন - বা যেকোনো ইন্টারনেট-ফেসিং অ্যাক্টিভিটি সেটি হোক - কখনো কোনো বিজ্ঞাপন অন্তর্ভুক্ত করে না। এটি একটি নেটওয়ার্ক-লেভেল সমাধান, এবং তেমনভাবে, এটি সব সিনেরিওর জন্য কাজ করা উচিত। সুবিধাগুলো, কম শব্দ ছাড়াও, কম ট্রাফিক ভলিউম, উন্নত গোপনীয়তা এবং সেরকম অন্তর্ভুক্ত করে।
এটি আমাকে আকর্ষণ করল, এবং আমি Pi-Hole সেটআপ করার সিদ্ধান্ত নিলাম। এখন, সাধারণত, Pi-Hole একটি appliance হিসেবে ব্যবহারের জন্য ডিজাইন করা। এর নাম ইঙ্গিত করে, আপনি একটি সস্তা Raspberry Pi ডিভাইস ব্যবহার করতে চাইতে পারেন, সেটাতে Pi-Hole ইনস্টল করুন, এবং তারপর এটিকে আপনার নেটওয়ার্ক ফিল্টার হিসেবে ব্যবহার করুন। সেইতে সমস্যা নম্বর এক আছে - আপনাকে নেটওয়ার্কিং-এর কিছু বোঝাপড়া দরকার Pi-Hole সঠিকভাবে কনফিগার করতে। সামগ্রিকভাবে, একটি সম্পূর্ণ Pi-Hole সমাধান কভার করে:
- একটি ডিভাইসের সেটআপ যা Pi-Hole সফটওয়ার চলাবে - এটি আপনার নেটওয়ার্কে একটি ডেডিকেটেড সিস্টেম হতে পারে, অথবা আপনি যেকোনো লিনাক্স চলমান মেশিনে Pi-hole কনফিগার করতে পারেন। উদাহরণস্বরূপ, আপনার যদি কয়েকটা লিনাক্স ল্যাপটপ বা ডেস্কটপ থাকে, প্রতিটি নিজের নেটওয়ার্ক ফিল্টার হতে পারে।
- পরবর্তী ধাপ হচ্ছে Pi-Hole কনফিগার করা DNS সার্ভার হিসেবে - মূলত, আমরা ডোমেইন নাম ব্যবহার করে ব্রাউজ করি IP ঠিকানার বদলে। মানুষ ইট মুচ ইজিয়ার পায় কিছু যেন dedoimedo.com বা example.com মনে রাখতে নम्बার সিকোয়েন্সের মত 1.2.3.4 বা সেরকম। এটি করা হয় Domain Name System (DNS) রেজোলিউশন সার্ভিসের মাধ্যমে, যা মানব-पাঠযোগ্য নামগুলোকে নম্বরে অনুবাদ করে। Pi-Hole এই পয়েন্টে তার ফিল্টারিং রুল প্রয়োগ করতে পারে - যদি এটি একটি রিকোয়েস্ট আইডেন্টিফাই করে যেটি মনে করে ইন্টারনেট বিজ্ঞাপনদাতাদের একটিতে বেলংস করে, এটি সেটি ড্রপ করতে পারে, এবং তাই এমন কন্টেন্ট কখনো সার্ভ হবে না। অবশ্যই, এতে false positivesও থাকতে পারে।
- শেষ ধাপ হচ্ছে অন্যান্য সিস্টেম কনফিগার করা Pi-Hole ব্যবহার করার জন্য তাদের DNS সার্ভার হিসেবে - আবারও, এতে নেটওয়ার্কিং এর কিছু জ্ঞান দরকার। কিন্তু এটি আসলে যেকোনো অপারেটিং সিস্টেমে প্রয়োগ করা যায়। যতক্ষণ Pi-Hole appliance-কে লিনাক্স হতে হবে, যেকোনো মেশিন তার DNS কনফিগারেশন পরিবর্তন করতে পারে appliance ব্যবহার করতে, এবং সেই পয়েন্ট থেকে, Pi-Hole মিডলম্যান হবে, নেটওয়ার্ক রিকোয়েস্ট ফিল্টার করে।
তাই আপনাকে মনে রাখতে হবে উপরের সবগুলো এক্সপার্টাইজ চায়। আপনি ক্যাজুয়ালি প্লাগ অ্যান্ড প্লে একটি এই ধরনের সমাধান আপনার সেটআপে করতে পারবেন না। কিন্তু আপনার যদি একটি nerdy বন্ধু থাকে, তারা আপনার জন্য এটি করতে পারেন। কতটা সহজ বা জটিল, যাক, চলুন বাকি পার্ট।
ইনস্টলেশন উইজার্ড
আমি স্ক্রিপ্টটি ডাউনলোড করলাম এবং রান করলাম। আপনি একটি টেক্সট-ভিত্তিক উইজার্ড পাবেন যা relative সিম্পল টু ফলো। আমি এটি KDE নিওনএ রান করলাম, এবং এটা শুধু সিস্টেম রিপোজিটরি থেকে সফটওয়ার ইনস্টল করল, তার নিজস্ব কম্পোনেন্টগুলো ছাড়া, যা GitHub থেকে আসে।



আপনাকে Pi-Hole কে বলতে হবে কী DNS ব্যবহার করতে। উদাহরণস্বরূপ, আপনি আপনার নিজস্ব রাউটার ব্যবহার করতে পারেন, যা টিপিক্যালি লিনাক্স সিস্টেমগুলো ব্যবহার করবে, কিছু যেন 192.168.1.1 বা 192.168.2.1 বা সেরকম। জিনিসগুলো systemd থাকায় কিছুটা বেশি কঠিন বোঝার জন্য, কিন্তু আমরা সেখানে পৌঁছাব। আপনার কিছু এক্সিস্টিং ইন্টারনেট DNS ব্যবহার করার অপশনও আছে (যেন Google বা CloudFlare)। আমি আমার কাস্টম সেটআপ দিয়ে শুরু করলাম।

যেকোনো অ্যাডব্লকারের মত, Pi-Hole লিস্ট ব্যবহার করে অ্যাড ব্লক করতে। এটি সমাধানের সবচেয়ে শক্তিশালী এবং সবচেয়ে কমজোর লিংক, কারণ যদি লিস্টগুলো আপ টু ডেট না থাকে, inaccurate হয়ে যায়, বা খারাপভাবে বানানো হয়, আপনার গ্যাপ বা false positives থাকতে পারে, যেখানে লেজিটিমেট ডোমেইন রিজেক্ট হয়। কিন্তু সেটি বিষয়ে, এটি ব্রাউজার এক্সটেনশন ভিয়া অ্যাডব্লকিং থেকে আলাদা নয়, এক্সপেট এটি কিছুটা আরও thorough, অতএব aggressive। অধিকাংশ ব্রাউজার এক্সটেনশন রুলস শুধু থার্ড-পার্টি ডোমেইনে প্রয়োগ করে, তাই এক্সপেক্টেড ডোমেইন মিসবিহেভ করার চান্স তুলনামূলকভাবে কম। Pi-Hole ফুলপ্রুফ হওয়ার জন্য বানানো, এবং সেটি মানে লেজিট সাইটগুলো লোড হতে বাধা দিতে পারে।

Web UI একটি সুন্দর জিনিস মনে হয়। আমি এটি কনফিগার করলাম।

এবং সেটিই ছিল। মনে হয় Pi-Hole ইনস্টল ও কনফিগার হয়ে গেল, এবং আমি এখন এটি ব্যবহার করতে পারি।
কি এটা কাজ করল?
নहीं। আমার ইন্টারনেট কানেক্টিভিটি ছিল না - نیم রেজোলিউশনে ব্যর্থতা। আমার লোকাল সিস্টেম - নিওন - নিজের ব্যবহার করছিল DNS হিসেবে (বরং ইনস্টল্ড Pi-Hole, যা রাউটার ব্যবহার করছিল), কিন্তু মনে হচ্ছে Pi-Hole তার রেজোলিউশন সার্ভিস প্রদান করছে না।
এই পয়েন্টে সমস্যা হচ্ছে - আপনি অনলাইন যেতে পারবেন না কারণ ইন্টারনেট নেই, তাই আপনি আপনার জন্য উত্তর খুঁজতে চাইলে আপনাকে অন্য একটি মেশিন দরকার। আমি Pi-Hole আনইনস্টল করার চেষ্টা করলাম, এবং এটি একটি সিম্পল এবং ক্লিন সমাধান ছিল, এবং কানেক্টিভিটি ইনস্ট্যান্টলি রিস্টোর হয়ে গেল। আমি আবার ইনস্টল করলাম, এবং একই ফলাফল পেলাম।
আমি কিছু কমান্ড-লাইন চেক ট্রাই করলাম। Pi-Hole-এর সাথে কয়েকটা কমান্ড আছে যা এনেবল, ডিজেবল, স্টার্ট نیم রেজোলিউশন সার্ভিস, চেক স্ট্যাটাস এবং সেরকম করতে দেয়। বের হয়েছে আমার pihole-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 সার্ভিস শুরু করার জন্য কোনো ইউনিট ফাইল নেই, বা এটি borked। অনলাইন সার্চ করলে, আমি শিখলাম সার্ভিস ফাইলটি পরিবর্তন করতে হবে। নামমাত্র, /etc/init.d/pihole-FTL-এর অধীনে, আমাকে একটি লাইন এডিট করতে হয়েছিল যা FTL invoke করে:
su -s /bin/sh -c "/usr/bin/pihole-FTL" "$FTLUSER"
শুধু এই লাইনে:
/usr/bin/pihole-FTL
এই পরিবর্তনের পর, Pi-Hole এরর ছাড়া стар্ট করল।
sudo pihole restartdns
[✓] Starting DNS service
Pi-Hole অ্যাড ব্লক করছিল না
আমার কানেক্টিভিটি ছিল, কিন্তু অ্যাডগুলো ছিল। Pi-Hole কোনো ফিল্টারিং করছে না। তাই আমি Web UI অ্যাক্সেস করার চেষ্টা করলাম দেখতে পাই কি কোনো পরিবর্তন ও টুইকিং করা যায় সেখানে। কিন্তু আমি Pi-Hole অ্যাড্রেসে যাওয়ার চেষ্টা করলাম, সেখানে কোনো ওয়েব সার্ভার লিসেন করছিল না। https://ip-address/admin এবং https://pi-hole/admin কিছুই করলো না।
আমি কমান্ড লাইনে আরও কিছু টেস্ট করলাম, এবং যেন হয়, lighttpd সার্ভিস রান করছিল না, যা ব্যাখ্যা করবে কেন আমার Web UI নেই। তাই কিছু আরো উইজার্ডরি করার টাইম, এবং আবার, ডকুমেন্টেশন এই বিষয়ে কিছুটা sparse। আমি আরও এরর পেলাম:
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.
এবার, যেহেতু আমার ইন্টারনেট ছিল, আমি অনলাইন সার্চ করলাম, এবং শীঘ্রই কারনটি পেলাম - যদিও এরর লগে কিছুই নেই যা সমাধান ইঙ্গিত করবে। এবং এখানে, আমি আবার নির্দেশ করতে চাই, systemd-এর undecipherable complexity। আমাকে একটি বাইনারি লগে ইনফরমেশন খুঁজতে হয়েছিল, এবং তারপরও, ইনফরমেশন useless ছিল।
আসলে আমার একটি প্যাকেজ মিসিং ছিল - gamin - কেন এটি dependency হিসেবে সাথে সাথে ইনস্টল হয়নি, কোনো আইডিয়া নেই। কিন্তু একবার আমার এটি ইনস্টল হয়ে গেলে, lighttpd ঠিকঠাক শুরু করল, এবং Web 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

Web UI লগইন এবং পাসওয়ার্ড
তবুও আমার অ্যাড ব্লক হচ্ছিল না। তাই আমি লগইন করার চেষ্টা করলাম, এবং বুঝলাম আমার আরেকটি সমস্যা আছে - আমি অ্যাডমিন পেজ অ্যাক্সেস করতে পারলাম না যেখানে আমি আসলে সব লগ এবং ডিটেইল চেক করতে পারতাম, এবং পরিবর্তন করতে পারতাম। আবার অনলাইন সার্চ করলে, আমি পেলাম যে আমাকে ডিফল্ট পাসওয়ার্ড রিসেট করতে হবে কমান্ড লাইন থেকে:
pihole -a -p
তब আমার Web UI সেটিংসে অ্যাক্সেস ছিল। এটি একটি সত্যিকারের সুন্দর এবং পাওয়ারফুল ইন্টারফেস। আপনাকে অনেক অপশন মেলে, যার মধ্যে Pi-Hole مؤقتভাবে বন্ধ করার ক্ষমতা, তাই আপনি যদি সমস্যা মোকাবিলা করেন, সব কিছু পরিবর্তন করার বদলে, আপনি শুধু ফিল্টারিং pause করতে পারেন। DNS সেটিংস নিয়ে খেলার দরকার নেই।
ব্লকলিস্ট পপুলেট করুন
ইন্টারফেসের মধ্য দিয়ে যাওয়ার সময়, আমি বুঝলাম আমার ব্লকলিস্টগুলো সব খালি। হ্যাঁ, এটি মেইন পেজ থেকে এভিডেন্ট, কিন্তু আপনাকে জানতে হবে আপনি কী খুঁজছেন। কেন Pi-Hole আপনাকে লিস্ট আপডেট করতে প্রম্পট করবে না বা আসলে সেটআপের অংশ হিসেবে এটি করবে না? আমি কমান্ড লাইন থেকে একটি ম্যানুয়াল আপডেট রান করলাম, এবং লিস্টগুলো জেনারেট হয়ে গেল।
pihole -g -f

সব ঠিক, এখন কি কাজ করল?
হ্যাঁ, এখন, এটি সุดিন কাজ করল! Pi-Hole এখন তার DNS কর্তব্য করছিল এবং ট্রাফিকও ফিল্টার করছিল। আমি বলতে চাই এটি effective এবং non-intrusive ছিল। এবং আমি ভুল না করলে, নেটওয়ার্ক সাইডে একটি slight পারফরম্যান্স বাস্টও ছিল, কারণ সিস্টেমকে কম কোয়েরি হ্যান্ডল করতে হয়েছিল এবং কম কন্টেন্ট সার্ভ করতে হয়েছিল। নিঃসন্দেহে, এমনকি কিছু innocent ব্রাউজিং-এও, ২০% সব কোয়েরি ব্লক হয়েছিল। যা খুব বেশি লাগে। কিন্তু এটি আধুনিক ইন্টারনেটের বর্তমান পরিস্থিতিও হাইলাইট করে। ১০০,০০০ এর ওপর ডোমেইন ব্লকলিস্টে থাকার ফ্যাক্টও এর भाग বলে। এটি gentlemen latency improvement-ও ব্যাখ্যা করে।

উপসংহার
দিনের শেষে, আমার Pi-hole রান করছিল, কিন্তু সেটআপ trivial-থেকে দূরে ছিল। চার বা পাঁচ কার্ডিনাল সমস্যা ছিল, এবং এই কনোই হওয়া উচিত নয়, কারণ ইনস্টলেশন উইজার্ড আলাদা চেকস থ্রু গিয়ে যেতে পারতো নিশ্চিত করতে যে জিনিসগুলো কাজ করছে। ফার্স্ট-টাইম রানের অংশ হতে পারে সার্ভিস চেক, এবং যদি সেখানে ইস্যু থাকে, কিছু সর্টের self-diagnosis নিশ্চিত করতে যে FTL আপ এবং রানিং। Web সার্ভিসের জন্যও একই। তারপর, পাসওয়ার্ড রিসেট এবং লিস্ট আপডেট। এই সব জিনিস অভিজ্ঞতাকে অনেক বেশি স্ট্রীমলাইনড করে দিত।
একটি প্রোডাক্ট হিসেবে, Pi-Hole একটি খুব সুন্দর এবং পাওয়ারফুল টুল। এটি তার কাজ অত্যন্ত ভালো করে, এটি দ্রুত, effective এবং robust, এবং Web UI সুন্দর ডিজাইন করা। আপনি ট্রাফিক সাইডেও কিছু ゲイン করেন, কারণ কম কন্টেন্ট সার্ভ করতে হয়, এবং কম কোয়েরি রেজলভ করতে হয়, অতএব পারফরম্যান্স উন্নতি যেসব জিনিসে গুরুত্বপূর্ণ। সেটআপ trivial নয় কিন্তু achievable, এবং আপনার নেটওয়ার্ক কীভাবে وায়ার আপ করবেন সেটি নিয়ে আপনার অনেক ফ্লেক্সিবিলিটি আছে। আপনি Pi-Hole কে একটি standalone সিস্টেম হিসেবে রাখতে পারেন, বা এটি আপনার বাসার সব ডিভাইস সার্ভ করতে পারে। সব মিলিয়ে, এটি doomsday weapon যদি এবং যখন ইন্টারনেট rogue হয়ে যায় আপনার ওপর। ভালো টেস্ট করার যোগ্য, কিন্তু থার্মোডাইনামিক্সের সেকেন্ড রুল মনে রাখবেন। আপনি trivial এবং complex একসাথে পাবেন না।
চিয়ার্স।