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)
veyaSimple 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:
- Cihazınıza Android 16 Beta 3 veya sonraki bir sürümün yüklendiği yazılımı yükleyin.
- Test edilecek uygulamayı yükleme
adb'yi kullanarak Appcompat yapılandırmasını açma/kapatma
adb shell am compat enable RESTRICT_LOCAL_NETWORK <package_name>
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
izninimanifest
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ğ