strongSwan peer yenidən başladıqdan sonra düşmüş qalır: bir tuneli bərpa edin
Daemonun yenidən başladılmasından imtina edin. Başlatma və DPD-ni geri qayıtmalı olan bağlantıya qoyun, sonra adla yoxlayın və daemonu deyil, xidməti sübut edin.
Uzaq şlüz yenidən başlayır, bir dəqiqə içində qayıdır, yerli strongSwan daemonu isə tunel hələ də düşmüş halda işləməyə davam edir. ESTABLISHED üçün grep edən və daemonu yenidən başladan cron işi bunu nə vaxtsa ört-basdır edəcək və eyni zamanda maşındakı hər əlaqəsiz tuneli kəsəcək, bəlkə də uğursuz olanı qaçıracaq. Bərpa geri qayıtmalı olan bağlantıya aiddir və yenidən yükləmədən sonra da qalan parametrlərlə ifadə olunur. Bu runbook bunu tək bir bağlantı üçün qurur və nəticəni adla sübut edir.
Qlobal yenidən başlatmanı təqaüdə çıxarın, sübutlarını saxlayın
Daemonun yenidən başladılması iki konkret qüsuru daşıyır: hər bağlantının vəziyyətini məhv edir və hansı hadisənin həqiqətən uğursuz olduğunu sizə demir. Grep etdiyiniz status mətni başqa bağlantıdan gəlmiş ola bilər, tələb olunan child isə heç nə onu işə salmadığı üçün boş qalmışdı.
Hər şeyi dəyişməzdən əvvəl yüklənmiş bağlantıları və aktiv assosiasiyaları oxuyun ki, peer qayıtdıqdan sonra müqayisə edəcəyiniz bir öncəki mənzərəniz olsun.
swanctl --list-conns
swanctl --list-sas
Başlatmanı və təkrar cəhdləri qayıdan bağlantıya qoyun
swanctl.conf quraşdırmasında bu parametrlər qlobal siyasətdə deyil, bağlantı və child səviyyəsində yaşayır. Aşağıdakı fraqment təkliflərin, autentifikasiyanın və seçicilərin artıq düzgün olduğunu fərz edən başladıcı tərəfli nümunədir.
connections {
branch {
keyingtries = 0
dpd_delay = 30s
children {
private-lan {
start_action = trap|start
dpd_action = restart
}
}
}
}
start_action child yüklənəndə nə baş verdiyini müəyyən edir: start dərhal başladır, trap isə uyğun trafik görünəndə başlatmanı tetikləyən siyasət quraşdırır. trap|start yazmaq üçün strongSwan 5.9.6 və ya daha yenisi lazımdır, ona görə sətri kopyalamazdan əvvəl versiyanı yoxlayın. dpd_action=restart peer ölmüş elan edildikdən sonra yeni razılaşma tələb edir, bağlantı səviyyəsində keyingtries=0 isə uğur və ya daimi xəta qədər əlavə cəhdlərə icazə verir. IKEv2 altında dpd_timeout heç bir təsir göstərmir, çünki peerin cavab vermədiyini adi yenidən ötürmə müəyyən edir.
Həmin nümunədəki gecikmə universal bir son tarix deyil, başlanğıc nöqtəsidir. Onu peerin yenidən başlamasının nə qədər çəkdiyinə və nə qədər yenidən ötürməyə dözmək istədiyinizə görə seçin.
Hansı hadisədən bərpa etdiyinizi bilin
Üç nasazlıq idarə panelində eyni görünür və fərqli parametrlər tələb edir. Heç vaxt qalxmayan ilkin bağlantı konfiqurasiya və ya əlçatanlıq problemidir. Cavab verməyi dayandıran peer DPD halıdır. Peerin açıq şəkildə bağladığı child isə DPD-nin heç vaxt görmədiyi, öz close_action-u olan siyasət hadisəsidir. Kəsinti ətrafındakı jurnalı oxumaq üçündən hansının olduğunu sizə deyir və cavab düzəlişi dəyişir.
Operatorların texniki xidmət üçün qəsdən bağladığı bağlantıya aqressiv yenidən başlatma əlavə etməyin, əks halda tunel pəncərənin ortasında yenidən peyda olur. Tələb üzrə dizaynlarda saxlanılan trap kifayətdir, çünki uyğun trafik child-i heç bir taymer olmadan yenidən qurur.
Daemon statusu ilə deyil, adla yoxlayın
Peer hələ düşmüş ikən bağlantını və onun child-ini adla oxuyun, sonra qayıtdıqdan sonra yenidən; bu iki çıxış arasındakı fərq sübutdur.
swanctl --initiate --child private-lan
swanctl --terminate --ike branch
Sonra assosiasiyanı deyil, xidməti təsdiqləyin. Təzə child təhlükəsizlik assosiasiyası və onun arxasındakı özəl ünvana uğurlu sorğu vacib olan iki faktdır, işləyən daemonla sağlam əlaqəsiz tunel isə heç birini sübut etmir.
Child heç vaxt başlamırsa, test trafikinin konfiqurasiya edilmiş seçicilərə dəqiq uyğun gəldiyini yoxlayın, protokol və port daxil olmaqla. Başlayır və uğursuz olursa, autentifikasiya və ya təklif xətasını sonsuz dövrənin arxasında gizlətmək əvəzinə oxuyun, çünki keyingtries=0 daimi rəddi sonsuza qədər təkrarlayacaq.
Dəyişikliyi pəncərədə yükləyin və yenidən sınayın
Yenidən yükləmə daemonu yenidən başlatmaqdan təhlükəsizdir və yenə də pulsuz deyil: child-i əvəz etmək və ya boşaltmaq başlamış assosiasiyanı bağlaya və ya onun trap-ını itirə bilər.
Texniki xidmət pəncərəsi zamanı yükləyin, əvvəlki faylı saxlayın və bağlantının standart parametrlərlə deyil, nəzərdə tutduğunuz parametrlərlə göründüyünü təsdiqləyin.
swanctl --load-conns
swanctl --list-conns
Əvvəlki faylı bərpa edib yenidən yükləməklə geri qaytarın, sonra eyni iki əmri təkrarlayın. Yalnız daemon yenidən başladıqdan sonra qayıdan tunel təmir olunmayıb, sıfırlanıb.