strongSwan-ühendus, mis töötab ühe privaatse alamvõrgu jaoks, ei hakka internetiliiklust kandma lihtsalt sellepärast, et keegi muutis üht rida. Täistunnel on kahe poole kokkulepe selle kohta, milliseid aadresse child SA kaitseb, ja kumbki pool nimetab teist poolt enda suhtes. Tee üks pool õigeks ja teine valeks ning child SA kas ei tõuse või tõuseb kavandatust kitsamana. Allpool olevad viis kontrolli järgivad seda kokkulepet kliendist läbi lüüsi internetini.

Kontrollige kõigepealt kliendi selektorit

Klient kirjeldab seda, mida ta kaugemal poolel kaitsta tahab, kui remote_ts, ja kõik, mida ta saadab, pärineb tema enda määratud aadressilt. Internetiliikluse jaoks peab see väärtus katma sihtkohad, mida kasutaja tegelikult saavutab, mis praktikas tähendab kogu IPv4-ruumi. Klient, kes ikka loetleb üht alamvõrku, küsib jaotatud tunnelit, ükskõik kuidas profiili liideses nimetatakse. Lähtepool on tavaliselt dynamic, sest aadress määratakse ühendamise hetkel. Sinna kirjutatud fikseeritud lähtekoht puruneb kohe, kui aadressikogu muutub.

children {
    net {
        local_ts  = dynamic
        remote_ts = 0.0.0.0/0
    }
}

See fragment ei ole täielik ühendusfail ja eeldab, et autentimine, identiteedid ja virtuaalsete aadresside kogu on juba seadistatud. Kliendi lähteselektor ja serveri määratud aadress peavad endiselt kokku langema, muidu tõuseb child SA ulatusega, mida kumbki pool ei oodanud. Laadige see käsuga swanctl --load-all ja lugege väljundit enne edu eeldamist. Fail, mis parsitakse, võib siiski tagasi lükata selektori tõttu, mis ei kattu teise poole ettepanekuga.

Kontrollige lüüsi selektorit tema enda poolel

Lüüs loeb sama mõistet vastassuunast. Interneti sihtkohad on lüüsile lokaalsed, seega on tema local_ts lai ja remote_ts kirjeldab kliendikogu. See pööramine on täistunneli seadistuses kõige levinum viga ja see läbib ülevaatuse, sest mõlemad read näivad eraldi usutavad.

children {
    rw {
        local_ts  = 0.0.0.0/0
        remote_ts = 10.77.0.0/24
    }
}

Kliendifragmendi kopeerimine lüüsi faili loob selektoripaari, mis ei kirjelda midagi kasulikku, sest mõlemad pooled nõuaksid sama rolli. strongSwani edasisaatmise juhend dokumenteerib kliendi ja lüüsi paaristamise selgesõnaliselt ning seda tasub lugeda ühendusfaili kõrval, mitte pärast ebaõnnestumist. Lüüsi fail vajab ka selle aadressikogu määratlust, millele remote_ts viitab. Selektor, mis nimetab olematut aadressikogu, laaditakse ilma kaebuseta ja see ebaõnnestub ühendamisel.

Vana ipsec.conf kasutab vasakut ja paremat rolli erinevate võtmetega ning rightsubnet rida ei ole swanctl-väärtuse otsene asendus. Hoidke kahte süntaksit eraldi failides, selle asemel et üht teise sisse kleepida. Nende segamine ühes kataloogis on viis, kuidas töötav ühendus pärast taaskäivitust vaikselt tagasi vajub.

Kontrollige kokku lepitud child SA-d, mitte faili

Salvestatud seadistus tõestab kavatsust ja mitte enamat. Teine pool võib soovitut kitsendada ning olemasolevat child SA-d ei asendata ainult sellepärast, et fail selle all muutus. Kinnitage, mis on tegelikult paigaldatud, enne kui midagi muud muudate.

swanctl --list-conns
swanctl --list-sas
ip xfrm policy list

