Saatat ajatella, että IKEv2-yhteys on yksi vaihto, joka päättyy liikenteesi salautumiseen. Niitä on vähintään kaksi, eikä ensimmäinen todenna ketään. Osapuolet aloittavat ohjausviesteillä, sopivat salausparametreista, todistavat identiteettinsä ja vasta sen jälkeen neuvottelevat tilan, joka kuljettaa sovelluksen paketteja. Tämä järjestys selittää ristiriidan, jota ihmiset raportoivat jatkuvasti: yhdyskäytävä vastaa, asiakas sanoo olevansa yhteydessä ja yksityinen sovellus silti aikakatkaistaan. Tässä on, mitä kukin vaihe todella tekee ja mitä sen jälkeen pitää olla totta.

Myytti: jos yhdyskäytävä vastaa, olet yhteydessä

Vastaus ensimmäiseen viestiin todistaa, että päätepiste on tavoitettavissa ja valmis puhumaan. Se ei todista, että tili hyväksyttiin, että varmenteen ketju validoitiin tai että jokin datakäytäntö asennettiin.

Ne epäonnistumiset tapahtuvat myöhemmin, ja ne tuottavat erilaisia oireita. Varmenteen hylkäys tai EAP-virhe saapuu sen jälkeen, kun ensimmäinen vaihto on jo onnistunut, minkä vuoksi ping UDP 500:aan ja asiakkaan vihreä kuvake kertovat niin vähän.

IKE_SA_INIT: sovi parametreista, ei identiteetistä

Ensimmäinen vaihto kuljettaa IKE-turvayhteyden ehdotukset: salaus- ja eheysalgoritmit, näennäissatunnaisfunktion ja Diffie-Hellman-ryhmän. Osapuolet vaihtavat myös noncet, ja kumpikin osapuoli johtaa IKE SA:n avainmateriaalin jaetusta salaisuudesta, jonka nämä arvot tuottavat. Mikään tässä vaihdossa ei vahvista, kuka toinen osapuoli on. Se vahvistaa, että molemmat osapuolet osaavat laskea samat avaimet ja että ne ovat yhtä mieltä ehdotuksesta. Vastaaja, jolle mikään ehdotus ei kelpaa, hylkää vaihdon tässä, minkä vuoksi versio- tai algoritmiero näyttää siltä kuin palvelin olisi alhaalla.

Tässä luotu IKE SA suojaa kaikki myöhemmät hallintavaihdot. Se on sen tehtävä, ja se on eri tehtävä kuin pakettiesi suojaaminen.

IKE_AUTH: todista identiteetti ja rakenna sitten ensimmäinen CHILD SA

Toinen vaihto kuljettaa identiteetin. Varmenteilla kumpikin osapuoli allekirjoittaa yksityisavaimellaan ja esittää ketjun, jonka toinen osapuoli joutuu validoimaan; EAP:lla vastaaja haastaa aloittajan valitulla menetelmällä. Tässä väärä palvelimen nimi, vanhentunut varmenne tai hylätty salasana lopulta paljastuu.

Normaalitapauksessa IKE_AUTH neuvottelee myös ensimmäisen CHILD SA:n, joten datansuojaus sovitaan samalla edestakaisella kierroksella. Aloittaja ehdottaa liikenteen valitsimia, vastaaja kaventaa tai hylkää ne, ja datapolun avaimet johdetaan IKE SA:sta. Se tarkoittaa, että yksi vaihto voi epäonnistua kahdessa hyvin erilaisessa paikassa: identiteetissä tai käytännössä. Lue ilmoituskuorma tai virhe yleisen kättelyvirheen sijaan, koska toisen korjaus on varmenne ja toisen aliverkon ristiriita.

Kaksi SA:ta, kaksi tehtävää

YhteysSuojaaElinajan käyttäytyminen
IKE SAHallintavaihdot: avainten uusiminen, poisto, konfigurointikuormatUusitaan oman aikataulunsa mukaan; datapolku voi selviytyä muutoksesta
CHILD SALiikenteen valitsimia vastaava sovellusliikenneUusitaan itsenäisesti, usein tiheämmin

Niiden erossa pitäminen selittää kaksi käyttäytymistä, jotka näyttävät bugeilta. Yhteys voi näkyä muodostettuna, kun avainten uusiminen epäonnistuu taustalla, ja CHILD SA voidaan korvata ilman, että asiakas pudottaa yhteyden.

strongSwanissa IKEv2-määrityksen viite ja swanctl --list-sas näyttävät molemmat tasot, ja ip xfrm state sekä ip xfrm policy näyttävät, mitä ydin todella asensi. Näiden kahden näkymän vertaaminen on nopein tapa nähdä, päättyikö neuvottelu vai vain näytti päättyneen. Jos daemon listaa CHILD SA:n, jolle ytimellä ei ole tilaa, asennus epäonnistui hiljaa. Jos ytimellä on tila, josta daemon ei tiedä, katselet aiemman yrityksen jäännöstä.

Mikä pitää vielä olla totta, kun tunneli on pystyssä

Liikenteen valitsimet määrittävät, mitkä osoitteet katetaan. Jos asiakas ehdottaa yhtä aliverkkoa ja palvelin odottaa toista, CHILD SA asentuu mutta ei kuljeta mitään hyödyllistä, ja virhe näkyy reititysongelmana eikä neuvotteluongelmana. Sitten paikallisen pinon on toimittava yhdessä: edelleenlähetys käytössä siellä missä isäntä reitittää, reitit kohti tunnelia, palomuurisäännöt jotka sallivat puretut paketit ja sisäinen resolveri, jos yksityisiä nimiä on mukana. Jokainen näistä epäonnistuu erikseen, eikä mitään niistä korjata käynnistämällä IKE-daemon uudelleen.

Pidä loki näkyvissä diagnosoidessasi: ensin alkuvaihto, sitten identiteetin validointi, sitten käyttäjän todennus missä se koskee, sitten CHILD-asennus ja lopuksi sovellusliikenne. Vaihe, joka pysähtyy, on korjattava vaihe, eikä myöhempi reititysvirhe ole koskaan syy löysätä identiteettitarkistuksia, jotka jo menivät läpi.

Aiheeseen liittyvät artikkelit