Yerel ağ izni

Yerel alan ağındaki (LAN) 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 gizlilikle ilgili sonuçları da vardır.

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

Etki

Android 16'da bu izin, isteğe bağlı olarak etkinleştirilebilen bir özelliktir. Bu nedenle, yalnızca bu izni etkinleştiren uygulamalar etkilenir. Bu özelliği etkinleştirmenin amacı, uygulama geliştiricilerin uygulamalarının hangi bölümlerinin örtülü yerel ağ erişimine bağlı olduğunu anlamalarını sağlamaktır. Böylece, gelecekteki bir Android sürümünde bu bölümler için izin koruması hazırlayabilirler.

Uygulamalar, kullanıcının yerel ağına şu yöntemlerle erişirse etkilenir:

  • Yerel ağ adreslerinde (ör. Multicast DNS (mDNS) veya Simple Service Discovery Protocol (SSDP)) ham soketlerin doğrudan veya kitaplık tarafından kullanılması.
  • Yerel ağa erişen çerçeve düzeyindeki sınıfların (ör. NsdManager) kullanılması.

Etkinin ayrıntıları

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

Uygulama Düşük Düzeyli Ağ İşlemi Yerel Ağ İzni Gerekli
Giden TCP bağlantısı oluşturma evet
Gelen TCP bağlantısını kabul etme evet
UDP tek noktaya yayın, çok noktaya yayın veya yayın gönderme evet
Gelen UDP tek yayını, çoklu yayını, yayını alma evet

Bu kısıtlamalar ağ yığınında derinlemesine uygulanır ve bu nedenle 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 üzerinde uygulanan tüm API'ler buna dahildir. Yerel ağda .local sonekine sahip hizmetleri çözmeye çalışmak için yerel ağ izni gerekir.

Önceki kurallarla ilgili istisnalar:

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

Rehberlik

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

  1. Cihazınıza Android 16 Beta 3 veya sonraki bir sürümün yüklendiği yazılımı yükleyin.
  2. Test edilecek uygulamayı yükleme
  3. adb'yi kullanarak Appcompat yapılandırmasını açma/kapatma

    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ıştır ve yerel ağa erişme girişimleri soket hatalarına yol açar. Uygulama sürecinizin dışında yerel ağ işlemleri gerçekleştiren API'ler (ör. NsdManager) kullanıyorsanız bu API'ler, kaydolma sırasında etkilenmez.

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

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

Uygulamanızın yerel ağa erişimi geri yüklenir ve tüm senaryolarınız, uygulamayı kaydetmeden önceki gibi çalışır. Uygulama 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

Uyumluluk 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, send veya send varyantını yerel bir ağ adresine çağırdığında arayan sokete döndürülür.

Örnek hatalar:

sendto failed: EPERM (Operation not permitted)

sendto failed: ECONNABORTED (Operation not permitted)

Hatalar

Aşağıdakilerle ilgili hata gönderin ve geri bildirimde bulunun:

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

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

  • İnternet erişimi
  • Mobil Ağ