Esimene käsk näitab, mida deemon laadis, teine näitab loodud child SA-sid ja kolmas poliitikaid, mida tuum rakendab. Kui fail ütleb 0.0.0.0/0 ja loend näitab üht alamvõrku, kitsendas läbirääkimine ulatust ja faili uuesti lugemine ei selgita seda. Lõpetage child, käivitage see uuesti ja võrrelge kõiki kolme väljundit uuesti. Child, mis naaseb sama kitsa ulatusega, on kitsendatud kaugema poole, mitte kohaliku faili poolt, ja see on vestlus teise administraatoriga, mitte kohalik muudatus.

Lugege poliitikaloendis mõlemat suunda, sest tunnel, mis paigaldab ühe suuna ja mitte teise, on marsruutimisprobleem seadistuse kostüümis. Edasi- ja tagasipoliitikad peaksid nimetama sama selektoripaari peegelpildis ning puuduv peegel on viga deemonis või ettepanekus, mitte selektori tekstis.

Kontrollige edasisaatmist ja tagasiteed

Selektor lubab liiklust lüüsini; see ei pane lüüsi seda liiklust edasi marsruutima. Edasisaatmine peab olema lubatud, tulemüür peab voolu läbi laskma ja vastus peab leidma tee tagasi kliendikogu juurde. Need on kolm eraldi nõuet ja igaüks ebaõnnestub erineva sümptomiga. Puuduv edasisaatmisreegel käitub nagu must auk, samas kui puuduv tagasitee marsruut käitub nagu ühesuunaline tunnel.

sysctl net.ipv4.ip_forward
iptables -t nat -S | grep -i masq
ip route get 1.1.1.1

Privaatsed kliendiaadressid vajavad tavaliselt teadlikku lähteteisendust enne, kui need saavad avalikust liidesest väljuda, samas kui selgesõnaliselt marsruuditud eraldus vajab teistsugust käsitlust. Kui NAT on mängus, hoidke alles implementatsiooni toetatud erandid, et turvapoliitika poolt kontrollitav liiklus ei teisenduks sellest mööda. Teisest lüüsist kopeeritud lai masquerade-reegel muudab palju rohkem vooge, kui selle autor kavatses. Kirjutage reegel ainult kliendikogu jaoks ja jätke kommentaar, mis selgitab, miks see olemas on.

Kliendis kinnitage marsruudid, mille backend paigaldas, mitte marsruudid, mida te eeldasite. Haldur, mille marsruutide paigaldamine on välja lülitatud, vajab käsitsi hooldatavat marsruutimiskavandit ja seda kavandit tuleb iga tunneli muutuse korral uuendada. Kontrollige marsruutimistabelit pärast uuesti ühendamist, mitte ainult pärast värsket algkäivitust.

Kontrollige, mida tunnel endiselt ei kata

Selektoripaar katab IPv4 ja mitte midagi muud. IPv6, DNS ja mis tahes rakendustasandi poliitika on eraldi otsused, mida lai IPv4-selektor vaikselt eirab. Tunnel, mis kannab iga IPv4-paketti, võib siiski iga nimeotsingu lekitada.

Märkige kavandatud DNS-tee selgesõnaliselt, sest täistunnel, mis veel lahendab nimesid kohaliku resolveri kaudu, lekib päringud väljapoole tunnelit ja rikub privaatseid nimesid. Kui kliendile määratakse IPv6-aadress, vajab see aadresside perekond sama käsitlust, muidu eelistab host teed, mida tunnel ei kaitse. Testige nimega, millele ainult privaatne pool saab vastata, ja käsitlege avalikku vastust lekkena.

resolvectl query intranet.example.internal
traceroute -n 1.1.1.1

Kinnitage ahel nende kahe käsuga pluss ülaltoodud loendi kokkulepitud selektoritega. Kui traceroute näitab kohalikku ruuterit esimese hüppena, ei kasuta liiklus tunnelit, ükskõik mida selektorid väidavad. Internetiühendus on täielik alles siis, kui valitud liiklus lubatakse, saadetakse edasi ja tuuakse tagasi kavandatud lüüsi kaudu. 0.0.0.0/0 profiilist leidmine on selle ahela algus, mitte selle tõestus.

Seotud artiklid