Miten reitipohjainen IPsec toimii XFRM-rajapinnan kanssa
XFRM-rajapinta antaa reitipohjaiselle IPsecille laitteen, jonka kautta reitittää. if_id:n, sen takana olevien tietoturvayhteyksien ja ulomman reitin on kaikkien sovittava yhteen.
Reitipohjainen IPsec antaa reititystaululle päätöksen, jonka ennen tekivät käytäntövalitsimet. Linuxissa sen mahdollistava osa on XFRM-rajapinta: virtuaalilaite, jonka liikenne sovitetaan IPsec-tilaan rajapintatunnisteen eikä valitsimen perusteella. Yhden luominen vaatii yhden komennon eikä todista mitään siitä, onko tunnelia olemassa. Laite on koukku reitityksen ja tietoturvakäytännön välissä, ja koukun molemmat puolet on määritettävä ennen kuin mitään suojataan.
Mikä laite on ja mikä se ei ole
XFRM-rajapinta on reitityskahva. Siihen reititetyt paketit sovitetaan XFRM-käytäntöihin, jotka viittaavat samaan rajapintatunnisteeseen, ja jos käytäntö ja tila ovat olemassa, ne kapseloidaan. Ilman niitä rajapinta on olemassa, laskurit pysyvät paikallaan ja liikenne menee paikkaan, jossa siitä ei ole hyötyä.
Tämä on ensimmäinen diagnoosin jako. Reitti laitteeseen on reititystosiasia, asennettu tila on tietoturvatosiasia, eikä laitteella nouseva laskuri ole kumpaakaan. Kun ihmiset sanovat, että tunneli on ylhäällä, koska rajapinta näyttää UP:ta, he kuvaavat virtuaalilaitteen linkkiliput, jolla ei ole omaa vastapuolta. Lippu tarkoittaa, että laite luotiin ja otettiin käyttöön, ei muuta.
Vielä yksi raja: rajapintatunniste ei ole nimi. Kahdella samannimisellä ja eri tunnisteisella laitteella ei ole yhteistä tilaa, ja väärällä tunnisteella määritetty yhteys asentaa tilan, jota mikään reitti ei koskaan käytä.
Rakenna yksi oikeassa järjestyksessä
Aloita ulommasta laitteesta ja numerosta, jonka laitat myös daemonin määritykseen. Esimerkki käyttää eth0-laitetta ulompana rajapintana ja 42:ta tunnisteena, osoitteita jotka sinun kannattaa korvata omillasi.
Nosta laite ylös ja vahvista sitten tunniste, jonka ydin kirjasi, ennen kuin kosket VPN-määritykseen:
sudo ip link add xfrm0 type xfrm dev eth0 if_id 42
sudo ip link set xfrm0 up
ip -d link show xfrm0 | grep -o 'if_id [0-9]*'Määritä nyt yhteys strongSwanissa samalla tunnisteella, koska daemonin on asennettava käytännöt ja tilat, jotka viittaavat siihen. Aseta paikalliset ja etäliikenteen valitsimet alueelle, jonka aiot reitittää, ja reititä sitten se alue laitteeseen. Daemonin määrityksen ja reititystaulun on sovittava sekä tunnisteesta että kohteista, eikä kumpikaan toimita toista.
Pidä IKE ja ESP tunnelin reitin ulkopuolella
XFRM-laitteeseen osoittava oletusreitti nappaa sekä kapseloidut paketit että niiden kuljettaman liikenteen. Tuloksena on silmukka: yhdyskäytävä yrittää lähettää oman ESP:nsä tunnelin läpi, jonka ESP:n pitäisi rakentaa.
Korjaus on tarkempi reitti vastapuolen ulommalle osoitteelle fyysisen rajapinnan kautta, ja se voittaa oletusreitin, koska täsmää useampia bittejä. Merkkipohjainen reititys tekee saman, kun useat tunnelit jakavat taulun, ja strongSwan dokumentoi molemmat lähestymistavat reitipohjaisiin käyttöönottoihin.
Mitä tahansa valitsetkin, varmista että ulompi paketti lähtee kapseloimattomana. Nopea tarkistus on pingata vastapuolen ulompaa osoitetta tunnelin noustua; jos se epäonnistuu rajapinnan ollessa ylhäällä, epäile sieppausta äläkä tavoitettavuutta. Sama logiikka pätee IKE-porttiin, koska daemonin omaa UDP-liikennettä ei saa reitittää laitteeseen, jota se yrittää muodostaa.
Tarkista laskurit kahdesta paikasta ennen kuin syytät salausta
Rajapintalaskurit ja tilalaskurit mittaavat eri vaiheita. Laitteeseen reititetyt paketit kasvattavat laitetta, vaikka mikään tila ei täsmäisi, kun taas tilalaskurit liikkuvat vain liikenteestä, joka todella kapseloitiin.
Lue molemmat ja lue sitten daemonin näkemys lapsiyhteydestä:
ip -s link show xfrm0
sudo ip xfrm state list | grep -E 'src|proto|mode'
sudo swanctl --list-sasLaitelaskureiden nousu tyhjällä tilatulosteella tarkoittaa, että reititys toimii ja käytäntö ei täsmää, yleensä tunnisteen tai valitsimen virhe. Tilalaskureiden nousu, kun etäpuoli ei raportoi mitään, tarkoittaa että paketit lähtevät mutta eivät saavu perille tai epäonnistuvat todennuksessa, mikä viittaa polkuun tai vastapuolen määritykseen. Listattu lapsi, jolla ei ole liikennettä, on valitsimen ongelma toisessa päässä, ei rikki mennyt salaus.
Päätä, kuka asentaa reitit
Kaksi omistajaa yhdelle reititystaululle on tavallinen heilahtelun lähde. Jos daemon asentaa reitit automaattisesti, verkonhallintaohjelmasi ei saa myöskään asentaa oletusreittiä saman laitteen kautta, ja käynnistyskomentosarjan lisäämä manuaalinen reitti poistetaan seuraavan kerran, kun daemon määritetään uudelleen.
Valitse yksi omistaja ja kirjoita se muistiin. Kun daemon omistaa reitit, pidä käynnistyskomentosarja poissa taulusta ja anna yhteyden määritelmän kuvata liikenteen valitsimet. Kun verkonhallintaohjelma omistaa ne, poista automaattinen asennus käytöstä ja hyväksy, että daemon ei korjaa puuttuvaa reittiä uudelleen yhdistettäessä.
Edelleenlähetys- ja palomuurisäännöt ovat erillinen päätös tämän päällä, koska muiden isäntien liikennettä välittävä yhdyskäytävä tarvitsee molemmat. Reitipohjainen IPsec tekee tämän liikenteen helpoksi ilmaista tavallisilla reititystyökaluilla; se ei tee käytäntökerroksesta valinnaista.