IKEv2 ei ole yksi kättely: IKE SA, todennus ja vasta sitten CHILD SA
Yhdyskäytävän vastaus todistaa tavoitettavuuden, ei identiteettiä. Seuraa IKE_SA_INIT, IKE_AUTH ja ensimmäinen CHILD SA ja tarkista sitten, mitä pitää olla totta ennen kuin liikenne kulkee.
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ää
| Yhteys | Suojaa | Elinajan käyttäytyminen |
|---|---|---|
| IKE SA | Hallintavaihdot: avainten uusiminen, poisto, konfigurointikuormat | Uusitaan oman aikataulunsa mukaan; datapolku voi selviytyä muutoksesta |
| CHILD SA | Liikenteen valitsimia vastaava sovellusliikenne | Uusitaan 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.