Bir paketi hariç tutmak engelleme değil yönlendirme talimatıdır, bu yüzden VPN bağlandıktan sonra yüklenen sayfalar beklenen sonuçtur, bir arızanın kanıtı değildir. Hariç tutma uygulamayı engellemek yerine tünelden çıkarır ve olağan ağ onun trafiğini taşır. Burada iki ayrı ilke buluşur: biri süreçleri seçer, diğeri hedefleri. Bunları bu sırayla okumak, bağlı bir simge ile çalışan bir uygulamanın neden çelişki olmadığını açıklar.

Bir hariç tutma ağı neden açık tutar

VpnService.Builder ya bir izin listesi ya da bir engel listesi kabul eder, asla ikisini birden değil. Tünelden yalnızca izin listesindeki paketler geçer. Engel listesi bunu tersine çevirir: listelenenler dışındaki her paket tüneli kullanır, listelenenler ise fiziksel yolu korur. İzin listesinde yer almayan bir paket de tünelin dışındadır, dolayısıyla bu kipte çoğu uygulama için hariç tutma normal durumdur.

Bu, yerel bir engel girdisini güvenlik duvarı kuralı değil yönlendirme kararı yapar. Gereksinim bir uygulamanın bir ana bilgisayara ulaşmasını durdurmaksa, tünelin onu kapsaması ve sunucunun ya da yerel bir ilkenin trafiği reddetmesi gerekir. Bir uygulamayı tünelden çıkarmak yalnızca paketlerini hangi arayüzün taşıdığını değiştirir.

Play Store vakası olağan kasıtlı örnektir. Mağaza paketini hariç tutmak, VPN çıkışı aktarımları aksattığında indirmelerin alttaki bağlantıyı kullanmasına izin verir ve hariç tutmanın engelleme değil atlatma anlamına geldiğini gösterir.

Bir profil, bir liste

Her iki çağrı kullanılırsa oluşturucu bir istisna fırlatır, dolayısıyla önünüzdeki profil ya izin ya engel listesidir. Bu tek olgu, sonraki her gözlemin nasıl okunacağını belirler. Yönlendirme tablosundan önce kodu ya da yönetilen yapılandırmayı kontrol edin, çünkü listenin kendisi çıktının geri kalanının anlamını belirler. Karma bir profil bakabileceğiniz bir durum değildir.

Bu ayrım yeni kurulmuş bir uygulamanın ne yapacağını da öngörür. İzin listesinde biri ekleyene kadar dışarıda kalır, engel listesinde ise varsayılan olarak tünele katılır.

Yönetilen yapılandırmalar aynı seçimi farklı anahtar adları altında sunar ve bazı konsollar bunu liste yerine uygulama başına VPN kipi olarak tanımlar. Davranış yine de o iki çağrıya indirgenir, bu yüzden etikete güvenmek yerine ayarı paket listesine kadar geri izleyin. Etiket ile liste uyuşmazsa liste kazanır.

UID kuralını tünel tablosuna kadar izleyin

Android her uygulamaya kendi Linux kullanıcı kimliğini verir ve VPN hizmeti UID aralıklarıyla eşleşen ilke kuralları kurar. Eşleşen trafik, varsayılan rotası tun aygıtına işaret eden bir yönlendirme tablosuna gönderilir. Tablo numarası her VPN örneği için ayrılır, bu yüzden yeniden bağlanma ya da ikinci bir VPN profili oluşturma sonrasında değişir.

Kural çıktısı haritadır. Her satır bir arama tablosu adlandırır ve o tablo, eşleşen paketlerin tünele girip girmeyeceğine karar veren varsayılan rotayı tutar.

adb shell ip rule show
adb shell ip route show table all
adb shell cmd package list packages -U | grep <package>

UID almak için önce üçüncü komutu çalıştırın, sonra aralığı onu içeren kuralı bulun. O kural bir tablo numarasına işaret eder ve ip route show table <n> bu numarayla tun aygıtından geçen bir varsayılan rota olup olmadığı görünür. Tabloda varsayılan yoksa uygulama seçilmiştir ama yolu yoktur, bu başka bir arızadır.

Bu komutlar hata ayıklanabilir bir derleme ya da adb shell'in ağ durumunu okuyabildiği bir aygıt gerektirir. Üretim telefonunda paket yöneticisi hâlâ yanıt verir, ancak yönlendirme denetimi reddedilebilir, bu yüzden yapabildiğinizi kaydedin ve gerisini doğrulanmamış sayın.

Bir rota uygulamayı değil öneki talep eder

Builder.addRoute tünel için hedef öneklerini talep eder. Yalnızca 10.0.0.0/8 ekleyen bir profil o öneki tünelden gönderir ve diğer her hedefi fiziksel yolda bırakır. Bu olağan bölünmüş tünellemedir ve kuralların hangi uygulamaları seçtiğinden bağımsızdır.

Sunucudan itilen yapılandırma aynı modeli yansıtır. Tek tek rota itmeleri önek ekler, redirect-gateway yönergesi ise varsayılan rotayı değiştirir ve tünelin kapsadığı uygulamalar için her şeyi yakalar. O yönergeyi kaldırmak, aygıtta hiçbir değişiklik olmadan çalışan bir tüneli tek bir alt ağa küçültebilir.

Olağandışı bir geçit ya da metrik niteleyicisi olan itilmiş bir rota da kurulamayabilir. Düz önek biçimini tercih edin ve yönlendirmeyi ve NAT'ı sunucuya bırakın.

Bir ayarı değiştirmeden önce kesişimi okuyun

Tünel, kapsanan süreçlerin ve talep edilen hedeflerin kesişimini taşır. Yayımlanan öneklerin dışında bir adres isteyen kapsanan bir uygulama fiziksel ağdan çıkar. Engellenen bir paket, o öneklerin içinde bir adres istese bile dışarıda kalır. İki durum da hata değildir; ikisi de iki ilkenin işini yapmasıdır.

Uygulama başına VPN, ilişkili bir uygulamayı bağlantısız da bırakabilir. on-demand kapalıyken ve tünel aşağıdayken uygulama uygulama başına VPN'e bağlı kalır ve yedeği yoktur, bu da ilke durumu değil bozuk uygulama gibi görünür. on-demand'ı açmak ya da ilişkilendirmeyi yönetim üzerinden kaldırmak bunu değiştirir.

LayerWhat it selectsWhere to lookTypical mismatch
Package listProcessesBuilder calls or managed configurationApp excluded but expected to be blocked
UID policy ruleWhich table a UID usesip rule showTunnel icon on, app still on Wi-Fi
Routing tableDestinations for matched trafficip route show table <n>Covered app reaches only one subnet
Server pushPrefixes offered to the clientServer route configurationTunnel shrinks after a server edit

Her seferinde bir ekseni teşhis edin. Önce izin mi engel mi olduğunu doğrulayın, ikinci olarak kurulu UID kurallarını ve tabloları okuyun, son olarak aynı hedefe karşı ikinci bir uygulamayı deneyin. İkinci uygulama, tek bir istekte süreç seçimini hedef seçiminden ayırır.

Sonucu uygulama, hedef ve tablo numarası olarak yazın. Bir sonraki değişikliğin koruması gereken tam olarak bu üçlüdür.

İlgili makaleler