Etäyhdyskäytävä käynnistyy uudelleen, palaa minuutissa, ja paikallinen strongSwan-daemon jatkaa käynnissä tunnelin ollessa yhä alhaalla. Cron-työ, joka greppaa ESTABLISHED-tilaa ja käynnistää daemonin uudelleen, peittää sen lopulta, ja se myös katkaisee jokaisen asiaankuulumattoman tunnelin koneella samalla kun se saattaa ohittaa sen, joka epäonnistui. Palautus kuuluu yhteydelle, jonka on palattava, ilmaistuna asetuksissa, jotka kestävät uudelleenlatauksen. Tämä runbook pystyttää sen yhdelle yhteydelle ja todistaa tuloksen nimellä.

Luovu globaalista uudelleenkäynnistyksestä, pidä sen todisteet

Daemonin uudelleenkäynnistyksessä on kaksi konkreettista vikaa: se tuhoaa jokaisen yhteyden tilan eikä kerro sinulle mitään siitä, mikä tapahtuma itse asiassa epäonnistui. Greppaamasi tilateksti on voinut tulla toisesta yhteydestä, kun taas tarvittava child istui toimettomana, koska mikään ei käynnistänyt sitä.

Lue ladatut yhteydet ja aktiiviset assosiaatiot ennen kuin muutat mitään, jotta sinulla on ennen-kuva, johon verrata peerin palattua.

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

Aseta aloitus ja uudelleenyritykset palaavalle yhteydelle

swanctl.conf-käyttöönotossa nämä asetukset elävät yhteys- ja child-tasolla eivätkä globaalissa käytännössä. Alla oleva katkelma on aloittajapuolen esimerkki, joka olettaa, että ehdotukset, todennus ja valitsimet ovat jo oikein.

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

start_action päättää, mitä tapahtuu, kun child ladataan: start aloittaa heti, kun taas trap asentaa käytännön, joka käynnistää aloituksen, kun vastaavaa liikennettä ilmaantuu. trap|start vaatii strongSwan 5.9.6:n tai uudemman, joten tarkista versio ennen rivin kopioimista. dpd_action=restart pyytää uutta neuvottelua, kun peer julistetaan kuolleeksi, ja yhteystason keyingtries=0 sallii lisäyritykset onnistumiseen tai pysyvään virheeseen asti. IKEv2:n alla dpd_timeoutilla ei ole mitään vaikutusta, koska tavallinen uudelleenlähetys päättää, milloin peer ei vastaa.

Kyseisen esimerkin viive on lähtökohta, ei yleinen määräaika. Valitse se sen mukaan, kauanko peerin uudelleenkäynnistys kestää ja kuinka paljon uudelleenlähetystä olet valmis sietämään.

Tiedä, mistä tapahtumasta palautat

Kolme vikaa näyttävät samalta kojelaudalla ja vaativat eri asetukset. Alkuyhteys, joka ei koskaan noussut, on kokoonpano- tai tavoitettavuusongelma. Peer, joka lakkasi vastaamasta, on DPD-tapaus. Child, jonka peer sulki nimenomaisesti, on käytäntötapahtuma omalla close_actionillaan, jota DPD ei koskaan havaitse. Lokin lukeminen katkoksen ympäriltä kertoo, mikä kolmesta sinulla on, ja vastaus muuttaa korjausta.

Älä lisää aggressiivista uudelleenaloitusta yhteydelle, jonka operaattorit sulkevat tarkoituksella huoltoa varten, tai tunneli ilmestyy uudelleen ikkunan keskelle. Kysynnän mukaan toimivissa ratkaisuissa säilytetty trap riittää, koska vastaava liikenne palauttaa childin ilman mitään ajastinta.

Varmista nimellä, älä daemonin tilalla

Lue yhteys ja sen child nimellä, kun peer on vielä alhaalla, ja sitten uudelleen kun se palaa; näiden kahden tulosteen ero on todiste.

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

Vahvista sitten palvelu eikä assosiaatio. Tuore childin suojausassosiaatio ja onnistunut pyyntö sen takana olevaan yksityiseen kohteeseen ovat se tosiasiapari, jolla on merkitystä, eikä käynnissä oleva daemon ja terve asiaankuulumaton tunneli todista kumpaakaan.

Jos child ei koskaan aloita, tarkista, että testiliikenne vastaa määritettyjä valitsimia täsmälleen, protokolla ja portti mukaan lukien. Jos se aloittaa ja epäonnistuu, lue todennus- tai ehdotusvirhe sen sijaan että piilottaisit sen loputtomaan silmukkaan, koska keyingtries=0 toistaa pysyvän hylkäyksen ikuisesti.

Lataa muutos ikkunassa ja testaa uudelleen

Uudelleenlataus on turvallisempaa kuin daemonin uudelleenkäynnistys, eikä sekään ole ilmaista: childin korvaaminen tai purkaminen voi sulkea aloitetun assosiaation tai pudottaa sen trapin.

Lataa huoltoikkunan aikana, pidä edellinen tiedosto ja varmista, että yhteys ilmestyy tarkoittamillasi asetuksilla eikä oletuksilla.

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

Peruuta palauttamalla edellinen tiedosto ja lataamalla se uudelleen, toista sitten samat kaksi komentoa. Tunneli, joka palaa vasta daemonin uudelleenkäynnistyksen jälkeen, ei ole korjattu, vaan nollattu.

Aiheeseen liittyvät artikkelit