strongSwan paliek lejā pēc peer pārstartēšanas: atjaunot vienu tuneli
Atmetiet daemon pārstartēšanu. Novietojiet inicializāciju un DPD uz savienojuma, kuram jāatgriežas, pēc tam pārbaudiet pēc nosaukuma un pierādiet pakalpojumu, nevis daemon.
Attālā vārteja pārstartējas, atgriežas minūtes laikā, un vietējais strongSwan daemon turpina darboties, kamēr tunelis joprojām ir lejā. Cron uzdevums, kas grepē ESTABLISHED un pārstartē daemon, galu galā to noklās, un tas arī pārtrauks katru nesaistīto tuneli mašīnā, vienlaikus, iespējams, palaidīs garām to, kas neizdevās. Atjaunošana pieder savienojumam, kuram jāatgriežas, izteikta iestatījumos, kas pārdzīvo pārlādi. Šī runbook to iestata vienam savienojumam un pierāda rezultātu pēc nosaukuma.
Atmetiet globālo pārstartēšanu, saglabājiet tās pierādījumus
Daemon pārstartēšanai ir divi konkrēti trūkumi: tā iznīcina katra savienojuma stāvokli un nepasaka neko par to, kurš notikums patiešām neizdevās. Statusa teksts, ko grepējāt, varēja nākt no cita savienojuma, kamēr nepieciešamais child sēdēja dīkā, jo nekas to neaktivizēja.
Pirms kaut ko maināt, izlasiet ielādētos savienojumus un aktīvās asociācijas, lai jums būtu pirms-attēls, ar ko salīdzināt pēc peer atgriešanās.
swanctl --list-conns
swanctl --list-sas
Novietojiet inicializāciju un atkārtotos mēģinājumus uz atgriežošos savienojumu
swanctl.conf izvietojumā šie iestatījumi mīt savienojuma un child līmenī, nevis globālā politikā. Zemāk redzamais fragments ir iniciatora puses piemērs, kas pieņem, ka priekšlikumi, autentifikācija un selektori jau ir pareizi.
connections {
branch {
keyingtries = 0
dpd_delay = 30s
children {
private-lan {
start_action = trap|start
dpd_action = restart
}
}
}
}
start_action izlemj, kas notiek, kad child tiek ielādēts: start inicializē uzreiz, savukārt trap instalē politiku, kas aktivizē inicializāciju, kad parādās atbilstoša satiksme. Lai rakstītu trap|start, nepieciešams strongSwan 5.9.6 vai jaunāks, tāpēc pirms rindas kopēšanas pārbaudiet versiju. dpd_action=restart pieprasa jaunas sarunas, tiklīdz peer tiek pasludināts par mirušu, un savienojuma līmeņa keyingtries=0 pieļauj papildu mēģinājumus līdz panākumiem vai pastāvīgai kļūdai. Saskaņā ar IKEv2 dpd_timeout vispār neietekmē, jo parastā atkārtotā pārsūtīšana izlemj, kad peer neatbild.
Aizture šajā piemērā ir sākumpunkts, nevis universāls termiņš. Izvēlieties to pēc tā, cik ilgi ilgst peer pārstartēšana, un cik daudz atkārtotas pārsūtīšanas esat gatavs izturēt.
Ziniet, no kura notikuma jūs atjaunojat
Trīs kļūmes panelī izskatās vienādi un prasa dažādus iestatījumus. Sākotnējais savienojums, kas nekad nav pacēlies, ir konfigurācijas vai sasniedzamības problēma. Peer, kas pārstāja atbildēt, ir DPD gadījums. Child, ko peer skaidri aizvēra, ir politikas notikums ar savu close_action, ko DPD nekad neievēro. Žurnāla lasīšana ap pārtraukumu pasaka, kurš no trim jums ir, un atbilde maina labojumu.
Nepievienojiet agresīvu atkārtotu inicializāciju savienojumam, ko operatori apzināti aizver apkopei, citādi tunelis atkal parādīsies loga vidū. Pieprasījuma dizainiem pietiek ar saglabātu trap, jo atbilstošā satiksme atjauno child bez jebkāda taimera.
Pārbaudiet pēc nosaukuma, nevis pēc daemon statusa
Lasiet savienojumu un tā child pēc nosaukuma, kamēr peer vēl ir lejā, un pēc tam vēlreiz, kad tas atgriežas; atšķirība starp šiem diviem izvadiem ir pierādījums.
swanctl --initiate --child private-lan
swanctl --terminate --ike branch
Pēc tam apstipriniet pakalpojumu, nevis asociāciju. Jauna child drošības asociācija un veiksmīgs pieprasījums uz privāto galamērķi aiz tās ir tas faktu pāris, kam ir nozīme, un darbojošs daemon ar veselīgu nesaistītu tuneli nepierāda ne vienu, ne otru.
Ja child nekad neinicializējas, pārbaudiet, vai testa satiksme precīzi atbilst konfigurētajiem selektoriem, ieskaitot protokolu un portu. Ja tas inicializējas un neizdodas, lasiet autentifikācijas vai priekšlikuma kļūdu, nevis slēpiet to aiz bezgalīgas cilpas, jo keyingtries=0 labprāt atkārtos pastāvīgu noraidījumu mūžīgi.
Ielādējiet izmaiņas logā un pārbaudiet vēlreiz
Pārlāde ir drošāka nekā daemon pārstartēšana, un tomēr tā nav bez maksas: child aizstāšana vai izkraušana var aizvērt uzsāktu asociāciju vai nomest tā trap.
Ielādējiet apkopes logā, saglabājiet iepriekšējo failu un apstipriniet, ka savienojums parādās ar paredzētajiem iestatījumiem, nevis noklusējumiem.
swanctl --load-conns
swanctl --list-conns
Atritiniet, atjaunojot iepriekšējo failu un to atkārtoti ielādējot, pēc tam atkārtojiet tās pašas divas komandas. Tunelis, kas atgriežas tikai pēc daemon pārstartēšanas, nav salabots, tas ir atiestatīts.