Bakit Natatalo ng Isang Ruta ng OpenVPN ang Polisiyang XFRM ng strongSwan
Ang isang partikular na ruta ng OpenVPN ay hindi lumalampas sa polisiyang XFRM: basahin ang ruta at ang mga tagapili ng polisiya, pagkatapos ay paliitin, magpahintulot ng eksepsiyon o lumipat sa interface ng XFRM.
Maaaring sumunod ang mga packet sa isang ruta ng OpenVPN at mahuli pa rin ng polisiyang IPsec, at ang kombinasyong iyon ay mukhang bug sa routing mula sa bawat anggulo maliban sa tamang isa. Nilulutas ng Linux ang isang ruta at pagkatapos ay kumukonsulta sa hiwalay na database ng mga polisiyang pangseguridad, kaya ang mas tiyak na rutang patungo sa destinasyon ay hindi nagtataboy sa tugmang polisiyang XFRM. Ang nakikitang sintomas ay trapikong umaalis sa host at hindi kailanman dumarating, samantalang ang dalawang tunel ay nag-uulat na malusog ang mga ito. Tatlong opsiyon ang lumulutas nito, at kung alin ang pipiliin mo ay nakasalalay sa alin sa dalawang landas ang dapat magdala ng prefiks na iyon.
Dalawang desisyon, hindi isa
Sinasagot ng pagpili ng ruta ang makitid na tanong: aling susunod na hop at aling address ng pinagmulan ang dapat magdala ng packet na ito. Sinasagot ng database ng mga polisiyang pangseguridad ang iba: kailangan ba ng packet na ito ang proteksiyong IPsec, at sa ilalim ng aling mga tagapili. Pareho silang tumatakbo para sa parehong packet, at ang pagsunod sa una ay walang sinasabi tungkol sa pangalawa. Kaya ang pagbabago ng metrik o pagdaragdag ng statikong ruta ay maaaring iwanang hindi nagalaw ang sintomas.
Ang malawak na tagapili ng IPsec ang karaniwang dahilan. Ang polisiyang nagpoprotekta sa 172.16.0.0/12 ay sumasakop din sa 172.20.8.0/24, kung saan maaaring sinasadyang makarating ang administrador sa pamamagitan ng tunel ng OpenVPN. Ang layunin ay umiiral lamang sa talahanayan ng routing, at hindi kailanman nalaman iyon ng database ng polisiya.
Ituring iyon na salungatan ng dalawang nakumpigurang landas ng proteksiyon at hindi labanan ng dalawang metrik. Ang pagwawasto ay kabilang sa sangkap na nakumpigura nang may maling saklaw.
Basahin ang rutang aktuwal na pinipili ng kernel
Magsimula sa paghahanap na ginagawa ng kernel, kasama ang address ng pinagmulan at anumang tuntunin ng polisiyang maaaring maglihis nito sa ibang talahanayan. Ang ruta sa pangunahing talahanayan ay maaaring hindi kailanman isaalang-alang kung ang naunang tuntunin ay pumili ng ibang talahanayan, at ang pagtutugma ng pinakamahabang prefiks ay nalalapat lamang sa loob ng talahanayang pinipili ng isang tuntunin.
ip rule show
ip route show table all
ip route get 172.20.8.20 from 10.44.7.15
Ang huling utos ang mahalaga, dahil ipinapakita nito ang piniling ruta kasama ang address ng pinagmulang gagamitin ng kernel. Ihambing ang output na iyon sa tagapiling tinutugma ng polisiyang IPsec. Kapag ang ruta ay tumuturo sa interface ng OpenVPN at ang polisiya ay tumutugma pa rin sa parehong pares, nagawa mong muli ang salungatan nang hindi nanghuhula.
Panatilihing walang hindi kaugnay na address ang mga dump bago ito makarating sa tiket. Ang talahanayan ng routing mula sa production host ay may dalang panloob na topolohiya, at tanging ang mga linyang sumasagot sa tanong ang sulit i-paste.
Basahin din ang polisiyang nalalapat
Ipinapakita ng listahan ng polisiya ang direksiyon, mga tagapili at ang template na nagpapasya kung ano ang mangyayari sa tugmang packet. Basahin muna ang papalabas na direksiyon, pagkatapos ang papasok na panig para sa trapikong pabalik, dahil ang eksepsiyong isang direksiyon ay gumagawa ng koneksiyong nagsisimula at hindi kailanman natatapos.
ip -s xfrm policy
swanctl --list-sas
Ihambing ang mga tagapili sa listahan sa mga prefiks na pinagkasunduan ng koneksiyon. Ang pagpatay sa pag-install ng ruta ng strongSwan ay hindi nag-aalis ng mga polisiyang iyon, at ang pagbabago ng metrik ay hindi nagbabago kung aling pares ng pinagmulan at destinasyon ang ipinoprotekta ng polisiyang iyon. Ang dalawang huwad na pagwawastong ito ay sulit ibukod nang maaga, dahil ang mga ito ang unang sinusubukan ng mga tao.
Kung ang listahan ay walang polisiya para sa prefiks na inaasahan mo, ang problema ay nasa ibang lugar at malamang na nagsasabi ng totoo ang talahanayan ng routing. Kung mayroon itong mas malawak na polisiyang sumasakop sa prefiks, natagpuan mo ang paghuli.
Tatlong opsiyon kapag parehong lehitimo ang dalawang landas
Ang pagpapaliit ng tagapiling IPsec ang pinakamalinis na opsiyon kapag ang malawak na prefiks ay kaginhawahan at hindi kinakailangan. Ang pagbawas ng tagapili ng malayong trapiko sa mga subnet na tunay na kabilang sa likod ng IPsec ay nag-aalis ng salungatan para sa bawat host nang sabay, at ang halaga ay muling pakikipag-usap sa susi, hindi bagong sangkap.
Ang eksepsiyong passthrough ang surgical na opsiyon kapag dapat manatili ang malawak na tagapili. Sinusuportahan ng strongSwan ang hiwalay na koneksiyong ang child ay gumagamit ng pass mode, na nagsasabi sa kernel na ang tugmang trapiko ay hindi dapat iproseso ng IPsec. Pinipigilan ng malayong address na loopback na mapili ang koneksiyong iyon para sa mga papasok na kapares, at dapat ilarawan ng mga tagapili ang tunay na awtorisadong pares at hindi lahat.
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
}
}
}
}
Ang mga halimbawa ng konfigurasyon ng strongSwan ay nagdodokumento sa ganitong uri ng polisiya at sa kombensiyon ng kapares na loopback. Ang ikatlong opsiyon ay isang disenyong batay sa routing na may mga interface ng XFRM, na nagtatali ng polisiya sa trapikong niruruta sa isang pinangalanang interface sa halip na sa pandaigdigang tagapili. Ito ay migrasyon at hindi pagsasaayos, at ang trapiko ay dapat pa ring sumunod sa mga pinagkasunduang tagapili.
| Option | Use it when | Cost |
|---|---|---|
| Narrow the selector | The broad prefix was convenience | A rekey and a policy review |
| Passthrough child | The broad selector must stay | One exception per intended pair |
| XFRM interface | Policy should follow routing | A design migration |
Patunayan ang eksepsiyon nang hindi nagpapahina sa iba
Pagkatapos i-load ang pagbabago, subukan ang eksepsiyon at isang ordinaryong destinasyon na dapat manatiling protektado. Suriin ang dalawang direksiyon, pagkatapos ay ibagsak ang tunel ng OpenVPN at tiyakin kung ano ang nangyayari sa trapikong may eksepsiyon. Ang eksepsiyong tahimik na nagpapadala sa prefiks na iyon nang hayagan kapag bagsak ang tunel ay desisyon sa polisiyang dapat mong gawin nang sinasadya, hindi matuklasan habang may insidente.
Itala kung aling prefiks ang gumagamit ng aling landas at bakit. Kung hindi, muling bubuksan ng susunod na inhinyerong makakita ng malawak na tagapili ang parehong imbestigasyon, at ang sagot ay mananatili sa isang mensahe ng commit na walang bumabasa.