নিয়মটি সহজ ছিল: কেবল অফিসের ওয়াই-ফাইতে সংযুক্ত থাকার সময় ট্রাফিক ফিল্টার করা। মাসের পর মাস এটি টিকে ছিল, তারপর এক সকালে ফোনটি একই SSID-তে, একই চাবি আইকন নিয়ে বসে থাকল, কিন্তু ফিল্টারিং থেমে গিয়েছিল। নেটওয়ার্কে কিছুই বদলায়নি; বদলেছিল অ্যাপটি নেটওয়ার্কের নাম দেখতে পাচ্ছে কি না। Android-এ «আমি কোন ওয়াই-ফাইতে আছি» আর «এই ট্রাফিক আটকাও» দুটি আলাদা কাজ, আর যে ফায়ারওয়াল এদের মিশিয়ে ফেলে সে ঠিক তখনই খোলা হয়ে পড়ে যখন নামটি পাওয়া যায় না।

লক্ষণ: পরিচয় হারায়, নীতি তার পিছু নেয়

SSID নিয়ম একটি মান পড়ে তারপর একটি শাখা বেছে নেয়। যখন পড়াটি কাজের কিছু ফেরত দেয় না, কোডকে কিছু একটা করতে হয়, আর সাধারণ ডিফল্ট হলো «প্রত্যাশিত নেটওয়ার্ক নয়, তাই ফিল্টার নয়»। ওই ডিফল্ট একটি অনুমতি-সমস্যাকে ট্রাফিক ফাঁসে পরিণত করে। চাবি আইকন দৃশ্যমান থাকে কারণ VPN সেবা এখনও চলছে; সে কেবল ভিন্ন শাখা প্রয়োগ করছে।

নেটওয়ার্কের দিকে নয়, ঘটনার ক্রমের দিকে তাকান। প্রত্যাখ্যাত অনুমতি প্রম্পট, SSID অ্যাক্সেসকে অন্য অনুমতির পেছনে সরিয়ে দেওয়া সিস্টেম আপডেট, বন্ধ করা লোকেশন সেবা, বা ওয়ার্ক প্রোফাইল নীতির পরিবর্তন, সবই একই ফল দিতে পারে, অথচ ফোনটি একই অ্যাক্সেস পয়েন্টে থাকে।

নামটি কেন অজানা হয়ে ফিরে আসতে পারে

WifiInfo.getSSID() বর্তমান নেটওয়ার্কের সার্ভিস-সেট আইডেন্টিফায়ার ফেরত দেয়, আর Android নথিভুক্ত করে যে লোকেশন-সংবেদনশীল ক্ষেত্রগুলিতে অ্যাক্সেস অনুমতির উপর নির্ভর করে। অ্যাক্সেস না থাকলে কলটি জোরে ব্যর্থ না হয়ে UNKNOWN_SSID ফেরত দেয়। তাই খালি বা অজানা মান ফোনটি ওয়াই-ফাই ছেড়েছে তার প্রমাণ নয়; এটি প্রমাণ যে অ্যাপটি নেটওয়ার্কটি শ্রেণিবদ্ধ করতে পারে না।

দুটি পরীক্ষা এই অবস্থাগুলো আলাদা করে। ফোনটি সংযুক্ত কি না নিশ্চিত করুন এবং সিস্টেম কী জানায় দেখুন, তারপর নিশ্চিত করুন যে অ্যাপটির এই Android সংস্করণে প্রয়োজনীয় অনুমতি সত্যিই আছে:

adb shell cmd wifi status
adb shell dumpsys package <your.app> | grep -i -E "ACCESS_FINE_LOCATION|NEARBY_WIFI_DEVICES"

যদি স্ট্যাটাস লাইনে সংযুক্ত নেটওয়ার্ক দেখায় অথচ অ্যাপটি অজানা নাম দেখে, তবে আপনার সমস্যা অনুমতি বা API স্তরের, ওয়াই-ফাইয়ের নয়। ফায়ারওয়াল নিয়মে হাত দেওয়ার আগে এটি ঠিক করুন, কারণ পরবর্তী প্রতিটি নিয়ম এমন একটি মানের বিপরীতে মূল্যায়িত হয় যা অ্যাপ পড়তে পারে না।

ফিল্টারিং আসলে কোথায় চলে

