Fjern-gatewayen genstarter, kommer tilbage inden for et minut, og den lokale strongSwan-daemon kører videre, mens tunnelen stadig er nede. Et cron-job, der grep'er efter ESTABLISHED og genstarter daemonen, vil til sidst dække over det, og det vil også afbryde hver ubeslægtet tunnel på maskinen, mens det måske misser den, der fejlede. Gendannelse hører til den forbindelse, der skal tilbage, udtrykt i indstillinger, der overlever en genindlæsning. Denne runbook sætter det op for en enkelt forbindelse og beviser resultatet ved navn.

Drop den globale genstart, behold dens beviser

En daemon-genstart har to konkrete mangler: den ødelægger tilstanden for hver forbindelse, og den fortæller dig intet om, hvilken hændelse der faktisk fejlede. Den statustekst, du grep'ede, kan være kommet fra en anden forbindelse, mens det nødvendige child sad stille, fordi intet udløste det.

Læs de indlæste forbindelser og de aktive associationer, før du ændrer noget, så du har et før-billede at sammenligne med, når peer'en vender tilbage.

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

Læg initiering og genforsøg på den forbindelse, der vender tilbage

I en swanctl.conf-udrulning ligger disse indstillinger på forbindelses- og child-niveau snarere end i en global politik. Fragmentet nedenfor er et eksempel fra initiatorsiden, som forudsætter, at forslag, autentificering og selektorer allerede er korrekte.

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

start_action afgør, hvad der sker, når child'et indlæses: start initierer med det samme, mens trap installerer en politik, der udløser initiering, når matchende trafik opstår. At skrive trap|start kræver strongSwan 5.9.6 eller nyere, så tjek versionen, før du kopierer linjen. dpd_action=restart anmoder om ny forhandling, når peer'en erklæres død, og keyingtries=0 på forbindelsesniveau tillader yderligere forsøg indtil succes eller en permanent fejl. Under IKEv2 har dpd_timeout slet ingen effekt, fordi almindelig gensendelse afgør, hvornår peer'en ikke svarer.

Forsinkelsen i det eksempel er et udgangspunkt og ikke en universel frist. Vælg den ud fra, hvor lang tid peer'ens genstart tager, og hvor meget gensendelse du er villig til at sidde igennem.

Vid, hvilken hændelse du gendanner fra

Tre fejl ser identiske ud på et dashboard og kræver forskellige indstillinger. En indledende forbindelse, der aldrig kom op, er et konfigurations- eller tilgængelighedsproblem. En peer, der holdt op med at svare, er DPD-tilfældet. Et child, som peer'en eksplicit lukkede, er en politikbegivenhed med sin egen close_action, som DPD aldrig observerer. At læse loggen omkring afbrydelsen fortæller dig, hvilken af de tre du har, og svaret ændrer rettelsen.

Tilføj ikke aggressiv geninitiering til en forbindelse, som operatører lukker bevidst til vedligeholdelse, ellers dukker tunnelen op midt i vinduet. Til on-demand-design er en bevaret trap nok, fordi matchende trafik genetablerer child'et uden nogen timer.

Verificér ved navn, ikke ved daemon-status

Læs forbindelsen og dens child ved navn, mens peer'en stadig er nede, og derefter igen, når den vender tilbage; forskellen mellem de to output er beviset.

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

Bekræft derefter tjenesten frem for associationen. En frisk child-sikkerhedsassociation plus en vellykket anmodning til den private destination bag den er det faktapar, der betyder noget, og en kørende daemon med en sund ubeslægtet tunnel beviser ingen af dem.

Hvis child'et aldrig initierer, så tjek, at testtrafikken matcher de konfigurerede selektorer præcist, inklusive protokol og port. Hvis det initierer og fejler, så læs autentificerings- eller forslagsfejlen i stedet for at skjule den bag en endeløs løkke, fordi keyingtries=0 gladeligt gentager en permanent afvisning for evigt.

Indlæs ændringen i et vindue, og test igen

Genindlæsning er sikrere end at genstarte daemonen, og den er stadig ikke gratis: at erstatte eller aflæsse et child kan lukke en startet association eller tabe dens trap.

Indlæs i et vedligeholdelsesvindue, behold den forrige fil, og bekræft, at forbindelsen vises med de indstillinger, du tilsigtede, snarere end med standardværdier.

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

Rul tilbage ved at gendanne den forrige fil og indlæse den igen, og gentag derefter de samme to kommandoer. En tunnel, der først vender tilbage efter en daemon-genstart, er ikke repareret, den er nulstillet.

Relaterede artikler