Uzak ağ geçidi yeniden başlıyor, bir dakika içinde geri dönüyor ve yerel strongSwan daemon'u çalışmaya devam ederken tünel hâlâ düşük. ESTABLISHED için grep yapıp daemon'u yeniden başlatan bir cron işi eninde sonunda bunu örtecek ve makinedeki her ilgisiz tüneli de kesecek, üstelik başarısız olanı kaçırabilecek. Kurtarma, geri dönmesi gereken bağlantıya aittir ve bir reload'u atlatan ayarlarda ifade edilir. Bu runbook bunu tek bir bağlantı için kurar ve sonucu adla kanıtlar.

Genel yeniden başlatmayı bırakın, kanıtlarını saklayın

Daemon'u yeniden başlatmanın iki somut kusuru vardır: her bağlantının durumunu yok eder ve hangi olayın gerçekten başarısız olduğu konusunda size hiçbir şey söylemez. Grep yaptığınız durum metni başka bir bağlantıdan gelmiş olabilir, oysa gereken child hiçbir şey onu tetiklemediği için boşta bekliyordu.

Herhangi bir şeyi değiştirmeden önce yüklenmiş bağlantıları ve etkin ilişkilendirmeleri okuyun, böylece peer döndükten sonra karşılaştıracağınız bir önce fotoğrafınız olur.

swanctl --list-conns
swanctl --list-sas

Başlatmayı ve yeniden denemeleri geri dönen bağlantıya koyun

Bir swanctl.conf dağıtımında bu ayarlar genel bir politikada değil, bağlantı ve child düzeyinde yaşar. Aşağıdaki parça, tekliflerin, kimlik doğrulamanın ve seçicilerin zaten doğru olduğunu varsayan başlatıcı tarafından bir örnektir.

connections {
    branch {
        keyingtries = 0
        dpd_delay = 30s
        children {
            private-lan {
                start_action = trap|start
                dpd_action = restart
            }
        }
    }
}

start_action, child yüklendiğinde ne olacağına karar verir: start hemen başlatır, trap ise eşleşen trafik göründüğünde başlatmayı tetikleyen bir politika kurar. trap|start yazmak strongSwan 5.9.6 veya daha yenisini gerektirir, bu yüzden satırı kopyalamadan önce sürümü kontrol edin. dpd_action=restart, peer ölü ilan edildiği anda yeni bir müzakere ister ve bağlantı düzeyindeki keyingtries=0, başarıya veya kalıcı bir hataya kadar daha fazla denemeye izin verir. IKEv2 altında dpd_timeout hiçbir etki yapmaz, çünkü peer'in ne zaman yanıt vermediğine olağan yeniden iletim karar verir.

O örnekteki gecikme bir başlangıç noktasıdır, evrensel bir son tarih değil. Peer'in yeniden başlatılmasının ne kadar sürdüğüne ve ne kadar yeniden iletimi göze alabileceğinize göre seçin.

Hangi olaydan kurtardığınızı bilin

Üç arıza bir panelde aynı görünür ve farklı ayarlar gerektirir. Hiç yükselmeyen ilk bağlantı bir yapılandırma veya erişilebilirlik sorunudur. Yanıt vermeyi bırakan peer DPD vakasıdır. Peer'in açıkça kapattığı child, DPD'nin asla gözlemlemediği kendi close_action'ına sahip bir politika olayıdır. Kesinti çevresindeki günlüğü okumak üçünden hangisine sahip olduğunuzu söyler ve yanıt düzeltmeyi değiştirir.

Operatörlerin bakım için bilerek kapattığı bir bağlantıya agresif yeniden başlatma eklemeyin, yoksa tünel pencerenin ortasında yeniden belirir. Talep üzerine tasarımlar için korunan bir trap yeterlidir, çünkü eşleşen trafik child'ı herhangi bir zamanlayıcı olmadan yeniden kurar.

Daemon durumuyla değil, adla doğrulayın

Peer hâlâ düşükken bağlantıyı ve child'ını adla okuyun, sonra geri döndüğünde tekrar okuyun; bu iki çıktı arasındaki fark kanıttır.

swanctl --initiate --child private-lan
swanctl --terminate --ike branch

Sonra ilişkilendirmeyi değil hizmeti onaylayın. Yeni bir child güvenlik ilişkilendirmesi ve arkasındaki özel hedefe başarılı bir istek, önemli olan iki gerçektir ve sağlıklı ilgisiz bir tünelle çalışan bir daemon ikisini de kanıtlamaz.

Child hiç başlatmazsa, test trafiğinin yapılandırılmış seçicilerle tam olarak eşleştiğini kontrol edin, protokol ve bağlantı noktası dahil. Başlatıp başarısız olursa, kimlik doğrulama veya teklif hatasını sonsuz bir döngünün arkasına saklamak yerine okuyun, çünkü keyingtries=0 kalıcı bir reddi sonsuza kadar tekrarlar.

Değişikliği bir pencerede yükleyin ve yeniden test edin

Reload, daemon'u yeniden başlatmaktan daha güvenlidir ve yine de ücretsiz değildir: bir child'ı değiştirmek veya boşaltmak başlatılmış bir ilişkilendirmeyi kapatabilir ya da trap'ını düşürebilir.

Bir bakım penceresinde yükleyin, önceki dosyayı saklayın ve bağlantının varsayılanlarla değil amaçladığınız ayarlarla göründüğünü onaylayın.

swanctl --load-conns
swanctl --list-conns

Önceki dosyayı geri yükleyip yeniden yükleyerek geri alın, sonra aynı iki komutu tekrarlayın. Yalnızca daemon yeniden başlatıldıktan sonra geri dönen bir tünel onarılmamıştır, sıfırlanmıştır.

İlgili makaleler