স্থানীয় Android ফায়ারওয়াল সাধারণত ট্রাফিক দূরবর্তী সার্ভারে না পাঠিয়ে VpnService মডেল ব্যবহার করে: এটি ভার্চুয়াল ইন্টারফেস নেয়, নিজের নিয়ম প্রয়োগ করে এবং যা অনুমোদন করে তা পাঠিয়ে দেয়। প্ল্যাটফর্মটি প্রতি ব্যবহারকারী প্রোফাইলে একটি সক্রিয় VPN সেবা অনুমোদন করে, আর দ্বিতীয়টি প্রথমটির উপরে স্তর না পড়ে সেটিকে প্রতিস্থাপন করে। তাই আলাদা ফায়ারওয়াল অ্যাপ আর আলাদা কাজের VPN দুই ধাপের শৃঙ্খল তৈরি করে না; তাদের একটি জেতে।

এটি SSID নিয়মের জন্য গুরুত্বপূর্ণ, কারণ প্রয়োগের বিন্দু ও পর্যবেক্ষণের বিন্দু আলাদা উপাদান। ডিভাইস থেকে কী বেরোবে তা VpnService ঠিক করে; ওয়াই-ফাই API কেবল একটি লেবেল দেয়। অ্যাপ সঠিকভাবে প্রয়োগ করতে পারে আর ভুলভাবে শ্রেণিবদ্ধ করতে পারে, আর এই নিবন্ধের ব্যর্থতা ঠিক তাই।

অজানাকে নিজস্ব নীতি দিন

নেটওয়ার্ক পরিচয়কে তিনটি অবস্থা হিসেবে ধরুন, আর নিয়মটি প্রকাশ করার আগে প্রতিটির নীতি লিখে রাখুন। তৃতীয় অবস্থাটিই ভুলে যাওয়া হয়, আর আক্রমণকারী বা ভুল কনফিগারেশন আপনাকে ঠিক সেখানেই ফেলে।

ObservationPolicy to specify
Expected SSID is readableThe explicit filtering policy you designed
A different SSID is readableThe default policy for untrusted networks
Unknown, changing or unreadableFail closed until classification is reliable

বন্ধ থাকা মানে অজানা অবস্থা সবচেয়ে সুবিধাজনক নয়, বরং সবচেয়ে কঠোর যুক্তিসঙ্গত নীতি উত্তরাধিকার করে। যদি তাতে নতুন নেটওয়ার্কে ফোনটি অব্যবহারযোগ্য হয়ে যায়, সঠিক সমাধান হলো ইচ্ছাকৃত ও দৃশ্যমান ব্যতিক্রম, শূন্য-মান পরীক্ষায় লুকানো নীরব বিশ্বাস-সিদ্ধান্ত নয়।

পরিচিত SSID একটি লেবেল, নেটওয়ার্ক অপারেটরের প্রমাণ নয়। যে কেউ অফিসের নামে একটি অ্যাক্সেস পয়েন্ট চালাতে পারে, তাই নামের মিলই সংবেদনশীল সেশন ও অবিশ্বস্ত সেগমেন্টের মধ্যে একমাত্র বাধা হওয়া উচিত নয়।

স্থির অবস্থা নয়, রূপান্তরগুলো পরীক্ষা করুন

স্থির অবস্থার পরীক্ষা সেই নেটওয়ার্কে পাস করে যেখানে আপনি নিয়মটি বানিয়েছেন। ব্যর্থতাগুলো থাকে রূপান্তরে: অনুমতি প্রত্যাখ্যান, ওয়াই-ফাই থেকে সেলুলার, এক SSID থেকে অন্য SSID, VPN সেবা পুনরায় চালু, এবং অন্য একটি VPN অ্যাপ ইন্টারফেস দখল করা। প্রতিটির জন্য ঠিক করুন বিদ্যমান সংযোগগুলো পুনর্বিবেচিত হবে কি না এবং অজানা অবস্থায় সুরক্ষিত ট্রাফিক আটকানো থাকবে কি না।

ফলাফলটি তিনটি বাক্যে লিখুন: পর্যবেক্ষিত শর্ত, যে উপাদান সিদ্ধান্তটি প্রয়োগ করে, এবং ইচ্ছাকৃত বিকল্প পথ। এদের একটি অনুপস্থিত থাকলে নিয়মটি এখনও নীতি নয়; এটি একটি অনুমান যা অফিসের নেটওয়ার্কে দৈবক্রমে কাজ করে।

সম্পর্কিত নিবন্ধ