Windows en strongSwan: de vier transforms van een IKE-voorstel op elkaar afstemmen
Een gedeelde cipher is niet genoeg wanneer de peers het oneens zijn over de sleuteluitwisselingsgroep. Vergelijk alle vier transforms en pas daarna één afgebakend profielbeleid toe.
Beide peers ondersteunen AES, beide accepteren SHA-256, en de tunnel komt toch niet omhoog. Het voorstel faalde op een onderdeel dat niemand vergeleek, meestal de sleuteluitwisselingsgroep. Deze runbook leest de werkelijke uitwisseling voordat er iets verandert, past één afgebakend beleid toe en laat een terugdraai achter die de vorige parameters herstelt.
Lees de fout voordat je een groep wijzigt
Een „policy match error“ is een samenvatting, geen diagnose. Het betekent dat er geen wederzijds aanvaardbaar voorstel is gevonden, en het zegt niets over welk onderdeel is geweigerd. Behandel het als het begin van het onderzoek en niet als bewijs over een specifieke groep.
Het antwoord staat meestal aan de serverkant. Een strongSwan-log op een passend niveau noemt het voorstel dat hij van de client ontving en het voorstel dat hij is geconfigureerd te accepteren, en het verschil tussen beide lijsten benoemt het onderdeel dat faalde.
Ga er niet van uit dat de client biedt wat een ouder forumbericht zegt. Het actieve profiel en zijn geïnstalleerde beleid bepalen de aangeboden lijst, en een bijgewerkte Windows-build kan een andere set bieden dan die in de schermafbeelding die je overschrijft.
Schrijf beide lijsten op. Vier transformposities en één groep is een korte lijst, en die regel voor regel vergelijken kost minder tijd dan welk experiment dan ook. Vier posities zijn makkelijk in het oog te houden. Een logbestand niet.
Vergelijk elke transform, niet één bekende naam
Een IKE-voorstel is een reeks keuzes die allemaal moeten kloppen. Versleuteling beschermt de onderhandeling, integriteit of een PRF authenticeert die, en een Diffie-Hellman-groep stelt vers sleutelmateriaal vast. Een voorstel dat op de eerste twee klopt en op de derde afwijkt, is voor beide peers nog steeds onaanvaardbaar.
De twee Windows-velden die hier worden verward, horen bij verschillende fasen. DHGroup geldt voor de IKE-sleuteluitwisseling, terwijl PfsGroup geldt voor de child-associatie die het verkeer beschermt. Het tweede wijzigen kan een fout in het eerste niet repareren.
Groepsnamen verschillen tussen implementaties, en dat is een aparte bron van verwarring. strongSwan schrijft modp2048 en ecp256, terwijl Windows opsommingsnamen zoals Group14 en ECP256 gebruikt, dus een vergelijking moet eerst vertalen. Houd een notitie in twee kolommen met beide namen. De volgende afwijking is dan binnen seconden ingedeeld.
| Transform | Windows parameter | strongSwan name | Failure it causes |
|---|---|---|---|
| Encryption | CipherTransformConstants | aes, aes256gcm and similar | No common proposal at all |
| Integrity or PRF | AuthenticationTransformConstants | sha256, sha512 and similar | Proposal rejected after encryption matches |
| Key-exchange group | DHGroup | modp2048, ecp256 | Exchange fails during key establishment |
| Child SA protection | PfsGroup | esp proposal groups | Tunnel negotiates, data association does not |
Pas één volledig en afgebakend beleid toe
Het ondersteunde instrument voor een native IKEv2-profiel is een IPsec-beleid per verbinding, ingesteld als één object in plaats van veld voor veld. Bekijk het eerst als voorbeeld, pas het daarna toe, en bewaar de vorige parameters in het wijzigingsregister.
Set-VpnConnectionIPsecConfiguration -ConnectionName "Northwind IKEv2" -AuthenticationTransformConstants SHA256128 -CipherTransformConstants AES256 -EncryptionMethod AES256 -IntegrityCheckMethod SHA256 -DHGroup ECP256 -PfsGroup ECP256 -WhatIf
De schakelaar -WhatIf toont de lokale wijziging als voorbeeld en past niets toe. Dat is nuttig en tegelijk een veelvoorkomende valkuil, want een voorbeeld bewijst alleen dat de parameters syntactisch aanvaardbaar zijn voor de lokale cmdlet. Of de gateway het resulterende voorstel accepteert, zegt het niet.
Stem meteen ook de scope af. Een verbinding in de opslag voor alle gebruikers heeft de bijbehorende parameter voor alle gebruikers nodig, en het profiel per gebruiker met dezelfde weergavenaam bewerken wijzigt een ander object dat de tunnel niet gebruikt.
Zet daarna voor het testen de strongSwan-kant op dezelfde set. Een gecoördineerde wijziging aan beide uiteinden is de enige versie hiervan die convergeert; één kant wijzigen en steeds opnieuw proberen levert een log vol met dezelfde weigering.
Controleer de uitwisseling en de sleutelvernieuwing apart
Een geslaagde verbinding is één waarneming, en de sleutelvernieuwing is een andere. De eerste IKE-onderhandeling gebruikt één parameterset, en de child-associatie die het verkeer draagt kan later opnieuw worden onderhandeld met eigen beleid. Een opstelling die verbindt en daarna na een tijdje wegvalt, is meestal het tweede geval.
ipsec statusall | grep -A6 "Northwind"
Get-VpnConnection -Name "Northwind IKEv2" | Format-List *
De eerste opdracht toont het beeld van de server van de opgezette associaties, inclusief de child-SA en de resterende levensduur. De tweede toont wat het clientprofiel nu bevat, en dat is de enige manier om te bevestigen dat het beleid dat je instelde het beleid is dat geldt.
Volg een volledige sleutelvernieuwing voordat je succes uitroept. Dat betekent de verbinding lang genoeg overeind laten om de child-associatie te laten vervangen, en daarna bevestigen dat het verkeer doorloopt. De meeste beleidsafwijkingen verschuilen zich in die stap, omdat de eerste onderhandeling kan slagen met een set die de vernieuwing niet accepteert.
Terugdraaien is de vorige parameterset, geen toegeeflijke terugvaloptie. Bood de client alleen een zwakke oude groep aan, dan is het antwoord het gemeenschappelijke beleid van client en server verbeteren, niet die groep aan de gateway toevoegen waar elke toekomstige peer daarop kan onderhandelen.
Noteer de vier parameters, de groep, de scope van de verbinding en het resultaat van de sleutelvernieuwing. Dat is een korte notitie, en zij is het verschil tussen een runbook en een verhaal over de keer dat de tunnel omhoogkwam.