Polni tunel v strongSwan zahteva 0.0.0.0/0 na obeh straneh
Polni tunel zahteva 0.0.0.0/0 kot remote_ts odjemalca in local_ts prehoda, poleg tega posredovanje, NAT in povratno pot. Preverite vse štiri.
Povezava strongSwan, ki deluje za eno zasebno podomrežje, ne bo prenašala internetnega prometa samo zato, ker je nekdo uredil eno vrstico. Polni tunel je dogovor med dvema stranema o tem, katere naslove varuje child SA, in vsaka stran imenuje drugo glede na sebe. Nastavite eno stran pravilno in drugo napačno, pa child SA bodisi ne bo vstala bodisi bo vstala ožja od predvidene. Pet preverjanj spodaj sledi temu dogovoru od odjemalca, skozi prehod in ven v internet.
Najprej preverite izbirnik odjemalca
Odjemalec opisuje, kaj želi varovati na oddaljeni strani, kot remote_ts, in vse, kar pošlje, izhaja iz njegovega lastnega dodeljenega naslova. Za internetni promet mora ta vrednost pokrivati cilje, ki jih bo uporabnik dejansko dosegel, kar v praksi pomeni ves naslovni prostor IPv4. Odjemalec, ki še vedno navaja eno podomrežje, zahteva razdeljen tunel, ne glede na ime profila v vmesniku. Izvorna stran je običajno dynamic, ker se naslov dodeli ob povezavi. Fiksni vir, zapisan tam, se zlomi takoj ko se spremeni nabor naslovov.
children {
net {
local_ts = dynamic
remote_ts = 0.0.0.0/0
}
}
Ta odlomek ni popolna datoteka povezave in ta predpostavlja, da so preverjanje pristnosti, identitete in nabor navideznih naslovov že nastavljeni. Izvorni izbirnik odjemalca in naslov, ki ga dodeli strežnik, se morata še vedno ujemati, sicer child SA vstane z obsegom, ki ga nobena stran ni pričakovala. Naložite ga z swanctl --load-all in preberite izhod, preden domnevate uspeh. Datoteka, ki se razčleni, je lahko še vedno zavrnjena zaradi izbirnika, ki se ne prekriva s predlogom druge strani.
Preverite izbirnik prehoda na njegovi strani
Prehod bere isti pojem iz nasprotne smeri. Internetni cilji so za prehod lokalni, zato je njegov local_ts širok, remote_ts pa opisuje nabor odjemalcev. Ta inverzija je najpogostejša napaka v konfiguraciji polnega tunela in prestane pregled, ker sta obe vrstici videti verjetni vsaka zase.
children {
rw {
local_ts = 0.0.0.0/0
remote_ts = 10.77.0.0/24
}
}
Kopiranje odlomka odjemalca v datoteko prehoda ustvari par izbirnikov, ki ne opisuje nič uporabnega, ker bi obe strani zahtevali isto vlogo. Priročnik strongSwan za posredovanje izrecno dokumentira seznanjanje odjemalca in prehoda, in vredno ga je brati ob datoteki povezave, ne po napaki. Datoteka prehoda potrebuje tudi definicijo nabora, na katerega se sklicuje remote_ts. Izbirnik, ki imenuje neobstoječi nabor, se naloži brez pritožbe in odpove pri povezavi.
Starejši ipsec.conf uporablja levo in desno vlogo z različnimi ključi, vrstica rightsubnet pa ni neposredna zamenjava za vrednost swanctl. Hranite obe sintaksi v ločenih datotekah, namesto da eno vstavite v drugo. Mešanje v enem imeniku je način, kako delujoča povezava po ponovnem zagonu tiho pade nazaj.
Preverite dogovorjeni child SA, ne datoteke
Shranjena konfiguracija dokazuje namero in nič več. Druga stran lahko zoži zahtevano, obstoječi child SA pa se ne zamenja samo zato, ker se je datoteka pod njim spremenila. Potrdite, kaj je resnično nameščeno, preden spremenite karkoli drugega.
swanctl --list-conns
swanctl --list-sas
ip xfrm policy list
Prvi ukaz pokaže, kaj je naložil demon, drugi prikaže vzpostavljene child SA, tretji pa politike, ki jih bo uporabilo jedro. Če datoteka pravi 0.0.0.0/0 in seznam prikazuje eno podomrežje, je pogajanje zožilo obseg in ponovno branje datoteke tega ne bo pojasnilo. Končajte child, znova jo zaženite in znova primerjajte vse tri izhode. Child, ki se vrne z enakim ozkim obsegom, zožuje oddaljena stran in ne lokalna datoteka, in to je pogovor z drugim skrbnikom, ne lokalna sprememba.
Preberite obe smeri na seznamu politik, ker je tunel, ki namesti eno smer in ne druge, problem usmerjanja v konfiguracijskem kostumu. Politike naprej in nazaj morajo imenovati isti par izbirnikov v zrcalni podobi, manjkajoče zrcalo pa je napaka v demonu ali predlogu, ne v besedilu izbirnika.
Preverite posredovanje in povratno pot
Izbirnik spusti promet do prehoda, vendar prehoda ne prisili, da ta promet usmerja naprej. Posredovanje mora biti omogočeno, požarni zid mora dovoliti tok in odgovor mora najti pot nazaj v nabor odjemalcev. To so tri ločene zahteve in vsaka odpove z drugačnim simptomom. Manjkajoče pravilo posredovanja se obnaša kot črna luknja, manjkajoča povratna pot pa kot enosmerni tunel.
sysctl net.ipv4.ip_forward
iptables -t nat -S | grep -i masq
ip route get 1.1.1.1
Zasebni naslovi odjemalcev običajno potrebujejo namerno pretvorbo vira, preden lahko zapustijo javni vmesnik, medtem ko eksplicitno usmerjena dodelitev zahteva drugačno obravnavo. Če je v igri NAT, ohranite izjeme, ki jih podpira izvedba, da se promet, ki bi ga morala pregledati varnostna politika, ne pretvori mimo nje. Široko pravilo masquerade, kopirano z drugega prehoda, spremeni veliko več tokov, kot je nameraval njegov avtor. Napišite pravilo samo za nabor odjemalcev in pustite komentar, zakaj obstaja.
Na odjemalcu potrdite poti, ki jih je namestil backend, ne poti, ki ste jih predpostavili. Upravitelj z onemogočeno namestitvijo poti potrebuje ročno vzdrževan načrt usmerjanja, ta načrt pa je treba posodobiti vsakič, ko se tunel spremeni. Preverite usmerjevalno tabelo po ponovni povezavi, ne le po svežem zagonu.
Preverite, česa tunel še ne pokriva
Par izbirnikov pokriva IPv4 in nič drugega. IPv6, DNS in katerakoli politika na ravni aplikacije so ločene odločitve, ki jih širok izbirnik IPv4 tiho ignorira. Tunel, ki prenaša vsak paket IPv4, lahko še vedno uhaja vsako iskanje imena.
Izrecno navedite predvideno pot DNS, ker polni tunel, ki še vedno razrešuje imena prek lokalnega razreševalnika, uhaja poizvedbe izven tunela in kvari zasebna imena. Če odjemalec dobi naslov IPv6, ta naslovna družina potrebuje enako obravnavo, sicer bo gostitelj raje izbral pot, ki je tunel ne ščiti. Testirajte z imenom, na katero lahko odgovori samo zasebna stran, in javni odgovor obravnavajte kot uhajanje.
resolvectl query intranet.example.internal
traceroute -n 1.1.1.1
Potrdite verigo s tema dvema ukazoma plus dogovorjenimi izbirniki s seznama zgoraj. Če traceroute pokaže lokalni usmerjevalnik kot prvi skok, promet ne uporablja tunela, karkoli trdijo izbirniki. Dostop do interneta je popoln šele, ko je izbrani promet sprejet, posredovan in vrnjen skozi zasnovani prehod. Najti 0.0.0.0/0 v profilu je začetek te verige, ne njen dokaz.