Sunucu yeniden başlar, OpenVPN başlar ve RRAS, bağlı olduğu bağdaştırıcı veya yol henüz yokken yükselir. Aradan bir dakika geçince RRAS'ı elle yeniden başlatmak sorunu düzeltir; bu da sorun çözülmüş gibi görünür ve asıl olanı gizler. Burada iki farklı koşul karıştırılıyor: önkoşul hizmeti çalışıyor ve RRAS'ın gerçekten ihtiyaç duyduğu ağ kaynağı kullanılabilir hâle geldi. Bir Windows hizmet bağımlılığı ilk koşulu ifade edebilir ve ikincisini asla edemez, bu yüzden kaynağı tanımlamadan bir bağımlılık eklemek daha derli toplu görünen bir önyükleme ve aynı hatayı verir.

Soğuk önyüklemede belirti nasıl görünür

İpucu, soğuk başlatma ile yeniden başlatma arasındaki farktır. Soğuk başlatmada RRAS çalıştığını bildirirken tünel bağdaştırıcısı yoktur, yol kaybolmuştur veya eş adresi henüz çözülmüyordur. Elle yeniden başlatma sonra başarılı olur çünkü o anda kaynak vardır ve hizmet yalnızca bir dakika önce göremediği bir dünyayı yeniden okur. Hizmet günlüğü her iki durumda da temiz bir başlangıç gösterir, bu yüzden olay görüntüleyicisi tek başına bunu nadiren açıklar.

Bir şeyi değiştirmeden önce iki durumu da kaydedin: RRAS'ın önyüklemede ne bildirdiği ve elle yeniden başlatmanın başarılı olduğu anda neyin var olduğu. Bu iki gözlem aynıysa başlama sırası sizin açıklamanız değildir ve bir bağımlılık yardımcı olmaz. Karşılaştırma on dakika sürer ve bir haftalık tahminden tasarruf ettirir.

«Yeniden başlatmadan sonra çalışıyor» temelinde eklenen bir bağımlılık, aynı hatayı yalnızca önkoşul hizmetinin RUNNING bildirmesi için gereken süre kadar erteler. Başlama sırası kısıtı artık bir açıklama gibi göründüğü için önyüklemeyi anlamayı da zorlaştırır. Bağımlılığın hangi nesneyi garanti ettiğini ve o nesnenin RRAS'ın göremediği nesne olup olmadığını sorun.

Kaynağı adlandırın, yalnızca hizmeti değil

Eksik olan somut şeyi yazın. Bu, adresi olan bir tünel bağdaştırıcısı, eş alt ağına bir yol, bir DNS yanıtı veya hâlâ sağlanan bir sertifika olabilir. «VPN hizmeti çalışıyor» bir kaynak tanımı değildir, istemcideki yeşil simge de değildir. Nesneyi ve onu gösteren komutu adlandırabildiğiniz ana kadar beklemeye çalıştığınız koşulu tanımlamış olmuyorsunuz.

Bu OpenVPN örneğinin nasıl başlatıldığını da belirleyin. GUI ile yönetilen bir tünel ile hizmetle yönetilen bir tünel farklı önyükleme yaşam döngülerine sahiptir ve hizmet adı önünüzdeki makineden gelmelidir, başka bir kurulum programı için yazılmış bir örnekten değil. Hatırlanan bir ada güvenmek yerine adayları listeleyin.

Get-Service | Where-Object Name -match 'vpn|openvpn' | Select-Object Name, Status, StartType

Bir şey eklemeden önce bağımlılık zincirini okuyun

Hizmet Denetimi Yöneticisi START_PENDING ve RUNNING gibi durumları bildirir ve SERVICE_STATUS reference her alanın tam olarak ne anlama geldiğini tanımlar. Bu durumların hiçbiri bir eşin, DNS adının veya alt uygulamanın erişilebilir olduğunu vaat etmez. Bu boşluk, bu hatanın doğru yapılandırılmış bir bağımlılığa rağmen sürmesinin tüm nedenidir.

Get-Service -Name RemoteAccess | Select-Object Status, StartType
sc.exe qc RemoteAccess
Get-Service -Name RemoteAccess | Select-Object -ExpandProperty DependentServices

sc.exe qc çıktısındaki DEPENDENCIES satırı korumanız gereken listedir, çünkü sc.exe config RemoteAccess depend= tüm listeyi değiştirir, ona ekleme yapmaz. VPN hizmeti eklerken ilgisiz bir önkoşulu düşürmek, başka bir önyüklemede ortaya çıkan ikinci bir arıza yaratır ve bunu teşhis etmek orijinalden çok daha zordur. Dokunmadan önce mevcut listeyi değişiklik kaydınıza kopyalayın.

Bağımlılıklar kapanma davranışını da değiştirir, çünkü bir önkoşulu durdurmak ona bağlı hizmetleri durdurur. RRAS'ı sık sık yeniden başlayan bir şeye bağlamadan önce bakım sırasında ne olduğunu kontrol edin.

Yeniden başlatmayı bir zamanlayıcıya değil bir koşula bağlayın

Sabit bir bekleme, tünelin her zaman o pencere içinde hazır olacağını varsayar ve tam olarak bu varsayım, sertifikanın yavaş olduğu veya bağlantının düştüğü önyüklemede başarısız olur. Kaynağın kendisini bir son tarihle kontrol edin ve yeniden başlatmanın gerekli olup olmadığına kontrol karar versin.

Get-NetAdapter | Where-Object Status -eq 'Up'
Get-NetRoute -DestinationPrefix 0.0.0.0/0
Get-WinEvent -LogName System -MaxEvents 40 |
  Where-Object ProviderName -eq 'Service Control Manager'

Önyüklemede çalışan ve bu kontrolleri yapan, RRAS'ı yalnızca bağdaştırıcı veya yol hâlâ yokken yeniden başlatan zamanlanmış bir görev sınırlıdır, denetlenebilir ve kaldırılması kolaydır. Alternatif, her yeniden bağlanmada RRAS'ı yeniden başlatmak, sağlıklı oturumları keser ve kararsız bir bağlantıyı yeniden başlatma döngüsüne çevirir. Bu döngü orijinal arızadan daha kötüdür, çünkü artık iyi durumda olan kullanıcıları da etkiler.

Kontrole, tünelin donanımınızda makul olarak aldığı süreye karşılık gelen en uzun beklemeyi verin ve vazgeçtiğinde görevin sıfırdan farklı bir durumla çıkmasını sağlayın. Denemeyi basitçe bırakan sessiz bir görev, başarılı olan görevden ayırt edilemez.

Geçişi günlüğe kaydedin ki sonraki önyükleme kendini açıklasın

Aynı satıra üç zaman damgası kaydedin: bağımlılık hizmetinin RUNNING'e ulaştığı an, gereken kaynağın ortaya çıktığı an ve RRAS'ın onu sonunda kabul ettiği an. O tek satır, sonraki mühendisin soracağı soruyu yanıtlar ve üretmesi neredeyse hiçbir şeye mal olmaz. O olmadan sonraki soruşturma bununla aynı tahminden başlar.

Belirli sayıda denemeden sonra otomasyonu durdurun ve sonsuza dek yeniden denemek yerine hatayı bildirin. «Kaynak hiçbir zaman ortaya çıkmadı» mesajıyla biten bir önyükleme, hizmeti karanlıkta yeniden başlatmaya devam edenden daha değerlidir. O mesaj ortaya çıktığında, ikinci bölümde yazdığınız kaynak adı sonraki kişinin arayacağı şeydir.

İlgili makaleler