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

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

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

असर

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

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

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

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

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

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

ये पाबंदियां, नेटवर्किंग स्टैक में गहराई से लागू की जाती हैं. इसलिए, ये सभी नेटवर्किंग एपीआई पर लागू होती हैं. इसमें प्लैटफ़ॉर्म या मैनेज किए गए कोड में बनाए गए सॉकेट, 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>

गड़बड़ियां

इन पाबंदियों की वजह से होने वाली गड़बड़ियों को कॉलिंग सॉकेट पर वापस भेज दिया जाएगा. ऐसा तब होगा, जब वह लोकल नेटवर्क पते पर send या send के किसी वैरिएंट को शुरू करेगा.

गड़बड़ियों के उदाहरण:

sendto failed: EPERM (Operation not permitted)

sendto failed: ECONNABORTED (Operation not permitted)

बग

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

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

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

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