A strongSwan leállva marad a peer újraindítása után: egy alagút helyreállítása
Hagyja el a daemon újraindítását. Tegye a kezdeményezést és a DPD-t arra a kapcsolatra, amelynek vissza kell térnie, majd ellenőrizze név szerint, és a szolgáltatást bizonyítsa, ne a daemont.
A távoli átjáró újraindul, egy percen belül visszatér, és a helyi strongSwan daemon tovább fut, miközben az alagút még mindig leállt. Egy cron feladat, amely az ESTABLISHED-re grep-el és újraindítja a daemont, előbb-utóbb elfedi ezt, és a gépen minden nem kapcsolódó alagutat is megszakít, miközben lehet, hogy éppen azt hagyja ki, amelyik meghibásodott. A helyreállítás ahhoz a kapcsolathoz tartozik, amelynek vissza kell térnie, olyan beállításokban kifejezve, amelyek túlélnek egy újratöltést. Ez a runbook ezt egyetlen kapcsolatra állítja be, és név szerint bizonyítja az eredményt.
Vesse el a globális újraindítást, őrizze meg a bizonyítékait
A daemon újraindításának két konkrét hibája van: megsemmisíti minden kapcsolat állapotát, és semmit sem mond arról, melyik esemény hibázott valójában. A grepelt állapotszöveg egy másik kapcsolattól is származhat, miközben a szükséges child tétlenül állt, mert semmi sem indította el.
Mielőtt bármit módosítana, olvassa el a betöltött kapcsolatokat és az aktív társításokat, hogy legyen egy előtte kép, amelyhez a peer visszatérése után hasonlíthat.
swanctl --list-conns
swanctl --list-sas
Tegye a kezdeményezést és az újrapróbálkozásokat a visszatérő kapcsolatra
Egy swanctl.conf telepítésben ezek a beállítások kapcsolat- és child-szinten élnek, nem globális szabályban. Az alábbi részlet egy kezdeményező oldali példa, amely feltételezi, hogy a javaslatok, a hitelesítés és a szelektorok már helyesek.
connections {
branch {
keyingtries = 0
dpd_delay = 30s
children {
private-lan {
start_action = trap|start
dpd_action = restart
}
}
}
}
A start_action dönti el, mi történik a child betöltésekor: a start azonnal kezdeményez, míg a trap olyan szabályt telepít, amely illeszkedő forgalom megjelenésekor elindítja a kezdeményezést. A trap|start írásához strongSwan 5.9.6 vagy újabb kell, ezért a sor másolása előtt ellenőrizze a verziót. A dpd_action=restart új tárgyalást kér, amint a peer halottnak nyilvánított, a kapcsolatszintű keyingtries=0 pedig további kísérleteket enged a sikerig vagy egy végleges hibáig. IKEv2 alatt a dpd_timeout-nak egyáltalán nincs hatása, mert a szokásos újraküldés dönti el, mikor nem válaszol a peer.
A példában szereplő késleltetés kiindulópont, nem egyetemes határidő. Válassza meg aszerint, hogy mennyi ideig tart a peer újraindítása, és mennyi újraküldést hajlandó elviselni.
Tudja, melyik eseményből áll helyre
Három hiba azonosnak látszik egy irányítópulton, és különböző beállításokat igényel. Egy soha fel nem jött kezdeti kapcsolat konfigurációs vagy elérhetőségi probléma. A válaszadást abbahagyó peer a DPD esete. Az a child, amelyet a peer kifejezetten lezárt, saját close_action-nel rendelkező szabályesemény, amelyet a DPD soha nem figyel meg. A kimaradás körüli napló elolvasása megmondja, melyik a három közül, és a válasz megváltoztatja a javítást.
Ne adjon agresszív újrakezdeményezést olyan kapcsolathoz, amelyet az üzemeltetők szándékosan lezárnak karbantartás miatt, különben az alagút újra megjelenik az ablak közepén. Igény szerinti kialakításoknál egy megtartott trap elég, mert az illeszkedő forgalom időzítő nélkül újraépíti a childot.
Név szerint ellenőrizzen, ne a daemon állapota alapján
Olvassa el a kapcsolatot és annak childját név szerint, amíg a peer még leállt, majd újra, amikor visszatér; a két kimenet közötti különbség a bizonyíték.
swanctl --initiate --child private-lan
swanctl --terminate --ike branch
Utána a szolgáltatást erősítse meg, ne a társítást. Egy friss child biztonsági társítás és egy sikeres kérés a mögötte lévő privát célállomásra az a két tény, amely számít, és egy futó daemon egy egészséges, nem kapcsolódó alagúttal egyiket sem bizonyítja.
Ha a child soha nem kezdeményez, ellenőrizze, hogy a tesztforgalom pontosan illeszkedik-e a beállított szelektorokhoz, a protokollt és a portot is beleértve. Ha kezdeményez és meghiúsul, olvassa el a hitelesítési vagy javaslati hibát ahelyett, hogy végtelen ciklus mögé rejtené, mert a keyingtries=0 boldogan ismétel egy végleges elutasítást örökké.
Töltse be a változtatást egy ablakban, és tesztelje újra
Az újratöltés biztonságosabb, mint a daemon újraindítása, és mégis nem ingyenes: egy child lecserélése vagy kirakása lezárhat egy elindított társítást, vagy elejtheti a trapjét.
Karbantartási ablakban töltse be, őrizze meg az előző fájlt, és erősítse meg, hogy a kapcsolat a szándékolt beállításokkal jelenik meg, nem az alapértelmezettekkel.
swanctl --load-conns
swanctl --list-conns
Lépjen vissza az előző fájl visszaállításával és újratöltésével, majd ismételje meg ugyanazt a két parancsot. Egy alagút, amely csak daemon-újraindítás után tér vissza, nincs megjavítva, hanem vissza van állítva.