strongSwan bly af na 'n peer-herlaai: een tonnel herstel
Los die daemon-herstart. Plaas inisiasie en DPD op die verbinding wat moet terugkom, en verifieer dan by naam en bewys die diens, nie die daemon nie.
Die afgeleë gateway herlaai, kom binne 'n minuut terug, en die plaaslike strongSwan-daemon hou aan loop terwyl die tonnel steeds af is. 'n Cron-werk wat vir ESTABLISHED grep en die daemon herbegin, sal dit uiteindelik toeplak, en dit sal ook elke onverwante tonnel op die masjien onderbreek terwyl dit moontlik die een mis wat gefaal het. Herstel hoort by die verbinding wat moet terugkom, uitgedruk in instellings wat 'n herlaai oorleef. Hierdie runbook rig dit vir 'n enkele verbinding in en bewys die resultaat by naam.
Ontsê die globale herstart, behou sy bewyse
'n Daemon-herstart dra twee spesifieke gebreke: dit vernietig toestand vir elke verbinding, en dit sê jou niks oor watter gebeurtenis werklik gefaal het nie. Die statusteks wat jy gegrep het, kon van 'n ander verbinding gekom het, terwyl die vereiste child ledig gesit het omdat niks dit geaktiveer het nie.
Lees die gelaaide verbindings en die aktiewe assosiasies voordat jy enigiets verander, sodat jy 'n voor-prentjie het om mee te vergelyk nadat die peer terugkeer.
swanctl --list-conns
swanctl --list-sas
Plaas inisiasie en herprobeersels op die verbinding wat terugkeer
In 'n swanctl.conf-ontplooiing leef hierdie instellings op verbinding- en child-vlak eerder as in 'n globale beleid. Die fragment hieronder is 'n inisieerder-kant voorbeeld wat aanneem dat voorstelle, verifikasie en keurders reeds korrek is.
connections {
branch {
keyingtries = 0
dpd_delay = 30s
children {
private-lan {
start_action = trap|start
dpd_action = restart
}
}
}
}
start_action besluit wat gebeur wanneer die child gelaai word: start begin onmiddellik, terwyl trap 'n beleid installeer wat inisiasie aktiveer wanneer passende verkeer verskyn. Om trap|start te skryf benodig strongSwan 5.9.6 of later, so kyk na die weergawe voordat jy die reël kopieer. dpd_action=restart vra 'n nuwe onderhandeling aan sodra die peer dood verklaar word, en keyingtries=0 op verbindingvlak laat verdere pogings toe tot sukses of 'n permanente fout. Onder IKEv2 het dpd_timeout glad geen effek nie, want gewone herversending besluit wanneer die peer nie reageer nie.
Die vertraging in daardie voorbeeld is 'n beginpunt eerder as 'n universele spertyd. Kies dit op grond van hoe lank die peer se herlaai neem en hoeveel herversending jy bereid is om deur te sit.
Weet van watter gebeurtenis jy herstel
Drie foute lyk identies op 'n paneelbord en het verskillende instellings nodig. 'n Aanvanklike verbinding wat nooit opgekom het nie, is 'n konfigurasie- of bereikbaarheidsprobleem. 'n Peer wat opgehou antwoord het, is die DPD-geval. 'n Child wat die peer uitdruklik gesluit het, is 'n beleidsgebeurtenis met sy eie close_action, wat DPD nooit waarneem nie. Om die log rondom die onderbreking te lees, sê vir jou watter van die drie jy het, en die antwoord verander die regstelling.
Moenie aggressiewe her-inisiasie by 'n verbinding voeg wat operateurs doelbewus vir instandhouding sluit nie, of die tonnel verskyn weer in die middel van die venster. Vir op-aanvraag-ontwerpe is 'n behoue trap genoeg, want passende verkeer hervestig die child sonder enige tydhouer.
Verifieer by naam, nie by daemon-status nie
Lees die verbinding en sy child by naam terwyl die peer nog af is, en dan weer sodra dit terugkeer; die verskil tussen daardie twee uitsette is die bewys.
swanctl --initiate --child private-lan
swanctl --terminate --ike branch
Bevestig dan die diens eerder as die assosiasie. 'n Vars child-sekuriteitsassosiasie plus 'n suksesvolle versoek aan die private bestemming daar agter is die paar feite wat saak maak, en 'n lopende daemon met 'n gesonde onverwante tonnel bewys nie een van die twee nie.
As die child nooit inisieer nie, kyk of die toetsverkeer presies by die gekonfigureerde keurders pas, insluitend protokol en poort. As dit inisieer en faal, lees die verifikasie- of voorstelfout eerder as om dit agter 'n eindelose lus weg te steek, want keyingtries=0 sal 'n permanente verwerping vir ewig herhaal.
Laai die verandering in 'n venster en toets weer
Herlaai is veiliger as om die daemon te herbegin, en dit is steeds nie verniet nie: om 'n child te vervang of te ontsê kan 'n gestarte assosiasie sluit of sy trap laat val.
Laai tydens 'n instandhoudingsvenster, hou die vorige lêer, en bevestig dat die verbinding met die instellings verskyn wat jy bedoel het eerder as met verstekke.
swanctl --load-conns
swanctl --list-conns
Rol terug deur die vorige lêer te herstel en weer te laai, en herhaal dan dieselfde twee opdragte. 'n Tonnel wat eers ná 'n daemon-herstart terugkom, is nie herstel nie; dit is teruggesit.