Način trap v strongSwan: zakaj tunel IPsec čaka na promet
Nedejaven tunel IPsec na zahtevo ne pokaže CHILD SA, dokler paket ne ustreza njegovi politiki trap. Preberite stanje, preverite sprožilec in vedite, kdaj se prilega start.
V izpisu stanja se ne pojavi CHILD SA, tunel je videti mrtev, nato pa ga ping v oddaljeno podomrežje dvigne. V nastavitvi IPsec na zahtevo je to zaporedje zasnova, ne okvara. Politika trap namesti izbirnik in čaka, prvi paket, ki se ujema z njo, pa zažene IKE in pogajanja o CHILD SA.
Del zmede je v slovarju: „up“ se uporablja za dve različni stanji. Konfiguracija je naložena in politika jedra obstaja, podatkovna asociacija pa ne. Monitor, ki šteje le aktivne SA, bo zdravo mesto prijavil kot nedosegljivo, dokler nihče ne pošilja prometa tja.
Nedejaven tunel na zahtevo nima nobenega CHILD SA za prikaz
Vnos trap sam po sebi ničesar ne preveri. Prosi jedro, naj drži politiko za izbrani promet in naj dvigne acquisition, ko paket potrebuje to politiko. Demon prejme acquisition, ga uskladi z definicijo child in od tam pogaja. Do tega trenutka ni za prikaz tudi nobenega IKE SA, zato sta lahko oba seznama prazna hkrati.
Prav to zaporedje naredi dnevnike berljive. Najprej pride acquisition, nato IKE_SA_INIT in IKE_AUTH, nato CHILD SA. Če se dnevnik konča takoj po acquisition, je sprožilec deloval. Pogajanja niso uspela, naslednje vprašanje pa je o poverilnicah, predlogih ali dosegljivosti, ne o trap.
Z backendom jedra Linux lahko politiko vidite, preden obstaja kateri koli SA. Zaženite ip xfrm policy in poiščite izbirnik s smerjo out in predlogo, ki kaže na povezavo. Ta vnos je stanje na zahtevo in njegova prisotnost je prva stvar, ki jo je treba potrditi.
start_action odloči, ali bo sploh kaj čakalo
Vsak child v swanctl.conf nosi start_action. start se zažene ob nalaganju konfiguracije, trap namesti politiko in čaka, none pa prepusti začetek nečemu drugemu. Le trap ustvari vedenje „ping in dvigne se“ opisano zgoraj.
children {
office-lan {
local_ts = 192.168.50.0/24
remote_ts = 192.168.70.0/24
start_action = trap
}
}
Dva izbirnika prometa določata, kaj šteje kot zanimivo, paket z gostitelja zunaj teh prefiksov pa ne sproži trap; usmeri se kot običajno. Razširitev izbirnikov, da bi bil sprožilec bolj vnet, razširi tudi obseg, ki ga tunel trdi, da ščiti, zato jih izpeljite iz prometa, ki ga resnično želite šifrirati.
Referenčni priročnik swanctl.conf navaja sprejete vrednosti skupaj z ločenima dejanjema close in DPD, ki urejata, kaj se zgodi, ko SA obstaja.
Ugotovite, ali se je sprožilec sploh sprožil
Začnite z swanctl --list-conns in potrdite, da je child naložen z želenim dejanjem. Nato pošljite en paket z gostitelja znotraj local_ts na naslov znotraj remote_ts in opazujte swanctl --list-sas. Če se izpis ne spremeni, noben acquisition ni prišel do demona.
Dva običajna razloga za tihi trap: paket je bil podvržen source-NAT, preden je zadel politiko, in se ne ujema več z local_ts, ali pa se povezava ni nikoli naložila zaradi skladenjske napake ali napake v poverilnicah. Znova zaženite swanctl --load-all in preberite izpis, preden se dotaknete izbirnikov. Povezava, ki se ni naložila, ne namesti nobene politike, zato promet nima česa sprožiti.
Tudi smer je pomembna: trap, nameščen za odhodni promet, se ne zažene ob dohodnem paketu. Če mora tunel dvigniti oddaljena stran, potrebuje svoj trap, ali pa ta stran potrebuje start.
Čakanje na prvi paket ni vedno prava menjava
Interaktivne seje občutijo stroške nastavitve. Prva zahteva plača izmenjavo IKE in pogajanja CHILD, odjemalec s kratkim rokom pa lahko obupa, preden SA obstaja. Proaktivni start odpravi to zakasnitev prvega paketa. Toda tunel drži dvignjen za promet, ki morda ne bo nikoli prišel.
Tri dejstva odločijo izbiro: kako pogosto se pot uporablja, ali ima prva zahteva tesen rok in ali je partner ob zagonu dosegljiv. Občasni paketni promet in partner, ki je ob zagonu morda brez povezave, oba govorita za trap. Odjemalec, občutljiv na zakasnitve, in vedno dosegljiv partner govorita za start. Če lahko začneta obe strani, se dogovorite, kdo ima sprožilec, da ne bo podvojenih pogajanj.
Nameščena politika tudi ni garancija proti uhajanju. Če je zahteva fail-closed, mora požarni zid zavreči promet brez SA, in to pravilo živi zunaj definicije child.
Zapišite tri vrstice, ki končajo naslednjo razpravo
Zapišite izbirnike, dejanje ob zagonu in izpis ukaza, ki kaže politiko brez SA. Te tri vrstice ločijo „na zahtevo in nedejavno“ od „se ne nalaga“, ko nekdo naslednjič sporoči, da tunel ne deluje. Zapis traja minuto. Brez njih se ista preiskava začne od nič.
Preizkusite z gostitelja, ki je res znotraj izbirnika. Ping z usmerjevalnika samega pogosto gre po drugi poti in ne dokaže ničesar o politiki, ki ščiti podomrežje za njim.