VPN DNS ফিল্টার: নাম ব্লক করলে বিজ্ঞাপন ব্লক হয় না
একটি dnsmasq নিয়ম নামের উত্তর দেয় NXDOMAIN দিয়ে; এটি পৃষ্ঠাটি কখনও পড়ে না। বিজ্ঞাপন সরানোর প্রতিশ্রুতি দেওয়ার আগে ক্লায়েন্ট-সাইড ব্লকার কী করে তা এর সঙ্গে তুলনা করুন।
একটি dnsmasq লাইন একটি নামের উত্তর NXDOMAIN দিয়ে দিতে পারে, আর পুরো প্রক্রিয়াটি এতটুকুই। এটি কখনও HTML পড়ে না, অনুরোধের পথ দেখে না, এবং কোনো অ্যাপ্লিকেশন ইতিমধ্যে খোলা একটি সংযোগ নিয়ে কী করে তা দেখে না। তাই এটি একটি ব্রাউজার এক্সটেনশনের সঙ্গে তুলনা করা মানে দুটি ভিন্ন কাজের তুলনা করা। একটি সিদ্ধান্ত নেয় নামটি রিজলভ হবে কি না; অন্যটি সিদ্ধান্ত নেয় তার পরে কী ঘটবে।
একটি নাম ফিল্টার আসলে কী নিয়ন্ত্রণ করে
শেষ স্ল্যাশের পরে কিছু না থাকা address=/metrics.example/ অপশনটি রিজলভারকে ওই নাম ও তার সাবডোমেইনের জন্য NXDOMAIN ফেরাতে বাধ্য করে। ঠিকানাটি খালি রাখাই গুরুত্বপূর্ণ অংশ: এতে ক্লায়েন্টদের অসম্পর্কিত কোনো প্রতিস্থাপন সার্ভারে পাঠানো হয় না বা লুপব্যাক ঠিকানাকে প্রকৃত গন্তব্য বলে দেখানো হয় না। dnsmasq-এর নির্দেশিকা এই রূপটিকে রিডাইরেক্ট নয়, বরং একটি নেতিবাচক উত্তর হিসেবে বর্ণনা করে।
নিয়মটি যা করতে পারে সবই ওই একক সিদ্ধান্ত থেকে আসে। যে ক্লায়েন্ট এই রিজলভারকে জিজ্ঞাসা করে সে নেতিবাচক উত্তর পায়; যে ক্লায়েন্ট অন্য একটি রিজলভারকে জিজ্ঞাসা করে সে সেই রিজলভার যা বলে তাই পায়। ফিল্টারটি জানে না অ্যাপ্লিকেশনটি কোন পথ, কোয়েরি স্ট্রিং বা অ্যাকাউন্ট ব্যবহার করত।
এই সূক্ষ্মতা গুরুত্বপূর্ণ, কারণ একটি হোস্টনেম প্রায়ই একাধিক উদ্দেশ্যে কাজ করে। সাইন-ইন এন্ডপয়েন্ট, ছবি ও ট্র্যাকিং একটি ডোমেইন ভাগ করতে পারে, আর পুরো নাম সরিয়ে দেওয়া একটি নিয়ম সঙ্গে একটি কার্যপ্রবাহও সরিয়ে দিতে পারে। নাম-স্তরের নীতিকে এই বিনিময় মেনে নিতে হবে বা আরও সংকীর্ণ নাম বেছে নিতে হবে।
ক্লায়েন্ট-সাইড ব্লকার কোথায় আলাদা
একটি ব্রাউজার এক্সটেনশন অনুরোধটি বের হওয়ার আগেই দেখে, তাই এটি URL পথ মেলাতে পারে, নির্দিষ্ট অনুরোধ বাতিল করতে পারে এবং যে উপাদানটি ফলাফল দেখাত তা লুকাতে পারে। এটি example.com/article অনুমোদন করে example.com/ads/ প্রত্যাখ্যান করতে পারে, যা কোনো DNS উত্তর প্রকাশ করতে পারে না। পথ-স্তরের এই দৃষ্টিভঙ্গিই সেই সামর্থ্য যা রিজলভারের আদৌ নেই। এ কারণেই একটি টুলের জন্য তৈরি ফিল্টার তালিকা অন্যটিতে একইভাবে আচরণ করে না।
খরচটি হলো পরিধি। ওই সুরক্ষা একটি ব্রাউজারে, একটি প্রোফাইলে, একটি ডিভাইসে বাস করে, এবং ব্যবহারকারী অন্য অ্যাপ্লিকেশনে গেলেই তা হারিয়ে যায়। গেটওয়েতে কনফিগার করা DNS ফিল্টার গেটওয়ের রিজলভার ব্যবহার করা প্রতিটি ডিভাইস কভার করে, এমন ডিভাইসও যেখানে কোনো এক্সটেনশন ইনস্টল করা যায় না।
কোনোটিই একা সম্পূর্ণ নয়। একটি DNS ফিল্টার এমন শনাক্তকারী সরাতে পারে না যা পৃষ্ঠা ইতিমধ্যে পাঠিয়েছে, আর একটি ব্রাউজার এক্সটেনশন এমন অ্যাপ্লিকেশন রক্ষা করতে পারে না যা এটি কখনও লোড করে না।
রিজলভারের পথই ঠিক করে এর কোনোটি প্রযোজ্য হয় কি না
একটি VPN DNS সার্ভার ঘোষণা করেও প্রতিটি কোয়েরি না পেতে পারে। এনক্রিপ্টেড DNS কনফিগার করা একটি ব্রাউজার, নিজস্ব রিজলভারসহ একটি অ্যাপ্লিকেশন, বা গেটওয়ে বাদ দেওয়া নেটওয়ার্ক পথে থাকা একটি ডিভাইস—সবই অন্য জায়গায় খুঁজবে। মোবাইল প্ল্যাটফর্মগুলো ক্রমশ একটি প্রাইভেট-DNS সেটিং দিচ্ছে যা টানেলের প্রস্তাবকে চুপচাপ অগ্রাহ্য করে।
তাই নীতি নয়, পথ পরীক্ষা করুন। গেটওয়ে থেকে সরাসরি অভীষ্ট রিজলভারকে জিজ্ঞাসা করুন, তারপর একটি ক্লায়েন্ট থেকে জিজ্ঞাসা করে তুলনা করুন, তারপর দেখুন যে নামটি ব্লক হওয়া উচিত তা ব্যবহারকারীর চালানো অ্যাপ্লিকেশনে সত্যিই ব্যর্থ হয় কি না।
ক্যাশ করা উত্তর ও খোলা সকেট এটিকে কোলাহলপূর্ণ করে। যে পৃষ্ঠা ইতিমধ্যে তার রিসোর্স লোড করেছে তা নিয়ম বদলানোর পরেও কাজ চালিয়ে যাবে, তাই পুরোনো ট্যাব রিলোড করার চেয়ে নতুন সংযোগ ভালো পরীক্ষা।
ফলাফল ঘোষণার আগে দুই দিকই পরীক্ষা করুন
ইচ্ছাকৃতভাবে ব্লক করা একটি ডকুমেন্টেশন নাম, অনুমোদিত একটি পাবলিক নাম এবং সেবার প্রয়োজনীয় একটি প্রাইভেট নাম ব্যবহার করুন:
$ dig +short metrics.example @10.40.0.53
$ dig +short example.com @10.40.0.53
$ dig +short intranet.corp.internal @10.40.0.53
ব্লক করা নামের জন্য খালি উত্তর, পাবলিক নামের জন্য স্বাভাবিক ঠিকানা এবং অভ্যন্তরীণ নামের জন্য প্রাইভেট ঠিকানা—একত্রে দেখায় যে ফিল্টারিং, আপস্ট্রিম রিজলিউশন ও স্থানীয় রেকর্ড সবই কাজ করছে। তিনটিই ব্যর্থ হলে আপনি ফিল্টার নয়, আপস্ট্রিম বা লিসেনার সমস্যা দেখছেন।
আপনি ভেতরে যা প্রকাশ করেন তাতে দাবিটি সংকীর্ণ রাখুন। এটি রিজলভারে ডোমেইন ফিল্টারিং, কনটেন্ট পরিদর্শন নয়, পথ ফিল্টারিং নয়, এবং কেউ ট্র্যাক হচ্ছে না এমন প্রতিশ্রুতিও নয়। নীতির মালিক, ব্যতিক্রমের পথ এবং কোয়েরি সংরক্ষণের মেয়াদ নিয়মের পাশে লিখুন, কারণ প্রতিটি লুকআপ লগ করা ফিল্টারের নিজস্ব গোপনীয়তা খরচ আছে।