लोकल नेटवर्क की अनुमति

लोकल एरिया नेटवर्क (लैन) पर मौजूद डिवाइसों को, INTERNET अनुमति वाला कोई भी ऐप्लिकेशन ऐक्सेस कर सकता है. इससे ऐप्लिकेशन के लिए, स्थानीय डिवाइसों से कनेक्ट करना आसान हो जाता है. हालांकि, इससे निजता से जुड़ी समस्याएं भी हो सकती हैं. जैसे, उपयोगकर्ता का फ़िंगरप्रिंट बनाना और जगह की जानकारी के लिए प्रॉक्सी के तौर पर काम करना.

Local Network Protections प्रोजेक्ट का मकसद, उपयोगकर्ता की निजता को सुरक्षित रखना है. इसके लिए, लोकल नेटवर्क के ऐक्सेस को नई रनटाइम अनुमति के पीछे रखा जाता है.

असर

Android 16 में, यह अनुमति ऑप्ट-इन करने की सुविधा है. इसका मतलब है कि सिर्फ़ उन ऐप्लिकेशन पर इसका असर पड़ेगा जिन्होंने ऑप्ट-इन किया है. ऑप्ट-इन करने का मकसद, ऐप्लिकेशन डेवलपर को यह समझने में मदद करना है कि उनके ऐप्लिकेशन के कौनसे हिस्से, लोकल नेटवर्क के इंप्लिसिट ऐक्सेस पर निर्भर करते हैं. इससे वे Android के आने वाले वर्शन में, इन हिस्सों को अनुमति से सुरक्षित रखने के लिए तैयार हो सकते हैं.

अगर ऐप्लिकेशन, उपयोगकर्ता के लोकल नेटवर्क को इन तरीकों से ऐक्सेस करते हैं, तो उन पर असर पड़ेगा:

  • लोकल नेटवर्क पतों पर रॉ सॉकेट का सीधे तौर पर या लाइब्रेरी के ज़रिए इस्तेमाल करना. उदाहरण के लिए, Multicast DNS (mDNS) या Simple Service Discovery Protocol (SSDP).
  • फ़्रेमवर्क-लेवल की ऐसी क्लास का इस्तेमाल करना जो लोकल नेटवर्क को ऐक्सेस करती हैं. उदाहरण के लिए, NsdManager.

असर की जानकारी

लोकल नेटवर्क के पते से आने-जाने वाले ट्रैफ़िक के लिए, लोकल नेटवर्क के ऐक्सेस की अनुमति ज़रूरी है. यहां दी गई टेबल में, कुछ सामान्य मामलों के बारे में बताया गया है:

App Low Level Network Operation लोकल नेटवर्क का ऐक्सेस देने की अनुमति ज़रूरी है
आउटगोइंग टीसीपी कनेक्शन बनाना हां
आने वाले टीसीपी कनेक्शन को स्वीकार करना हां
यूडीपी यूनिकास्ट, मल्टीकास्ट, ब्रॉडकास्ट भेजना हां
यूडीपी यूनिकास्ट, मल्टीकास्ट, ब्रॉडकास्ट पाना हां

ये पाबंदियां, नेटवर्किंग स्टैक में गहराई से लागू की जाती हैं. इसलिए, ये सभी नेटवर्किंग एपीआई पर लागू होती हैं. इसमें प्लैटफ़ॉर्म या मैनेज किए गए कोड में बनाए गए सॉकेट, Cronet और OkHttp जैसी नेटवर्किंग लाइब्रेरी, और उन पर लागू किए गए कोई भी एपीआई शामिल हैं. लोकल नेटवर्क पर मौजूद उन सेवाओं को हल करने की कोशिश करना जिनके नाम में .local सफ़िक्स है, इसके लिए लोकल नेटवर्क का ऐक्सेस ज़रूरी है.

ऊपर दिए गए नियमों के अपवाद:

  • अगर किसी डिवाइस का डीएनएस सर्वर लोकल नेटवर्क पर है, तो उसके साथ पोर्ट 53 पर होने वाले ट्रैफ़िक के लिए, लोकल नेटवर्क का ऐक्सेस पाने की अनुमति की ज़रूरत नहीं होती.
  • जिन ऐप्लिकेशन में आउटपुट स्विचर को इन-ऐप्लिकेशन पिकर के तौर पर इस्तेमाल किया जाता है उन्हें लोकल नेटवर्क की अनुमतियों की ज़रूरत नहीं होगी. इस बारे में ज़्यादा जानकारी, बाद में रिलीज़ होने वाले वर्शन में दी जाएगी.

