Eén fout, drie geheimen: welke VPN-referentie faalde?
De client toont één fout voor elke fase. Lees de associatie, de gebruikeruitwisseling en de methode voordat je een wachtwoord reset dat niemand heeft gecontroleerd.
“Verificatie mislukt” kan wijzen op een servercertificaat, een vooraf gedeelde sleutel van de machine of een gebruikerswachtwoord. Welke ervan bedoeld is, hangt van het protocol af, want elk protocol definieert een andere set geheimen. Reset je de verkeerde, dan blijft de fout ongewijzigd. De uitweg is vaststellen hoeveel bewijzen het protocol vraagt voordat je iets aanpast.
Twee bewijzen die tegengesteld wijzen
Een tunnel moet antwoorden of hij de juiste gateway heeft bereikt, en los daarvan wie de gebruiker is. Het gatewaybewijs is op machineniveau: een servercertificaat, een vooraf gedeelde sleutel of een statische publieke sleutel. Het gebruikersbewijs is op persoonsniveau: een wachtwoord, een token, een clientcertificaat, of helemaal niets. Dat zijn tegengestelde richtingen van vertrouwen en ze verbruiken ander materiaal.
IKEv2 voert het gatewaybewijs uit binnen IKE_AUTH en, wanneer EAP wordt gebruikt, draait het gebruikersbewijs daarna in een aparte uitwisseling. De IKEv2-specificatie houdt die als afzonderlijke secties, wat een sterke aanwijzing is waar je moet kijken wanneer één bericht beide rondes dekt.
Lees de fase, niet het bericht
De client toont één fouttekst ongeacht welke fase faalde, dus de tekst zelf bevat bijna geen informatie. Wat informatie bevat, is de toestand die je per fase kunt inspecteren: of er een associatie bestaat, of er een gebruikeruitwisseling begon, en of de client de methode aanbood die de gateway wilde. De tabel sorteert de fasen zo, in plaats van op protocolnaam.
| Stage that failed | Evidence you can inspect | What a password change cannot fix |
|---|---|---|
| The machine proof | no security association in the state list | a mismatched pre-shared key or an untrusted chain |
| The user proof | an association is up while PPP or EAP reports failure | an expired token, a locked account, a missing client key |
| The client's method support | the client offers no method the gateway accepts | a client without the required EAP or key material |
| The server's policy | the gateway rejects before any user exchange starts | a policy that requires a certificate the profile lacks |
Alleen de tweede rij gaat over een referentie die een gebruiker opnieuw kan intypen. De andere drie zijn configuratiefeiten, en die mismatch is de reden dat zoveel van deze meldingen eindigen met een wachtwoordreset die niets verandert. Lees de rij die bij je bewijs past voordat je een veld aanraakt.
Een protocol met twee geheimen toont zijn hand
L2TP over IPsec maakt het aantal zichtbaar, omdat de twee controles in verschillende processen plaatsvinden. De IPsec-laag moet eerst omhoog komen met een vooraf gedeelde sleutel of een certificaat, en pas daarna probeert PPP daarbinnen een gebruikersaanmelding.
Als het machinegeheim fout is, ontstaat er geen associatie en wordt de gebruikersreferentie nooit geprobeerd. Als het machinegeheim klopt en het gebruikersgeheim fout is, bestaat de associatie en weigert PPP de aanmelding nadat de tunnel al omhoog is. Beide geven dezelfde melding op het scherm, uit twee verschillende gebeurtenissen.
sudo swanctl --list-sas
sudo ip xfrm state list
sudo journalctl -u xl2tpd -n 50 --no-pagerEen lege associatielijst sluit de gebruikerslaag onmiddellijk uit, dus controleer die vóór het wachtwoord. Een bestaande associatie met herhaalde PPP-fouten wijst de andere kant op, naar de gebruikerslaag of naar het authenticatieprotocol daarbinnen. Geen van beide conclusies is beschikbaar uit de fouttekst van de client.
Waar alleen-wachtwoord werkelijk van afhangt
Toegang met alleen een wachtwoord is gewoon voor L2TP, PPTP, SSTP en IKEv2 met EAP. WireGuard heeft die optie helemaal niet, omdat zijn peers sleutels zijn en geen gebruikers. Voor OpenVPN komt het antwoord uit de clientcertificaat-eis van de server: een gateway die zowel certificaat als wachtwoord verlangt, blijft een client met alleen een wachtwoord weigeren, wat er ook in het veld wordt getypt.
Welk component je nodig hebt, volgt uit hetzelfde antwoord. Een wachtwoordaanmelding onder IKEv2 vereist een client die EAP spreekt, terwijl een certificaataanmelding de privésleutel van de client en de keten van de server nodig heeft. Installeer je de verkeerde, dan leest de fout als een referentiefout, ook al is de authenticatiemethode zelf wat ontbreekt.
Verander één ding, test dan opnieuw
Stel eerst drie feiten vast: welk protocol draait, hoeveel geheimen het definieert, en welke daarvan bij de machine horen in plaats van bij de gebruiker. Machines falen in de eerste fase en mensen in de tweede, en die twee verwarren is dit hele probleem.
Verander daarna precies één ding en test opnieuw vanaf dezelfde client. Die discipline maakt van een verwarrende fout een oplossing die je aan de volgende persoon kunt uitleggen, wat nuttiger is dan een werkende verbinding die niemand kan verklaren.