Android'de L2TP otomasyonu: betik isteyebilir, inşa edemez
Bir shell rotası Android'de L2TP/IPsec'i kaldırmaz. IPsec, L2TP, PPP ve platform politikası her biri bir parçaya sahiptir, bu yüzden neyin kontrol edebileceğini seçin.
Efsane şu ki L2TP Android'de bir shell betiğinin başlatabileceği bir şey daha: bir rota ekle, eski servisi çağır, bitti. Öyle olamaz, çünkü bir tünelin paket taşımasından önce dört farklı katmanın anlaşması gerekir. IPsec katmanı yolu korur, L2TP oturumu taşır, PPP bağlantıyı müzakere eder ve Android sonucu, etrafında yönlendirme yapabileceği bir VPN olarak kaydetmelidir. Bunun kopyalanmış komutlarla iki kez denendiğini gördüm ve her ikisinde de rota vardı ama hiçbir şey şifrelenmemişti.
Bir rota değişikliği gerçekte ne sağlar
Rota eklemek, paketin bundan sonra nereye gideceğine karar verir. Bir güvenlik ilişkisini müzakere etmez, L2TP oturumu açmaz ve adres, eş ve DNS ayarları üreten PPP alışverişini çalıştırmaz. Telefonda görünen sonuç, yanlış yoldan çıkan ya da çıkıp ölen trafiktir; hiçbir yerde tünel durumu yoktur.
Aynısı eski bir sürümden kopyalanan servis çağrısı için de geçerlidir. Android'in iç VPN altyapısı yayımlanmış bir otomasyon API'si değildir ve başka bir sürümden alınan numaralı bir işlem farklı bir işleme denk gelebilir ya da betiğin sahip olmadığı ayrıcalıklar isteyebilir. Parola taşıyan bir otomasyon asla tahmin edilen iç argümanlara bağlı olmamalıdır, çünkü arıza modu ya sessiz bir no-op ya da kimsenin temizlemediği yarım oluşturulmuş bir profildir.
Dört sahip ve betik hiçbiri değil
Sırayla ele alın. IPsec korunan yolu kurar ve sürdürür, eşleri kimlik doğrular. L2TP oturumu onun üzerinden taşır ve bu katmanlama, standardın ikisini tek bir protokol değil ayrı mekanizmalar olarak ele almasının nedenidir. Bunun içinde PPP, istemcinin kullanacağı bağlantı parametrelerini müzakere eder. Ardından Android platform tarafına sahiptir: kayıtlı VPN arayüzü, uygulama başına kapsam, always-on durumu ve uygulama öldürüldüğünde ne olacağına karar veren yaşam döngüsü.
Bir betik bu katmanların yalnızca sonuncusunu görebilir ve genellikle dolaylı olarak. İstemci belgelenmiş bir kontrol sunuyorsa ondan bağlanmasını isteyebilir ve sonrasında arayüz durumunu izleyebilir. Alttaki üç katmanın yerini alamaz ve platformun kayıtlı olmayan bir arayüzü VPN olarak görmesini sağlayamaz.
Neden bir daemon da kısa yol değil
Aygıtta ayrıcalıklı bir Linux daemon'u başlatmak eksik parça gibi görünür ve çoğu zaman gerçekten bir tünel kaldırır. Yapmadığı şey o tüneli Android'e kaydetmektir. Arayüz çekirdeğin içinde vardır, ancak platformun VPN seçimi, uygulama başına yönlendirme, always-on politikası ve yaşam döngüsü onu bilmez ve daemon'un kendi rota ve DNS değişiklikleri aynı tablolar için ağ yöneticisiyle yarışır.
Sonuç, daemon'un trafiği için çalışan ve sizin önemsediğiniz uygulama için gizemli biçimde çalışmayan bir bağlantı ya da sistem ağlarını yeniden değerlendirene kadar süren biridir. İki sonucun hiçbiri platform hatası değildir; bu, bir sokete sahip olmakla VPN olanağına sahip olmak arasındaki sınırdır.
Desteklenen yollar nasıl görünür
Kuruluş Android'in kendi sağladığı bir profile geçebiliyorsa platform yolu dürüst olandır. API 30'dan itibaren VpnManager uygulamaların platform VPN profillerini sağlamasını ve kontrol etmesini destekler; çağıran uygulamaya bağlı bir yetkilendirme akışı vardır. Bu bir L2TP dönüştürücüsü değildir: IKEv2 için sağladığı profil modeli mevcut bir L2TP yapılandırmasını çevirmez ve protokol değiştirmek bir geçiştir, yeniden adlandırma değil. Kimlikler, rotalar, özel DNS ve erişim izinleri bilinçli olarak taşınmalıdır.
Hizmet L2TP/IPsec olarak kalmalıysa, desteklenen bileşim operatörün gerçekten belgelendirdiği bir istemci ve OS sürümü ile varsa otomasyon sözleşmesidir. Belgelenmiş denetimsiz kontrol yoksa doğru yanıt, tek bir derlemede tesadüfen çalışan kırılgan ayrıcalıklı bir betik değil, desteklenen manuel bir bağlantıdır.
Doğru bir otomasyon ne yapar
Belgelenmiş bir kontrol verildiğinde otomasyonun küçük ve savunulabilir bir işi vardır: adlandırılmış bağlantıyı isteyin, hazır olmasını bekleyin, kimlik doğrulama veya kurulum hatasında durun, amaçlanan iş yükünü çalıştırın ve temizliği bağlantıya sahip bileşene bırakın. Kimlik bilgileri, bunları nasıl saklayacağını ve döndüreceğini bilen istemcide kalır.
İlk satırı yazmadan önce hangi bileşenin hangi katmana sahip olduğunu yazın ve sonucu buna göre kontrol edin:
- IPsec ve PPP istemci tarafından yönetilir, betiğin rotaları tarafından değil.
- Bağlantı platformun VPN durumunda görünür, bu nedenle uygulama başına kapsam ve always-on ona uygulanır.
- Hiçbir iç servis çağrısı, işlem numarası veya tahmin edilen argüman bir kimlik bilgisi taşımaz.
- Herhangi bir adımdaki arıza yarım kayıtlı bir profil bırakmaz.