Yerel Ağ İzni

LAN'daki cihazlara INTERNET iznine sahip tüm uygulamalar erişebilir. Bu, uygulamaların yerel cihazlara bağlanmasını kolaylaştırır ancak kullanıcının parmak izini oluşturma ve konum için proxy olma gibi gizlilik sorunlarına da yol açar.

Yerel Ağ Korumaları projesi, yerel ağa erişimi yeni bir çalışma zamanında izinle sınırlayarak kullanıcının gizliliğini korumayı amaçlar.

Etki

Android 16'da bu izin isteğe bağlı bir özelliktir. Yani yalnızca bu izni etkinleştiren uygulamalar etkilenir. Etkinleştirmenin amacı, uygulama geliştiricilerin uygulamalarının hangi bölümlerinin örtülü yerel ağ erişimine bağlı olduğunu anlayarak gelecekteki bir Android sürümünde bu bölümleri izin korumasına hazırlamalarını sağlamaktır.

Aşağıdakileri kullanarak kullanıcının yerel ağına erişen uygulamalar etkilenecektir:

  • Yerel ağ adreslerinde ham soketlerin doğrudan veya kitaplık kullanımı (ör. mDNS veya SSDP hizmet keşfi protokolü)
  • Yerel ağa erişen çerçeve düzeyinde sınıfların kullanılması (ör. NsdManager)

Etki Ayrıntıları

Yerel ağ adresine gelen ve giden trafik için yerel ağ erişimi izni gerekir. Aşağıdaki tabloda sık karşılaşılan bazı durumlar listelenmiştir:

Uygulama Düşük Seviye Ağ İşlemi Yerel Ağ İzni Gerekiyor
Giden TCP bağlantısı oluşturma evet
Gelen TCP bağlantısını kabul etme evet
UDP tekil yayın, çoklu yayın, yayın gönderme evet
Gelen UDP tekil yayın, çoklu yayın, anons alma evet

Bu kısıtlamalar ağ yığınının derinliklerine uygulandığından tüm ağ API'leri için geçerlidir. Platformda veya yönetilen kodda oluşturulan soketler, Cronet ve OkHttp gibi ağ kitaplıkları ve bunların üzerine uygulanan tüm API'ler buna dahildir. Yerel ağdaki hizmetleri (ör. .local son eki olan hizmetler) çözmeye çalışmak için yerel ağ izni gerekir.

Önceki kurallara istisnalar:

  • Bir cihazın DNS sunucusu yerel bir ağdaysa bu sunucuya / bu sunucudan gelen trafik (53 numaralı bağlantı noktasında) için yerel ağ erişimi izni gerekmez.
  • Uygulama içi seçici olarak Çıkış Değiştirici'yi kullanan uygulamaların yerel ağ izinlerine ihtiyacı yoktur (daha sonraki bir sürümde daha fazla bilgi sağlanacaktır).

Rehberlik

Yerel ağ kısıtlamalarını etkinleştirmek için aşağıdakileri yapın:

  1. Cihazınızı Android 16 Beta 3 veya sonraki bir sürüm içeren bir derlemeye flaşlayın
  2. Test edilecek uygulamayı yükleme
  3. adb kullanarak Appcompat yapılandırmasını etkinleştirme veya devre dışı bırakma

    adb shell am compat enable RESTRICT_LOCAL_NETWORK <package_name>
    
  4. Cihazı yeniden başlatın

Artık uygulamanızın yerel ağa erişimi kısıtlanmış durumdadır ve yerel ağa erişme girişimleri soket hatalarına neden olur. Uygulama işleminizin dışında yerel ağ işlemleri gerçekleştiren API'leri (ör. NsdManager) kullanıyorsanız bu API'ler etkinleştirme sırasında etkilenmez.

Erişimi geri yüklemek için uygulamanıza NEARBY_WIFI_DEVICES izni vermeniz gerekir.

  • Uygulamanın manifest dosyasında NEARBY_WIFI_DEVICES iznini beyan ettiğinden emin olun.
  • Ayarlar > Uygulamalar > [Uygulama Adı] > İzinler > Yakındaki cihazlar > İzin ver'e gidin.

Artık uygulamanızın yerel ağa erişimi geri yüklenecektir ve tüm senaryolarınız, uygulamayı etkinleştirmeden önceki gibi çalışacaktır. Uygulamanın ağ trafiği bu durumdan nasıl etkilenir?

İzin Giden LAN İsteği Giden/Gelen İnternet İsteği Gelen LAN İsteği
Verildi Works Works Works
İzin Verilmedi Başarısızlar Works Başarısızlar

Appcompat yapılandırmasını devre dışı bırakmak için aşağıdaki komutu kullanın

adb shell am compat disable RESTRICT_LOCAL_NETWORK <package_name>

Hatalar

Bu kısıtlamalardan kaynaklanan hatalar, yerel bir ağ adresine send veya send varyantı çağrıldığında çağıran sokete döndürülür.

Örnek hatalar:

sendto failed: EPERM (Operation not permitted)

sendto failed: ECONNABORTED (Operation not permitted)

Hatalar

Aşağıdakiler için hata ve geri bildirim gönderin:

  • LAN erişiminde tutarsızlıklar (belirli bir erişimin "yerel ağ" erişimi olarak kabul edilmemesi gerektiğini düşünüyorsanız)
  • LAN erişiminin engellenmesi gereken ancak engellenmediği hatalar
  • LAN erişiminin engellenmesi gerekmeyen ancak engellenen hatalar

Aşağıdakiler bu değişiklikten etkilenmeyecektir:

  • İnternet erişimi
  • Mobil Ağ