Pakety môžu sledovať trasu OpenVPN a napriek tomu ich zachytí politika IPsec, a táto kombinácia vyzerá zo všetkých uhlov ako chyba smerovania okrem toho správneho. Linux vyrieši trasu a potom sa obráti na samostatnú databázu bezpečnostných politík, takže konkrétnejšia trasa k cieľu nevytlačí zodpovedajúcu politiku XFRM. Viditeľným príznakom je prevádzka, ktorá opustí hostiteľa a nikdy nedorazí, hoci oba tunely sa hlásia ako zdravé. Riešia to tri možnosti a ktorú zvolíte, závisí od toho, ktorá z dvoch ciest má tento prefix niesť.

Dve rozhodnutia, nie jedno

Výber trasy odpovedá na úzku otázku: ktorý ďalší skok a zdrojová adresa majú niesť tento paket. Databáza bezpečnostných politík odpovedá na inú: vyžaduje tento paket ochranu IPsec a pod ktorými selektormi. Obe prebiehajú pre ten istý paket, a splnenie prvého nehovorí o druhom nič. Preto zmena metriky alebo pridanie statickej trasy môže príznak nechať nedotknutý.

Široký selektor IPsec je obvyklou príčinou. Politika chrániace 172.16.0.0/12 pokrýva aj 172.20.8.0/24, kam sa správca možno chce dostať tunelom OpenVPN. Zámer existuje len v smerovacej tabuľke a databáza politík sa o ňom nikdy nedozvedela.

Berte to ako konflikt medzi dvoma nakonfigurovanými cestami ochrany, a nie ako súboj dvoch metrík. Oprava patrí komponentu, ktorý bol nakonfigurovaný s nesprávnym rozsahom.

Prečítajte si trasu, ktorú jadro skutočne volí

Začnite vyhľadaním, ktoré jadro vykonáva, vrátane zdrojovej adresy a každého pravidla politiky, ktoré by ju mohlo odkloniť do inej tabuľky. Trasa v hlavnej tabuľke nemusí byť nikdy zvážená, ak skoršie pravidlo vyberie inú tabuľku, a zhoda najdlhšieho prefixu platí len v tabuľke, ktorú pravidlo vyberie.

ip rule show
ip route show table all
ip route get 172.20.8.20 from 10.44.7.15

Posledný príkaz je ten, na ktorom záleží, pretože vypisuje zvolenú trasu spolu so zdrojovou adresou, ktorú by jadro použilo. Porovnajte tento výstup so selektorom, ktorému zodpovedá politika IPsec. Keď trasa ukazuje na rozhranie OpenVPN a politika stále zodpovedá tomu istému páru, reprodukovali ste konflikt bez hádania.

Udržujte výpisy bez nesúvisiacich adries, kým sa dostanú do tiketu. Smerovacia tabuľka z produkčného hostiteľa nesie internú topológiu a vložiť sa oplatí len riadky, ktoré odpovedajú na otázku.

Prečítajte si aj politiku, ktorá platí

Výpis politík ukazuje smer, selektory a šablónu, ktorá rozhoduje, čo sa stane so zodpovedajúcim paketom. Najprv čítajte odchádzajúci smer, potom vstupnú stranu pre návratovú prevádzku, pretože jednosmerná výnimka vytvára spojenie, ktoré sa začne a nikdy sa nedokončí.

ip -s xfrm policy
swanctl --list-sas

Porovnajte selektory vo výpise s prefixmi, ktoré spojenie vyjednalo. Vypnutie inštalácie trás v strongSwan tie politiky neodstráni a zmena metriky nemení, ktorý pár zdroja a cieľa politika chráni. Tieto dve nepravé opravy sa oplatí vylúčiť skoro, pretože ich ľudia skúšajú ako prvé.

Ak výpis neobsahuje politiku pre očakávaný prefix, problém je inde a smerovacia tabuľka pravdepodobne hovorí pravdu. Ak obsahuje širšiu politiku, ktorá prefix pokrýva, našli ste zachytenie.

Tri možnosti, keď sú obe cesty oprávnené

Zúženie selektora IPsec je najčistejšia možnosť, keď bol široký prefix pohodlím a nie požiadavkou. Zmenšenie selektora vzdialenej prevádzky na podsiete, ktoré skutočne patria za IPsec, odstráni konflikt pre každého hostiteľa naraz a stojí obnovu kľúčov, nie nový komponent.

Výnimka prechodu je chirurgická možnosť, keď široký selektor musí zostať. strongSwan podporuje samostatné spojenie, ktorého potomok používa režim pass, čo jadru hovorí, že zodpovedajúca prevádzka nesmie byť spracovaná cez IPsec. Vzdialená adresa loopback bráni tomu, aby bolo toto spojenie vybrané pre prichádzajúcich partnerov, a selektory musia opisovať skutočný povolený pár, nie všetko.

connections {
    openvpn-exception {
        remote_addrs = 127.0.0.1
        children {
            openvpn-exception {
                local_ts = 10.44.7.0/24
                remote_ts = 172.20.8.0/24
                mode = pass
                start_action = trap
            }
        }
    }
}

Príklady konfigurácie strongSwan dokumentujú tento typ politiky a konvenciu partnera loopback. Treťou možnosťou je návrh založený na smerovaní s rozhraniami XFRM, ktorý viaže politiku na prevádzku smerovanú cez pomenované rozhranie namiesto globálneho selektora. Je to migrácia, nie úprava, a prevádzka musí stále spĺňať vyjednané selektory.

OptionUse it whenCost
Narrow the selectorThe broad prefix was convenienceA rekey and a policy review
Passthrough childThe broad selector must stayOne exception per intended pair
XFRM interfacePolicy should follow routingA design migration

Dokážte výnimku bez oslabenia zvyšku

Po načítaní zmeny otestujte výnimku a bežný cieľ, ktorý musí zostať chránený. Skontrolujte oba smery, potom zhoďte tunel OpenVPN a potvrďte, čo sa stane s vyňatou prevádzkou. Výnimka, ktorá pri vypnutom tuneli ticho posiela tento prefix otvorene, je rozhodnutie o politike, ktoré by ste mali urobiť zámerne, nie objaviť počas incidentu.

Zaznamenajte, ktorý prefix používa ktorú cestu a prečo. Inak ďalší inženýr, ktorý uvidí široký selektor, znova otvorí to isté vyšetrovanie a odpoveď bude v commit správe, ktorú nikto nečíta.

Súvisiace články