Mevcut bir VPN'i bağlayan küçük bir programın yeni bir VPN uygulamasına değil, bir denetleyiciye ihtiyacı vardır. Desteklenen motor görüşmeyi ve tünel trafiğini üstlenmelidir; programınız kullanıcının isteğini ifade etmeli ve sonucu dürüstçe açıklamalıdır. Linux'ta NetworkManager D-Bus arayüzü o denetleyiciye izlenecek somut bir model verir.

Dört kontrol, denetleyicinin kayıtlı bir profil, bir etkinleştirme isteği ve çalışan bir oturumu karıştırmasını önler.

Birinci kontrol: hangi kimlik seçiliyor

Profilin UUID'sini kalıcı kimlik olarak tutun ve nesne yoluna ihtiyaç duyduğunuzda onu yönetici üzerinden çözün. Görünen bir adı iki profil paylaşabilir ve çalışma zamanındaki veri yolu yolu saklamak için makul bir kullanıcı tercihi değildir. Seçimi kendi yapılandırmanıza yazın, listede hangi girdinin ikinci olduğuna dair bir yorumda değil.

Buna eşleşme demeden önce yöneticinin ne döndürdüğünü doğrulayın. Artık var olmayan bir UUID arama hatası üretir ve bu, var olup etkinleşmeyi reddeden bir profilden farklı bir kod yoludur.

İkinci kontrol: etkinleştirme çağrısı ne döndürür

Belgelenen etkinleştirme çağrısı var olan bir bağlantının nesne yolunu, bir aygıt yolunu ve belirli bir nesneyi alır. Etkin bir bağlantının yolunu döndürür ve bu yanıt hazırlık sonucu değil, bir tutamaçtır. Uygulamanızın hazır bayrağını dönen değerden ayarlamayın; bunun yerine etkin bağlantının durumuna ve nedenine abone olun.

VPN için belirli nesne etkin temel bağlantıyı seçer. Kök yolu geçirmek aygıt seçimini NetworkManager'a bırakır ve o anda varsayılan olanı seçer. Bu bir parola alanı değil, yönlendirme bağlamı kararıdır ve tünelin hangi aygıt üzerine yerleştirildiğini değiştirir.

Genel bir ekle-ve-etkinleştir örneğini alıp VPN profili oluşturacağını beklemeyin. Belgelenen yardımcı VPN bağlantılarını dışlar, bu yüzden profili hazırlamak veya içe aktarmak ayrı ve gözden geçirilmiş bir adımdır. Bu önemlidir çünkü hazırlama, bir bağlan düğmesinin sunmadığı yetkilendirme ve gözden geçirme gerektirir. İçe aktarmayı kendi günlük satırı ve kendi onaylayıcısı olan idari bir eylem olarak ele alın.

Üçüncü kontrol: durum nasıl temsil edilir

Etkin bir bağlantı etkinleştirme, etkin, devre dışı bırakma ve devre dışı durumlarından geçer ve neden alanı nedenini söyler. Tüm bunları loggedIn adlı bir Boolean'a sıkıştırmak, kullanıcının ihtiyaç duyduğu ve desteğin soracağı bilgiyi kaybeder. En azından bağlantının beklemede, kurulmuş veya gitmiş olduğunu gösterin ve hata durumu için neden dizesini saklayın.

Eşzamansız yanıtları onları üreten istekle ilişkilendirin. Daha eski bir denemenin geç tamamlanması daha yeni bir kullanıcı eyleminin üzerine yazmamalıdır ve Connect'e iki kez basmak ya yok sayılmalı ya da görünür bir politikayla iptal ve yeniden deneme olarak ele alınmalıdır.

Dördüncü kontrol: yeniden başlatmadan sonra ne olur

Yönetici yeniden başladığında veya denetleyiciniz veri yoluna yeniden bağlandığında, gözlenen durumu sahibinden yeniden kurun. Eski nesne yolu hâlâ bellekte olduğu için önbelleğe alınmış oturumu etkin göstermeye devam etmeyin. Durum değişikliği sinyalleri tam olarak bir denetleyicinin tahmin etmek yerine yeniden eşitleyebilmesi için vardır.

Denetleyiciyi kapatmanın ne anlama geldiğini seçin. Makineye ait var olan bir bağlantıyı açık bırakmak doğru olabilir ve kasıtlı olarak kısa ömürlü bir oturumu sökmek de doğru olabilir. Makineye ait var olan bir bağlantıyı açık bırakmak doğru olabilir; kasıtlı olarak kısa ömürlü bir oturumu sökmek de doğru olabilir. Bu sahiplik sözleşmesini, süreç çıkışının ağ eylemini gerçekleştirdiğini varsaymak yerine arayüze yazın. Kullanıcılar pencereyi kapatmanın tünellerini düşürüp düşürmeyeceğini tahmin etmek zorunda kalmamalıdır. Yanıtı yalnızca kod yorumuna değil, arayüz metnine koyun.

Yetkiyi ve sırları sahiplerinde tutun

İzinler evet, auth veya hayır olarak döner ve arayüz izin verilen, kimlik doğrulamadan sonra izin verilen ve reddedilen arasındaki farkı yansıtmalıdır. Denetleyiciyi root olarak çalıştırmak bir izin politikası uygulamaz; soruyu ortadan kaldırır.

Kimlik bilgileri, yapılandırılmış kimlik doğrulama yöntemi için desteklenen sır aracısına veya istemci entegrasyonuna aittir. Kaynak kodda, bir bağımsız değişkende veya bir günlükte bulunan parola bir bulgudur ve yerel idari yetkilendirme, ağ geçidindeki kimlik doğrulamayla aynı olay değildir.

Son olarak, bağlantı durumunu kullanıcının yapmak istediği görevden ayrı bildirin. Özel bir ad veya uygulama kullanılamaz durumdayken tünel etkin olabilir ve bu ikinci başarısızlık kendi mesajını ve kendi durumunu hak eder. Hangi katmanın başarısız olduğunu tam olarak söyleyen bir denetleyici, VPN düştü diyen birinden daha yararlıdır.

İlgili makaleler