Paketid võivad järgida OpenVPN-i marsruuti ja tulla ikkagi IPsec-poliitika poolt tabatuks, ning see kombinatsioon näeb igast nurgast välja nagu marsruutimisviga, välja arvatud õigest. Linux lahendab marsruudi ja seejärel konsulteerib eraldi turbepoliitikate andmebaasiga, seega täpsem sihtkoha marsruut ei tõrju kõrvale sobivat XFRM-poliitikat. Nähtav sümptom on liiklus, mis lahkub peremeest ja ei jõua kunagi kohale, samal ajal kui mõlemad tunnelid teatavad end tervetena. Selle lahendab kolm valikut ja see, millise valite, sõltub sellest, milline kahest teest peaks seda eesliidet kandma.

Kaks otsust, mitte üks

Marsruudi valik vastab kitsale küsimusele: milline järgmine hüpe ja lähteaadress peaksid seda paketti kandma. Turbepoliitikate andmebaas vastab teisele: kas see pakett vajab IPsec-kaitset ja milliste valijate all. Mõlemad töötavad sama paketi jaoks ja esimese rahuldamine ei ütle teise kohta midagi. Seetõttu võib mõõdiku muutmine või staatilise marsruudi lisamine jätta sümptomi puutumata.

Lai IPsec-valija on tavaline põhjus. Poliitika, mis kaitseb 172.16.0.0/12, katab ka 172.20.8.0/24, kuhu administraator võib kavatseda jõuda hoopis OpenVPN-i tunneli kaudu. Kavatsus on ainult marsruutimistabelis ja poliitikate andmebaas ei ole sellest kunagi teada saanud.

Käsitlege seda konfliktina kahe konfigureeritud kaitse tee vahel, mitte kahe mõõdiku võistlusena. Parandus kuulub sellele komponendile, mis konfigureeriti vale ulatusega.

Lugege marsruuti, mille kernel tegelikult valib

Alustage otsingust, mille kernel teeb, sealhulgas lähteaadress ja mis tahes poliitikareegel, mis võiks selle teise tabelisse suunata. Põhitabelis olevat marsruuti ei pruugita kunagi vaadata, kui varasem reegel valib teise tabeli, ja pikima eesliite sobivus kehtib ainult tabeli sees, mille reegel valib.

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

Viimane käsk on see, mis loeb, sest see trükib valitud marsruudi koos lähteaadressiga, mida kernel kasutaks. Võrrelge seda väljundit valijaga, millega IPsec-poliitika sobib. Kui marsruut osutab OpenVPN-i liidesele ja poliitika sobib endiselt sama paariga, olete konflikti ilma oletusteta taastanud.

Hoidke väljavõtted kõrvaliste aadressideta, enne kui need piletini jõuavad. Tootmisperemehe marsruutimistabel kannab sisemist topoloogiat ja ainult küsimusele vastavad read on kleepimist väärt.

Lugege poliitikat, mis samuti kehtib

Poliitikate loend näitab suunda, valijaid ja malli, mis otsustab, mis juhtub sobiva paketiga. Lugege kõigepealt väljuvat suunda, seejärel sisenevat poolt tagasiliikluse jaoks, sest ühesuunaline erand loob ühenduse, mis algab ega lõpe kunagi.

ip -s xfrm policy
swanctl --list-sas

Võrrelge loendis olevaid valijaid eesliidetega, mille ühendus läbi rääkis. strongSwani marsruutide paigaldamise keelamine ei eemalda neid poliitikaid ja mõõdiku muutmine ei muuda, millist lähte- ja sihtpaari poliitika kaitseb. Need kaks vale-parandust tasub varakult välistada, sest neid proovitakse kõigepealt.

Kui loendis pole oodatud eesliite jaoks poliitikat, on probleem mujal ja marsruutimistabel räägib tõenäoliselt tõtt. Kui selles on laiem poliitika, mis eesliite katab, olete tabamise leidnud.

Kolm valikut, kui mõlemad teed on seaduslikud

IPsec-valija kitsendamine on puhtaim valik, kui lai eesliide oli mugavus, mitte nõue. Kaugliikluse valija vähendamine alamvõrkudeks, mis tõesti kuuluvad IPsec-i taha, kõrvaldab konflikti kõigi peremeeste jaoks korraga ja maksab võtme uuesti läbirääkimise, mitte uue komponendi.

Läbipääsu erand on kirurgiline valik, kui lai valija peab jääma. strongSwan toetab eraldi ühendust, mille laps kasutab režiimi pass, mis ütleb kernelile, et sobivat liiklust ei tohi IPsec töödelda. Loopback-i kaugaadress hoiab selle ühenduse saabuvate partnerite jaoks valimast ja valijad peavad kirjeldama tegelikku lubatud paari, mitte kõike.

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
            }
        }
    }
}

strongSwani konfiguratsiooninäited dokumenteerivad seda poliitikatüüpi ja loopback-partneri kokkulepet. Kolmas valik on marsruudipõhine disain XFRM-liidestega, mis seob poliitika liiklusega, mis on suunatud läbi nimetatud liidese, mitte globaalse valijaga. See on migratsioon, mitte häälestus, ja liiklus peab endiselt vastama läbiräägitud valijatele.

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

Tõestage erand, ilma et nõrgendaksite ülejäänut

Pärast muudatuse laadimist testige erandit ja tavalist sihtkohta, mis peab jääma kaitstuks. Kontrollige mõlemat suunda, seejärel laske OpenVPN-i tunnel alla ja kinnitage, mis juhtub erandiga hõlmatud liiklusega. Erand, mis saadab selle eesliite vaikselt avatult, kui tunnel on maas, on poliitikaotsus, mille peaksite tegema teadlikult, mitte avastama intsidendi ajal.

Kirjutage üles, milline eesliide kasutab millist teed ja miks. Muidu avab järgmine insener, kes näeb laia valijat, sama uurimise uuesti ja vastus seisab commit-sõnumis, mida keegi ei loe.

Seotud artiklid