Wi-Fi बदलने के बाद SSID फ़ायरवॉल नियम ने फ़िल्टर करना बंद कर दिया
SSID पर टिका फ़ायरवॉल तब खुल जाता है जब Android कोई अज्ञात नेटवर्क नाम लौटाता है। पहचान को प्रवर्तन से अलग रखें और अज्ञात स्थिति को उसकी अपनी नीति दें।
नियम सरल था: ट्रैफ़िक तभी फ़िल्टर करो जब फ़ोन ऑफ़िस के Wi-Fi से जुड़ा हो। यह महीनों चला, और फिर एक सुबह फ़ोन उसी SSID पर उसी चाबी आइकन के साथ बैठा था और फ़िल्टरिंग रुक गई थी। नेटवर्क में कुछ नहीं बदला था; जो बदला था वह यह था कि क्या ऐप नेटवर्क का नाम देख सकता है। Android में, «मैं किस Wi-Fi पर हूँ» और «इस ट्रैफ़िक को रोको» दो अलग काम हैं, और जो फ़ायरवॉल इन्हें मिला देता है वह ठीक तब खुल जाता है जब नाम उपलब्ध नहीं रहता।
लक्षण: पहचान गायब होती है और नीति पीछे आती है
SSID नियम एक मान पढ़ता है और फिर शाखा चुनता है। जब पढ़ाई कुछ उपयोगी नहीं लौटाती, तो कोड को कुछ करना ही होता है, और सामान्य डिफ़ॉल्ट है «अपेक्षित नेटवर्क नहीं है, इसलिए फ़िल्टर न करो»। वही डिफ़ॉल्ट अनुमति की समस्या को ट्रैफ़िक लीक में बदल देता है। चाबी आइकन दिखता रहता है क्योंकि VPN सेवा अभी चल रही है; वह बस दूसरी शाखा लागू कर रही है।
घटनाओं के क्रम को देखें, नेटवर्क को नहीं। अस्वीकृत अनुमति संकेत, वह सिस्टम अपडेट जिसने SSID पहुँच को किसी दूसरी अनुमति के पीछे कर दिया, बंद स्थान सेवाएँ, या कार्य प्रोफ़ाइल की नीति में बदलाव, ये सब वही परिणाम दे सकते हैं जबकि फ़ोन उसी एक्सेस पॉइंट पर रहता है।
नाम अज्ञात क्यों लौट सकता है
WifiInfo.getSSID() वर्तमान नेटवर्क का सेवा-समूह पहचानकर्ता लौटाता है, और Android दस्तावेज़ करता है कि स्थान-संवेदनशील फ़ील्ड तक पहुँच अनुमति पर निर्भर है। जब पहुँच उपलब्ध नहीं होती, तो कॉल ज़ोर से विफल होने के बजाय UNKNOWN_SSID लौटाता है। इसलिए खाली या अज्ञात मान इस बात का प्रमाण नहीं है कि फ़ोन ने Wi-Fi छोड़ दिया; यह प्रमाण है कि ऐप नेटवर्क को वर्गीकृत नहीं कर सकता।
दो जाँचें इन स्थितियों को अलग करती हैं। पुष्टि करें कि फ़ोन जुड़ा है और देखें कि सिस्टम क्या बताता है, फिर पुष्टि करें कि ऐप के पास इस Android संस्करण में ज़रूरी अनुमति वास्तव में है:
adb shell cmd wifi status
adb shell dumpsys package <your.app> | grep -i -E "ACCESS_FINE_LOCATION|NEARBY_WIFI_DEVICES"
अगर स्टेटस पंक्ति जुड़ा नेटवर्क दिखाती है जबकि ऐप अज्ञात नाम देखता है, तो आपकी समस्या अनुमति या API स्तर की है, Wi-Fi की नहीं। फ़ायरवॉल नियमों को छूने से पहले इसे ठीक करें, क्योंकि आगे का हर नियम ऐसे मान के विरुद्ध आँका जाता है जिसे ऐप पढ़ नहीं सकता।
फ़िल्टरिंग वास्तव में कहाँ चलती है
स्थानीय Android फ़ायरवॉल आमतौर पर VpnService मॉडल का उपयोग करता है, ट्रैफ़िक को दूरस्थ सर्वर पर भेजे बिना: वह वर्चुअल इंटरफ़ेस लेता है, अपने नियम लागू करता है और जो अनुमति देता है उसे आगे भेजता है। प्लेटफ़ॉर्म प्रति उपयोगकर्ता प्रोफ़ाइल एक सक्रिय VPN सेवा की अनुमति देता है, और दूसरी पहली के ऊपर परत बनने के बजाय उसका स्थान ले लेती है। इसलिए अलग फ़ायरवॉल ऐप और अलग कार्य VPN दो-चरणीय श्रृंखला नहीं बनाते; उनमें से एक जीतता है।
यह SSID नियम के लिए मायने रखता है क्योंकि प्रवर्तन बिंदु और अवलोकन बिंदु अलग घटक हैं। VpnService तय करता है कि डिवाइस से क्या निकलेगा; Wi-Fi API केवल एक लेबल देता है। ऐप सही ढंग से लागू कर सकता है और गलत वर्गीकृत कर सकता है, और इस लेख की विफलता ठीक यही है।
अज्ञात को उसकी अपनी नीति दें
नेटवर्क पहचान को तीन स्थितियाँ मानें, और नियम जारी करने से पहले हर एक की नीति लिख लें। तीसरी स्थिति वही है जो भूली जाती है, और हमलावर या गलत कॉन्फ़िगरेशन आपको ठीक उसी में डालता है।
| Observation | Policy to specify |
|---|---|
| Expected SSID is readable | The explicit filtering policy you designed |
| A different SSID is readable | The default policy for untrusted networks |
| Unknown, changing or unreadable | Fail closed until classification is reliable |
बंद होकर विफल होने का अर्थ है कि अज्ञात स्थिति सबसे सुविधाजनक नहीं बल्कि सबसे कठोर उचित नीति विरासत में लेती है। अगर इससे नए नेटवर्क पर फ़ोन बेकार हो जाता है, तो सही समाधान जानबूझकर और दिखने वाला अपवाद है, खाली मान की जाँच में छिपा मौन विश्वास-निर्णय नहीं।
जाना-पहचाना SSID एक लेबल है, नेटवर्क ऑपरेटर का प्रमाण नहीं। कोई भी ऑफ़िस के नाम से एक्सेस पॉइंट चला सकता है, इसलिए नाम का मेल कभी भी संवेदनशील सत्र और अविश्वसनीय खंड के बीच एकमात्र चीज़ नहीं होना चाहिए।
स्थिर स्थिति नहीं, संक्रमणों की जाँच करें
स्थिर स्थिति की जाँच उस नेटवर्क पर पास होती है जहाँ आपने नियम बनाया। विफलताएँ संक्रमणों में रहती हैं: अस्वीकृत अनुमति, Wi-Fi से मोबाइल, एक SSID से दूसरे, VPN सेवा का पुनः आरंभ, और दूसरा VPN ऐप इंटरफ़ेस पर कब्ज़ा करना। हर एक के लिए तय करें कि मौजूदा कनेक्शन फिर से देखे जाते हैं या नहीं और जब स्थिति अज्ञात हो तब संरक्षित ट्रैफ़िक अवरुद्ध रहता है या नहीं।
परिणाम तीन वाक्यों में लिखें: देखी गई शर्त, निर्णय लागू करने वाला घटक, और जानबूझकर किया गया विकल्प। इन तीनों में से कोई छूटे तो नियम अभी नीति नहीं है; वह एक अनुमान है जो ऑफ़िस नेटवर्क पर संयोग से काम करता है।