Hata bildirip devam eden hazırlama betikleri, hiç çalışmayan betiklerden daha kötüdür. İstemci kurulumu korunan anahtarlara, ağ geçidindeki bir kimliğe ve hâlihazırda trafik sunuyor olabilecek bir hizmete dokunur. Bunların her biri bir durma koşuluna ihtiyaç duyar ve betik durduğunda hangi aşamaya ulaştığını bilmelidir.

Bütün işi beş kontrol noktası olan tek bir işlem olarak ele al ve her kontrol noktasının kendi başına devam etmeyi reddetmesini sağla.

Dosya sistemine dokunmadan önce girdileri düzeltin

Açık bir sözleşmeyle başlayın: tek kimlik, tek profil kaynağı, tek amaçlanan hizmet sahibi. Profilin var olduğunu, işaret ettiği sertifika ve anahtarın okunabilir olduğunu ve hedef dizinin beklenen pakete ait olduğunu doğrulayın. Çözümlenen bir yol, arkasındaki malzemenin eksiksiz olduğunun kanıtı değildir.

Boş değişkenleri erken reddedin. Hiçbir şeye genişlemeyen ayarlanmamış $DEVICE, install -m 400 $KEY /etc/openvpn/client/ komutunu bir dizine yönelik kopyaya dönüştürür ve hata daha sonra anahtarını okuyamayan bir hizmet olarak gelir.

Profil kümesini bir hazırlık dizininde birleştirin

Önce tam kümeyi özel bir yerde oluşturun: profil, CA, istemci sertifikası, anahtar ve profilin çağırdığı her yardımcı. install -m 400 -o root -g root ile kopyalayın ki izinler sonradan değil oluşturma sırasında ayarlansın. Ardından profilin içindeki referansları kontrol edin, çünkü göreli bir ca veya key satırı hizmet başlar başlamaz birimin çalışma dizinine göre çözümlenir. Tüm küme doğrulanana kadar etkin dizine hiçbir şey yazılmamalıdır.

Bu çalıştırmanın ürettiği şeyin gizli olmayan bir parmak izini kaydedin, örneğin sürüm işaretçisinin yanında saklanan sha256sum office.conf. Tek başına bu değer, yeni bir çalıştırmanın bir güncellemeyi hiçbir şey yapmamaktan ayırmasını sağlar.

Atomik olarak değiştirin ve önceki kümeyi saklayın

Hazırlanan kümeyi dosya sisteminin izin verdiği yerde tek bir işlemle yerine taşıyın ve gözden geçirilmiş önceki kümeyi zaman damgalı bir ad altında saklayın. Eski anahtarın yanında yeni bir profil bırakan kısmi bir kopya, yanlış kimlikle kimlik doğrulayan ve nedeni hakkında yararlı hiçbir şey kaydetmeyen bir hizmet üretir. Değiştirme atomik olamıyorsa, taşımaları profil en son inecek şekilde sıralayın.

Hedef zaten varsa, bu çalıştırmanın bir güncelleme mi, birebir tekrar mı yoksa başka bir cihazın profiliyle çakışma mı olduğuna açıkça karar verin. Başka bir kimliğe ait bir profilin sessizce üzerine yazmak, iki makinenin tek bir sertifikayı paylaşmasına yol açan yoldur. Bunun yerine çalıştırmayı reddedin ve çakışan sahibi adlandırın.

Tek bir sahibi etkinleştirin ve kanıtlayın

Tek bir etkinleştirme yolu seçin, ya systemd örneği ya da NetworkManager, ve tutarlı biçimde kullanın. Etkinleştirilmiş bir birimin yanında yönetilmeyen bir openvpn süreci başlatmak iki tünel, birbiriyle yarışan DNS güncellemeleri ve durdurma komutunun hangisini hedeflediğine dair net bir yanıt vermez. Etkinleştirmeden sonra systemctl is-active openvpn-client@office çıktısını, ardından uzak öneke giden rotayı, ardından tünelin kurduğu çözümleyici için resolvectl status çıktısını kontrol edin. Tünelin var olma nedeni olan tek bir kaynağa ulaşarak bitirin.

Çalışan bir süreç ve yeşil bir tepsi simgesi süreç gerçekleridir; kimliğin ve trafik ilkesinin devri atlattığının kanıtı değildir.

Yeniden çalıştırma ve kullanımdan kaldırma ayrı iş akışlarıdır

İkinci bir çalıştırma aynı gözden geçirilmiş dosyalara ve aynı sahibe yakınsamalı, ikinci bir hesap veya ikinci bir artalan süreci oluşturmamalıdır. Kullanımdan kaldırma kendi prosedürüdür: tam sahibi durdurun, ilkeye göre yerel profili arşivleyin veya silin ve ağ geçidinde kimliği iptal edin. Yerel bir anahtar dosyasını silmek, makineden çoktan ayrılmış bir kopyayı iptal etmez.

Tünele bağlı olmayan bir kurtarma yolu tutun, örneğin konsol erişimi veya ikinci bir yönetim rotası. Sizi makinenin dışında kilitleyen bir hazırlama değişikliği, her aşama başarı bildirmiş olsa bile başarısız bir değişikliktir.

Saklamaya değer betik, sahiplik ve kanıt etrafındaki bir işlemdir. Ayrıcalıklı kopyalama komutlarının kısa bir listesi aynı şey değildir.

İlgili makaleler