मार्गदर्शन

लोकल नेटवर्क ऐक्सेस से जुड़ी पाबंदियों के लिए ऑप्ट इन करने के लिए, यह तरीका अपनाएं:

  1. अपने डिवाइस पर, Android 16 Beta 3 या इसके बाद के वर्शन वाला बिल्ड फ़्लैश करें
  2. टेस्ट किया जाने वाला ऐप्लिकेशन इंस्टॉल करना
  3. adb का इस्तेमाल करके, Appcompat कॉन्फ़िगरेशन को टॉगल करना

    adb shell am compat enable RESTRICT_LOCAL_NETWORK <package_name>
    
  4. डिवाइस को रीबूट करें

अब आपके ऐप्लिकेशन के पास लोकल नेटवर्क का ऐक्सेस नहीं है. साथ ही, लोकल नेटवर्क को ऐक्सेस करने की किसी भी कोशिश से सॉकेट से जुड़ी गड़बड़ियां होंगी. अगर ऐसे एपीआई का इस्तेमाल किया जा रहा है जो आपके ऐप्लिकेशन की प्रोसेस के बाहर लोकल नेटवर्क ऑपरेशन करते हैं—उदाहरण के लिए, NsdManager—तो ऑप्ट-इन करने के दौरान उन पर कोई असर नहीं पड़ता.

ऐक्सेस वापस पाने के लिए, आपको अपने ऐप्लिकेशन को NEARBY_WIFI_DEVICES की अनुमति देनी होगी.

  • पक्का करें कि ऐप्लिकेशन ने अपने manifest में NEARBY_WIFI_DEVICES अनुमति का एलान किया हो.
  • सेटिंग > ऐप्लिकेशन > [ऐप्लिकेशन का नाम] > अनुमतियां > आस-पास के डिवाइस > अनुमति दें पर जाएं

अब आपके ऐप्लिकेशन का ऐक्सेस, लोकल नेटवर्क पर वापस आ जाना चाहिए. साथ ही, आपके सभी इस्तेमाल के उदाहरण, ऐप्लिकेशन में ऑप्ट इन करने से पहले की तरह काम करने चाहिए. यहां बताया गया है कि ऐप्लिकेशन नेटवर्क ट्रैफ़िक पर इसका क्या असर पड़ेगा.

अनुमति आउटबाउंड LAN अनुरोध आउटबाउंड/इनबाउंड इंटरनेट अनुरोध इनबाउंड लैन अनुरोध
प्रदान किया गया Works Works Works
अनुमति नहीं दी गई विफल Works विफल

Appcompat कॉन्फ़िगरेशन को टॉगल-ऑफ़ करने के लिए, इस कमांड का इस्तेमाल करें

adb shell am compat disable RESTRICT_LOCAL_NETWORK <package_name>

गड़बड़ियां

अगर अनुमति न होने की वजह से, लोकल नेटवर्क ऐक्सेस करने का अनुरोध पूरा नहीं होता है, तो:

  • टीसीपी कनेक्शन की वजह से आम तौर पर, टाइमआउट की गड़बड़ी होती है.
  • आम तौर पर, यूडीपी से जुड़ी गड़बड़ियों और अनुमति न मिलने की वजह से, EPERM गड़बड़ी कोड मिलता है

बग

इनके लिए गड़बड़ियों की शिकायत करें और सुझाव, शिकायत या राय दें:

  • LAN ऐक्सेस में अंतर (आपको लगता है कि किसी ऐक्सेस को "लोकल नेटवर्क" ऐक्सेस नहीं माना जाना चाहिए)
  • ऐसे बग जिनमें LAN का ऐक्सेस ब्लॉक होना चाहिए, लेकिन नहीं है
  • ऐसे बग जिनमें LAN का ऐक्सेस ब्लॉक नहीं किया जाना चाहिए, लेकिन ब्लॉक किया गया है

इस बदलाव से इन पर कोई असर नहीं पड़ना चाहिए:

  • इंटरनेट का ऐक्सेस
  • मोबाइल नेटवर्क