إذن الوصول إلى الشبكة المحلية

يمكن لأي تطبيق لديه الإذن INTERNET الوصول إلى الأجهزة على شبكة LAN. يسهّل ذلك على التطبيقات الاتصال بالأجهزة المحلية، ولكنه يتضمن أيضًا آثارًا على الخصوصية، مثل إنشاء بصمة للمستخدم واستخدامه كأحد العوامل الوسيطة للموقع الجغرافي.

يهدف مشروع "وسائل حماية الشبكة المحلية" إلى حماية خصوصية المستخدم من خلال حظر الوصول إلى الشبكة المحلية من خلال إذن تشغيل جديد.

التأثير

في نظام التشغيل Android 16، يكون هذا الإذن ميزة اختيارية، ما يعني أنّه لن يتأثّر سوى التطبيقات التي توافق على تفعيله. يهدف هذا الإجراء إلى مساعدة مطوّري التطبيقات في معرفة أجزاء تطبيقاتهم التي تعتمد على الوصول التلقائي إلى الشبكة المحلية، وذلك كي يتمكّنوا من تأمين أذونات الوصول إليها في إصدار Android المستقبلي.

ستتأثر التطبيقات إذا كانت تتصل بالشبكة المحلية للمستخدم باستخدام:

  • الاستخدام المباشر أو من خلال المكتبة لمنافذ الاتصال الأوّلية على عناوين الشبكة المحلية (مثل بروتوكول mDNS أو بروتوكول اكتشاف الخدمة SSDP)
  • استخدام فئات على مستوى إطار العمل تتصل بالشبكة المحلية (مثل NsdManager)

تفاصيل التأثير

تتطلّب حركة البيانات من عنوان شبكة محلية وإليه إذنًا بالوصول إلى الشبكة المحلية. يسرد الجدول التالي بعض الحالات الشائعة:

تشغيل الشبكة على مستوى منخفض في التطبيق يجب منح إذن الوصول إلى الشبكة المحلية
إجراء اتصال TCP صادر نعم
قبول اتصال TCP وارد نعم
إرسال بث أحادي أو بث متعدد أو بث عبر بروتوكول UDP نعم
تلقّي بث أحادي أو بث متعدد أو بث عادي عبر بروتوكول UDP نعم

يتم تنفيذ هذه القيود في عمق حِزمة الشبكات، وبالتالي تنطبق على جميع واجهات برمجة تطبيقات الشبكات. ويشمل ذلك مآخذ التوصيل التي تم إنشاؤها في منصّة أو الرمز المُدار، ومكتبات الشبكات مثل Cronet وOkHttp، وأي واجهات برمجة تطبيقات تم تنفيذها فوق هذه العناصر. ستتطلّب محاولة حلّ الخدمات على الشبكة المحلية (أي الخدمات التي تحتوي على اللاحقة ‎.local) الحصول على إذن بالوصول إلى الشبكة المحلية.

.

استثناءات القواعد السابقة:

  • إذا كان خادم نظام أسماء النطاقات (DNS) للجهاز متصلاً بشبكة محلية، لا تتطلّب حركة البيانات الواردة منه أو الصادرة عنه (على المنفذ 53) إذن الوصول إلى الشبكة المحلية.
  • لن تحتاج التطبيقات التي تستخدم "أداة تبديل الإخراج" كأداة اختيار داخل التطبيق إلى أذونات الشبكة المحلية (ستتوفّر المزيد من الإرشادات في إصدار لاحق).

إرشادات

لتفعيل قيود الشبكة المحلية، اتّبِع الخطوات التالية:

  1. فلاش جهازك لتثبيت الإصدار 3 من الإصدار التجريبي من Android 16 أو إصدار أحدث
  2. تثبيت التطبيق المطلوب اختباره
  3. تفعيل إعدادات Appcompat باستخدام adb

    adb shell am compat enable RESTRICT_LOCAL_NETWORK <package_name>
    
  4. إعادة تشغيل الجهاز

تم الآن حظر وصول تطبيقك إلى الشبكة المحلية، وأي محاولة للوصول إلى الشبكة المحلية ستؤدي إلى أخطاء في المقبس. إذا كنت تستخدِم واجهات برمجة تطبيقات تُجري عمليات على الشبكة المحلية خارج عملية تطبيقك (مثل NsdManager)، لن تتأثّر هذه العمليات أثناء تفعيل الميزة.

لاستعادة إمكانية الوصول، يجب منح تطبيقك الإذن NEARBY_WIFI_DEVICES.

  • تأكَّد من أنّ التطبيق يعلن عن إذن NEARBY_WIFI_DEVICES في ملف البيان الخاص به.
  • انتقِل إلى الإعدادات > التطبيقات > [اسم التطبيق] > الأذونات > الأجهزة المجاورة > السماح.

من المفترض أن يكون بإمكان تطبيقك الآن الوصول إلى الشبكة المحلية وأن تعمل جميع السيناريوهات كما كانت قبل تفعيل التطبيق. في ما يلي كيفية تأثُّر عدد الزيارات الواردة من شبكة التطبيقات:

الإذن طلب شبكة LAN للاتصال بالشبكة الخارجية طلب الإنترنت الصادر/الوارد طلب شبكة 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)

Bugs

أرسِل الأخطاء والملاحظات بشأن:

  • الاختلافات في الوصول إلى الشبكة المحلية (إذا كنت لا تعتقد أنّه يجب اعتبار إذن وصول معيّن إذن وصول إلى "الشبكة المحلية")
  • الأخطاء التي يجب فيها حظر الوصول إلى الشبكة المحلية ولكن لا يتم حظره
  • الأخطاء التي يتم فيها حظر الوصول إلى الشبكة المحلية بدون داعٍ

من المفترض ألا يتأثّر ما يلي بهذا التغيير:

  • إمكانية الوصول إلى الإنترنت
  • شبكة الجوّال