Vzdálená brána se restartuje, vrátí se do minuty a místní démon strongSwan dál běží, zatímco tunel zůstává dole. Cronová úloha, která grepuje ESTABLISHED a restartuje démona, to nakonec přelepí, ale také přeruší každý nesouvisející tunel na stroji a možná mine ten, který selhal. Obnova patří spojení, které se musí vrátit, vyjádřená nastaveními, která přežijí znovunačtení. Tato příručka to nastaví pro jedno spojení a výsledek doloží podle jména.

Zbavte se globálního restartu, jeho důkazy si nechte

Restart démona má dva konkrétní nedostatky: ničí stav každého spojení a nic vám neřekne o tom, která událost skutečně selhala. Text stavu, který jste hledali, mohl pocházet z jiného spojení, zatímco požadovaný child stál nečinně, protože ho nic nespustilo.

Před jakoukoli změnou si přečtěte načtená spojení a aktivní asociace, abyste měli obrázek před a mohli ho po návratu peeru porovnat.

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

Přesuňte inicializaci a opakované pokusy na spojení, které se vrací

V nasazení se swanctl.conf žijí tato nastavení na úrovni spojení a child, ne v globální politice. Fragment níže je příklad ze strany iniciátora, který předpokládá, že návrhy, autentizace a selektory už jsou správné.

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

start_action rozhoduje, co se stane při načtení child: start inicializuje okamžitě, kdežto trap nainstaluje politiku, která spustí inicializaci, když se objeví odpovídající provoz. Zápis trap|start vyžaduje strongSwan 5.9.6 nebo novější, proto před kopírováním řádku zkontrolujte verzi. dpd_action=restart žádá nové vyjednávání, jakmile je peer prohlášen za mrtvý, a keyingtries=0 na úrovni spojení povoluje další pokusy až do úspěchu nebo trvalé chyby. Pod IKEv2 nemá dpd_timeout vůbec žádný účinek, protože o tom, kdy peer neodpovídá, rozhoduje běžné opětovné odesílání.

Zpoždění v tomto příkladu je výchozí bod, ne univerzální lhůta. Vyberte ho podle toho, jak dlouho restart peeru trvá a kolik opětovného odesílání jste ochotni vydržet.

Vězte, ze které události se zotavujete

Tři poruchy vypadají na panelu stejně a potřebují různá nastavení. Počáteční spojení, které nikdy nevzniklo, je problém konfigurace nebo dosažitelnosti. Peer, který přestal odpovídat, je případ DPD. Child, který peer výslovně zavřel, je událost politiky s vlastním close_action, kterou DPD nikdy nezaznamená. Čtení logu kolem výpadku vám řekne, kterou ze tří máte, a odpověď mění opravu.

Nepřidávejte agresivní opětovnou inicializaci spojení, které operátoři záměrně zavírají kvůli údržbě, jinak se tunel objeví uprostřed okna znovu. U návrhů na vyžádání stačí zachovaný trap, protože odpovídající provoz child obnoví bez jakéhokoli časovače.

Ověřujte podle jména, ne podle stavu démona

Přečtěte si spojení a jeho child podle jména, dokud je peer ještě dole, a pak znovu, až se vrátí; rozdíl mezi těmito dvěma výstupy je důkaz.

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

Pak potvrďte službu, ne asociaci. Čerstvá bezpečnostní asociace child plus úspěšný požadavek na privátní cíl za ní jsou ta dvě fakta, na kterých záleží, a běžící démon se zdravým nesouvisejícím tunelem nedokazuje ani jedno.

Pokud se child nikdy neinicializuje, zkontrolujte, zda testovací provoz přesně odpovídá nakonfigurovaným selektorům, včetně protokolu a portu. Pokud se inicializuje a selže, přečtěte chybu autentizace nebo návrhu, místo abyste ji schovávali za nekonečnou smyčkou, protože keyingtries=0 bude trvalé odmítnutí opakovat věčně.

Načtěte změnu v okně a znovu otestujte

Znovunačtení je bezpečnější než restart démona, a přesto není zdarma: nahrazení nebo odebrání child může zavřít spuštěnou asociaci nebo shodit jeho trap.

Načítejte během okna údržby, ponechte předchozí soubor a potvrďte, že se spojení objeví s nastaveními, která jste zamýšleli, a ne s výchozími.

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

Vraťte změnu obnovením předchozího souboru a jeho opětovným načtením, pak zopakujte stejné dva příkazy. Tunel, který se vrací jen po restartu démona, není opraven, je resetován.

Související články