Açılışta başlamayan bir OpenVPN sunucusu için iki çözüm önerilir: adresi beklemek ya da hizmetin bağlama başarılı olana kadar yeniden denemesine izin vermek. İkisi de aynı belirtiyi ele alır ama hata durumunda farklı davranır. Beklemek belirli bir önkoşulu kodlar ve o yokken yüksek sesle başarısız olur; yeniden denemek önkoşulu gizler ve denemeye devam eder. Hangisinin biriminize ait olduğu, o adresin tasarlanmış bir bağımlılık mı yoksa zamanlamanın bir rastlantısı mı olduğuna bağlıdır.

İkisi de hiçbir şeyi beklemeyen ve neyi beklediğini bildirmeyen sabit bir uykudan daha iyidir.

local seçeneğinin gerçekte ne gerektirdiği

local, sunucu sürecinin soketini bağladığı adresi belirtir ve henüz var olmayan bir adrese bağlanma, istenen adresle ilgili bir hatayla hemen başarısız olur. Seçenek yokken süreç tüm adreslerde dinler; bu yüzden aynı profil, arayüzü henüz ayakta olmayan bir makinede de çalışır: adlandırdığınız tek adres yerine her yerde dinler. Bütün arıza bu farktır ve yeniden başlatmaya kadar görünmez kalır.

Gereksinim, arayüzün genel anlamda ayakta olması değildir. Adres, bağlama anında doğru arayüze atanmış olmalı ve aynı sürecin sonradan oluşturacağı bir tünel değil, alttaki arayüz olmalıdır. Oturum açtıktan dakikalar sonra yapılan bir kontrol, açılış sırası hakkında hiçbir şey kanıtlamaz.

Adresi beklemek ile bağlamayı yeniden denemek

Beklemek, adres görünene kadar yoklayan, sınırlı sayıda deneme yapan ve süre dolduğunda sıfırdan farklı çıkış kodu veren bir ExecStartPre demektir. Yeniden denemek, ana sürecin başarısız olmasına izin verip hizmet yöneticisinden onu yeniden başlatmasını istemek demektir; örneğin Restart=on-failure ile RestartSec=5. Birincisi eksik önkoşulu başarısız bir birim olarak bildirir; ikincisi ise eninde sonunda duran bir yeniden başlatma dizisi olarak bildirir; günlükte daha gürültülüdür ama öngöremeyeceğiniz nedenlerle geç gelen bir adresle baş eder.

Adres tasarlanmış bir bağımlılıksa beklemeyi, adres genellikle görünüyor ama zamanlaması değişiyorsa yeniden denemeyi tercih edin. İkisini birleştirmek makuldür: sınırlı bir bekleme olağan durumu, yeniden başlatma ilkesi ise aykırı durumu kapsar. İkisi de sonsuza kadar çalışmamalıdır, çünkü sınırsız deneyen bir birim yanlış yapılandırmayı bildirmek yerine gizler.

network-online.target neden yeterli değil

network-online.target, etkin ağ uygulamasının online ile ne kastettiğinden fazlasını vaat etmez. systemd-networkd ile bu hedefe ne zaman ulaşıldığına systemd-networkd-wait-online karar verir ve onun varsayılan online anlayışı, sizin belirli adresiniz var olmadan önce karşılanabilir. NetworkManager altında wait-online hizmeti kendi kurallarını uygular. Hedefin arkasında sıralanmak sağlam bir temeldir, tek bir adresin, DNS yanıtının veya uzak eşin hazır olduğunun garantisi değildir.

Aynı akıl yürütme olağan alternatifleri eler. Masaüstündeki bir otomatik başlatma girdisi, sunucuda hiç açılmayabilecek bir kullanıcı oturumunu bekler; geciktirilmiş bir cron komutu ise görünmesini umduğu kaynağı adlandırmadan geçen zaman ekler. İkisi de aylarca başarılı görünebilir ve sonra önemli olan tek açılışta başarısız olur.

Soğuk açılıştan sonra bağlamayı kontrol edin

Hizmeti yeniden başlatmak yerine gerçek bir soğuk açılışla doğrulayın, çünkü yeniden başlatma, açılış sırasının oluşturmak zorunda olduğu bir adresi devralır. Açılıştan sonra ss -lntp veya ss -lunp her dinleyicinin gerçekte bağlandığı yerel adresi gösterir, journalctl -b -u openvpn-server@server ise ilk denemenin başarısız olup olmadığını gösterir. Bağlanan adresi profildekiyle karşılaştırın, sonra karşılaştırmayı ağ yeniden bağlandıktan sonra yineleyin.

Profil hiçbir zaman sabit bir adrese ihtiyaç duymadıysa local seçeneğini kaldırmak meşru bir sadeleştirmedir, ama bunu bir sorun giderme alışkanlığı değil güvenlik kararı haline getirin.

Dinleyiciyi genişletmek ona kimin erişebileceğini değiştirir, bu yüzden bu değişikliği onu kısıtlaması gereken güvenlik duvarı ilkesiyle birlikte ele alın. Her arayüzde güvenilir biçimde başlayan bir hizmet asıl sorunu çözmemiştir; sorunu ağın kenarına taşımıştır.

İlgili makaleler