Puni tunel u strongSwanu treba 0.0.0.0/0 na obje strane
Puni tunel treba 0.0.0.0/0 kao klijentov remote_ts i kao gatewayev local_ts, uz prosljeđivanje, NAT i povratnu rutu. Provjerite sva četiri.
strongSwan veza koja radi za jednu privatnu podmrežu neće prenositi internetski promet samo zato što je netko uredio jedan redak. Puni tunel je dogovor između dvije strane o tome koje adrese child SA štiti, a svaka strana naziva drugu stranu u odnosu na sebe. Postavite jednu stranu ispravno, a drugu pogrešno, i child SA se ili neće podići ili će se podići uže nego što je predviđeno. Pet provjera u nastavku prati taj dogovor od klijenta, kroz gateway i prema internetu.
Prvo provjerite klijentov selektor
Klijent opisuje što želi zaštititi na daljoj strani kao remote_ts, a sve što šalje potječe s njegove vlastite dodijeljene adrese. Za internetski promet ta vrijednost mora pokrivati odredišta do kojih će korisnik stvarno doći, što u praksi znači cijeli IPv4 prostor. Klijent koji još navodi jednu podmrežu traži podijeljeni tunel, kako god se profil zvao u sučelju. Strana izvora obično je dynamic jer se adresa dodjeljuje pri povezivanju. Fiksni izvor zapisan ondje puca čim se skup adresa promijeni.
children {
net {
local_ts = dynamic
remote_ts = 0.0.0.0/0
}
}
Ulomak nije potpuna datoteka veze, a ovaj pretpostavlja da su autentifikacija, identiteti i skup virtualnih adresa već konfigurirani. Klijentov selektor izvora i adresa koju poslužitelj dodjeljuje još se moraju slagati, inače se child SA podiže s opsegom koji nijedna strana nije očekivala. Učitajte ga s swanctl --load-all i pročitajte izlaz prije nego pretpostavite uspjeh. Datoteka koja se parsira još može biti odbijena zbog selektora koji se ne preklapa s prijedlogom druge strane.
Provjerite gatewayev selektor na njegovoj strani
Gateway čita isti pojam iz suprotnog smjera. Internetska odredišta lokalna su za gateway, pa je njegov local_ts široki, a remote_ts opisuje klijentski skup adresa. Ta je inverzija najčešća pogreška u konfiguraciji punog tunela i preživljava pregled jer oba retka zasebno izgledaju uvjerljivo.
children {
rw {
local_ts = 0.0.0.0/0
remote_ts = 10.77.0.0/24
}
}
Kopiranje klijentskog ulomka u datoteku gatewaya stvara par selektora koji ne opisuje ništa korisno, jer bi obje strane tražile istu ulogu. strongSwanov vodič za prosljeđivanje izričito dokumentira uparivanje klijenta i gatewaya, a vrijedi ga čitati uz datoteku veze, a ne nakon neuspjeha. Datoteci gatewaya treba i definicija skupa adresa na koju upućuje remote_ts. Selektor koji imenuje nepostojeći skup adresa učitava se bez prigovora i pada pri povezivanju.
Stari ipsec.conf koristi lijeve i desne uloge s različitim ključevima, a redak rightsubnet nije izravna zamjena za swanctl vrijednost. Držite dvije sintakse u odvojenim datotekama umjesto da jednu lijepite u drugu. Miješanje u jednom direktoriju način je na koji radna veza tiho vrati staro stanje nakon ponovnog pokretanja.
Provjerite pregovoreni child SA, a ne datoteku
Spremljena konfiguracija dokazuje namjeru i ništa više. Druga strana može suziti zatraženo, a postojeći child SA ne zamjenjuje se samo zato što se datoteka pod njim promijenila. Potvrdite što je stvarno instalirano prije nego promijenite bilo što drugo.
swanctl --list-conns
swanctl --list-sas
ip xfrm policy list
Prva naredba pokazuje što je daemon učitao, druga prikazuje uspostavljene child SA-ove, a treća politike koje će kernel primijeniti. Ako datoteka kaže 0.0.0.0/0, a popis pokazuje jednu podmrežu, pregovori su suzili opseg i ponovno čitanje datoteke to neće objasniti. Prekinite child, ponovno ga pokrenite i usporedite sva tri izlaza. Child koji se vrati s istim uskim opsegom sužava dalja strana, a ne lokalna datoteka, i to je razgovor s drugim administratorom, a ne lokalna izmjena.
Čitajte oba smjera na popisu politika, jer tunel koji instalira jedan smjer, a ne drugi, problem je usmjeravanja u kostimu konfiguracije. Politike naprijed i natrag trebaju imenovati isti par selektora u zrcalnoj slici, a nedostajuće zrcalo je defekt u daemonu ili u prijedlogu, ne u tekstu selektora.
Provjerite prosljeđivanje i povratnu rutu
Selektor propušta promet do gatewaya; ne čini da gateway taj promet dalje usmjerava. Prosljeđivanje mora biti omogućeno, vatrozid mora dopustiti tok, a odgovor mora naći put natrag do klijentskog skupa adresa. To su tri odvojena zahtjeva i svaki pada s drugačijim simptomom. Nedostajuće pravilo prosljeđivanja ponaša se kao crna rupa, dok nedostajuća povratna ruta izgleda kao jednosmjerni tunel.
sysctl net.ipv4.ip_forward
iptables -t nat -S | grep -i masq
ip route get 1.1.1.1
Privatne klijentske adrese obično trebaju namjerno prevođenje izvora prije nego što napuste javno sučelje, dok eksplicitno usmjerena dodjela traži drugačiji postupak. Ako je NAT u igri, zadržite iznimke koje implementacija podržava kako se promet koji sigurnosna politika treba pregledati ne bi prevodio mimo nje. Široko masquerade pravilo kopirano s drugog gatewaya mijenja mnogo više tokova nego što je autor namjeravao. Napišite pravilo samo za klijentski skup adresa i ostavite komentar zašto postoji.
Na klijentu potvrdite rute koje je backend instalirao, a ne rute koje ste pretpostavili. Upravitelj s isključenom instalacijom ruta treba ručno održavan dizajn usmjeravanja, a taj se dizajn mora ažurirati kad se tunel promijeni. Provjerite tablicu usmjeravanja nakon ponovnog povezivanja, ne samo nakon svježeg podizanja.
Provjerite što tunel još ne pokriva
Par selektora pokriva IPv4 i ništa drugo. IPv6, DNS i svaka politika na razini aplikacije odvojene su odluke koje široki IPv4 selektor tiho ignorira. Tunel koji prenosi svaki IPv4 paket još može procuriti svaku pretragu imena.
Eksplicitno navedite predviđeni DNS put, jer puni tunel koji još razrješava imena preko lokalnog resolvera curi upite izvan tunela i kvari privatna imena. Ako klijent dobije IPv6 adresu, ta adresna obitelj treba isti tretman, inače će host preferirati put koji tunel ne štiti. Testirajte imenom na koje samo privatna strana može odgovoriti i tretirajte javni odgovor kao curenje.
resolvectl query intranet.example.internal
traceroute -n 1.1.1.1
Potvrdite lanac tim dvjema naredbama plus pregovorenim selektorima s popisa gore. Ako traceroute pokaže lokalni usmjerivač kao prvi skok, promet ne koristi tunel bez obzira što selektori tvrde. Pristup internetu potpun je tek kad se odabrani promet propusti, proslijedi i vrati kroz projektirani gateway. Pronalaženje 0.0.0.0/0 u profilu početak je tog lanca, a ne dokaz.