Jedno nahoru, nula připojeno: co ten řádek strongSwan počítá
Starý nadpis počítá asociace IKE, ne podsítě ani podřízené SA, takže nejdřív čtěte načtené definice a nainstalované potomky.
Přečtěte si stavový řádek, který říká Security Associations (1 up, 0 connecting), a vypadá to jako zpráva o jednom funkčním tunelu. Dvě podsítě přes něj současně procházejí provoz, takže se číslo zdá lhát. Nelže; počítá asociace IKE a jedna z nich může hostit několik potomků. Přečtěte si inventáře, než sáhnete na návrh nebo trasu.
Proč se nadpis a provoz rozcházejí
Starý výstup stroke označuje svůj součet jako bezpečnostní asociace a odvozuje jej ze správce asociací IKE. Každá navázaná asociace IKE přispívá jednou, bez ohledu na to, kolik CHILD SA pod ní leží. Jeden rodič IKEv2 obvykle nese několik potomků, po jednom na dvojici selektorů provozu, a vyjednané selektory potomka mohou pokrýt více než jednu adresu nebo prefix. Počet adres ve vaší konfiguraci tedy nemá pevný vztah k číslu v nadpisu.
Moderní výstup někdy ukazuje součet místo starého slova “up” a démon spravovaný swanctl se starými nastaveními stroke vůbec neřídí. Nepředpokládejte ani formulaci, ani pravidlo počítání napříč verzemi.
Porovnejte tři inventáře, než něco změníte
Začněte tím, co je načteno, pak tím, co je vyjednáno, pak tím, co skutečně přenáší pakety. To jsou tři různé otázky a každá má svůj příkaz.
swanctl --list-conns
swanctl --list-sas
První vypisuje definice spojení, které démon přijal. Druhý vypisuje navázané asociace IKE s jejich potomky, a právě tam se objevuje skutečná hierarchie. Definice, která je v souboru, ale v prvním výpisu chybí, nebyla nikdy načtena a žádný počet opakování iniciátora to nespraví. Pokud místo toho používáte staré rozhraní, ekvivalentní dvojice je ipsec statusall a stejný výpis swanctl, podle toho, který plugin vlastní konfiguraci. Nemíchejte nástroje mezi dvěma démony na jednom hostiteli a nečekejte jednu souvislou odpověď.
swanctl --list-sas --raw | head -40
ip -s xfrm state
Surová podoba drží identifikátory a selektory viditelné pro srovnání a výpis stavu jádra ukazuje, co si zásobník myslí, že nainstaloval. Když se démon a jádro rozcházejí, buď démon restartoval kolem existujícího potomka, nebo byl objekt jádra pod ním odstraněn.
Čtěte hierarchii, ne součet
Ilustrativní navázaný rodič se dvěma potomky vypadá jako jeden uzel se dvěma potomky pod sebou, každý označený svým stavem a režimem. Vypište skutečný výstup a spočítejte potomky sami, místo abyste četli shrnutí, které někdo vložil z panelu.
swanctl --list-sas
swanctl --list-conns --raw | grep -A4 'accounting'
Jeden rodič se dvěma nainstalovanými potomky je zdravý tunel pro dvě podsítě. Jeden rodič s jedním nainstalovaným a jedním chybějícím potomkem je jiná situace a selektory chybějícího potomka jsou to, co se má srovnat s návrhem vzdálené strany. Během obnovy klíčů se starý potomek a jeho náhrada mohou na krátkou dobu objevit společně. Uchovejte časové razítko u snímku, protože počet zjištěný uprostřed obnovy vypadá jako duplikace a počet po ní jako ztráta.
Načteno, nainstalováno a provoz, který prochází
Potomek v nainstalovaném stavu má vyjednané parametry a záznam v jádru. Ale nemusel nutně přenést ani paket: selektory mohou být užší než provoz, který očekáváte, a trasa může ten provoz poslat jinam, dřív než ho tunel vůbec uvidí. Pošlete tok odpovídající vyjednaným selektorům z oprávněného hostitele a pak čtěte čítače potomka, ne nadpis. Čítač, který zůstane na nule, i když generujete odpovídající provoz, ukazuje na směrování nebo politiku, ne na IKE.
swanctl --initiate --child accounting
swanctl --list-sas --raw | grep -E 'bytes|packets'
Spuštění pojmenovaného potomka je záměrná akce s viditelným výsledkem a odděluje “spojení je nečinné, protože nikdo nepožádal” od “spojení nemůže vstát”. Politika pasti na vyžádání se chová přesně jako první případ, takže si přečtěte nastavení spuštění spojení, než to nazvete poruchou.
Když je počet opravdu špatný
Pokud definice v načteném inventáři chybí, podívejte se na načítání konfigurace a na to, která instance démona běží. Pokud je načtená, ale nikdy nevyjednává, srovnejte návrhy, kontext ověřování a selektory s protějškem, po jednom potomkovi. Měňte jeden prvek na pokus a zaznamenejte identifikátor, který jste změnili. Vrátit návrh je triviální, když víte který; je to hádání po třech úpravách, které nikdy nebyly oddělené.
Nejdřív opravte chybné čtení. Většina zpráv o “chybějícím” druhém tunelu končí dvěma nainstalovanými potomky pod jedním rodičem a jediné, co kdy bylo rozbité, byl řádek se shrnutím, kterému lidé věřili místo hierarchie.