Uyku hook'una bir yeniden bağlanma komutu koyun, sorun çözülmüş görünür. Yalnızca hook ağ var olduktan sonra, istemcinin tanıdığı bir kimlikle, istemcinin gerçekten uyguladığı bir yoldan çalışıyorsa çözülür. Uyandıktan sonraki arızaların çoğu bu üçünden biridir ve hiçbiri hook'un kendisinde hata olarak görünmez. Hook yine de başarı döndürür.

Sıfırla çıkan bir betik size bir tünelin geri gelip gelmediği hakkında hiçbir şey söylemedi.

Hook çalışır, sonra ne olur?

#!/bin/sh
case "$1" in
  pre)
    vpn-client disconnect
    ;;
  post)
    vpn-client connect
    ;;
esac

Her olay hook'u iki kez çağırır, geçişin önünde ve arkasında, ona fazı ve olay adını verir. Minimum bir ortamda root olarak çalışır, bu yüzden mutlak yollar gereklidir ve hiçbir masaüstü oturum değişkeni beklenmemelidir. İki çağrının da hızlı dönmesi yalnızca betiğin çalıştığını söyler. Profilin sonradan kalkıp kalkmadığı ayrı bir gözlemdir ve günlükte kendi kanıtını gerektirir.

Faz bağımsız değişkenini tasarımın parçası sayın. pre fazındaki yeniden bağlanma denemesi makine her şeyi kaybetmek üzereyken gerçekleşir ve başarılı olamaz.

Root, minimum ortam, yanlış kullanıcı

İstemci oturum açma belirtecini kullanıcı başına tutuyorsa, hook'u root olarak çalıştırmak ona sunacak hiçbir şey bırakmaz. Durumu hook'un gerçekten kullandığı kimlik altında denetleyin, bir masaüstü terminalinden test ettiğiniz kimlik altında değil. Bazı derlemeler bağlantı kesildikten sonra arayüzü tutan bir arka plan süreci de bırakır, bu yüzden yeniden bağlanma eski bir duruma düşer ve süreci önce temizlemek onu kirli bir kapanış pahasına geri getirir. Yalnızca mutlu yolu test ederseniz iki davranıştan hiçbiri görünmez.

Hook'u mutlak yollarla yazın, root'a ait ve çalıştırılabilir tutun ve ne yaptığını günlüğe kaydedin. O günlük olmadan sonraki inceleme sıfırdan başlar.

Otomatik bağlanma VPN yolu değildir

NetworkManager iki etkinleştirme mekanizması sunar: profilde bir otomatik bağlanma bayrağı ve birincil profil etkinleştiğinde başlayan ikincil bağlantılar. Yerel aygıt türleri ilkini uygular; VPN eklentileri tarihsel olarak yalnızca ikincisini uygulamıştır, bu yüzden OpenVPN profilinde otomatik bağlanmayı işaretlemenin hiçbir etkisi olmayabilir. Her iki özelliği inceleyin, ardından VPN'i Wi-Fi veya Ethernet profilinin ikincili olarak ekleyin.

[Unit]
PartOf=NetworkManager.service
Requires=NetworkManager-wait-online.service
After=NetworkManager-wait-online.service

Bir systemd birimi tarafından yönetilen WireGuard arayüzü, hook yerine o ek dosyaya ihtiyaç duyar ve ağ çevrimiçi olduktan sonra sıralanır.

Ağı bekleyin, bir tavanla

timer=1
while ! ping -c1 -n -w1 203.0.113.1 >/dev/null; do
  sleep 1; timer=$((timer+1))
  [ $timer -ge 300 ] && exit 0
done
nmcli connection up "work-vpn"

Uyanışta tünel, Wi-Fi hâlâ yeniden ilişkilenirken istenebilir, bu da her sabit uykuyu bir tahmine dönüştürür. Erişilebilir bir adresi bekleyin, sonra profili kaldırın ve beklemeyi sınırlayın ki bir hook uyanış yolunu süresiz açık tutamasın. Profil adını sayısal bir dizine tercih edin ve doğru profil ağa göre değişiyorsa sağlıklı tünelin seçimini önceden bir dosyaya yazmasını sağlayın.

Yeniden başlatma fırtınalarına da karşı koyun, denemeleri sayarak ve durarak. Her başarısız yoklamaya tepki veren bir gözcü, bir kesintiyi bir döngüye çevirir.

Sistemi bir kez askıya alın, sonra günlükte hook'un kendi çıktısını okuyun. Sıralamayı kanıtlayan tek test budur.

İlgili makaleler