L2TP/IPsec greška 789 na Windowsu: napravite profil i fiksirajte prijedlog
Greška 789 pada u IPsec razmjeni, ne na lozinci. Skriptujte L2TP profil, fiksirajte prijedlog i čitajte kasnije kodove po fazi.
Greška 789 na L2TP vezi u Windowsu znači da je tunel umro unutar IPsec sigurnosne razmjene, što se događa mnogo prije nego što Windows bilo gdje pošalje korisničku lozinku. Ponovno pokušavanje lozinke ili njeno resetiranje u direktorijumu ne može pomjeriti tu fazu naprijed. Ono što je pomjera jeste ponovno pravljenje veze iz PowerShella sa prijedlogom koji gateway zaista nudi, jer čarobnjak u Postavkama tiho bira IPsec transformacije i nikada vam ne pokaže šta je izabrao. Ovo je runbook za to: napravite profil, fiksirajte prijedlog, pa koristite tabelu faza da bi vam sljedeći kod nešto rekao.
Napravite profil bez čarobnjaka
Add-VpnConnection upisuje izvorni unos u telefonski imenik, pa je rezultat isti objekat koji aplikacija Postavke kasnije uređuje. Pokrenite ga iz podignute sesije kada veza treba da postoji za svaki nalog na mašini, ili iz korisničkog konteksta kada treba da ostane privatna:
Add-VpnConnection -Name "Contoso L2TP" `
-ServerAddress 203.0.113.10 `
-TunnelType L2tp `
-EncryptionLevel Required `
-AuthenticationMethod MSChapv2 `
-RememberCredential -Force
Uskladite -AuthenticationMethod sa onim što gateway nudi. MSChapv2, EAP i PAP nisu međusobno zamjenjivi, a profil koji zahtijeva metod koji server neće prihvatiti pada prije nego što se konsultuje bilo koji korisnički zapis. Zadržite -EncryptionLevel Required za sve stvarno; Optional pušta Windows da prihvati nešifrovani tunel ako ga druga strana ponudi, što je laboratorijska prečica, a ne postavka za isporuku.
Ako proslijedite -L2tpPsk, taj unaprijed dijeljeni ključ se upisuje u profil na disku, odakle ga svako ko može pročitati profil na toj mašini može vratiti. Koristite certifikat za autentifikaciju druge strane kada ga gateway podržava, a kada je PSK neizbježan, držite ga van repozitorijuma i van shell istorije umjesto da ga lijepite u svako izvršavanje provisioniranja.
Fiksirajte prijedlog umjesto da prihvatate zadane vrijednosti
Windows sam popunjava IPsec transformacije, zbog čega dvije mašine sa naizgled identičnom vezom mogu različito pasti prema istom gatewayu. Set-VpnConnectionIPsecConfiguration je podržani način da ih fiksirate:
Set-VpnConnectionIPsecConfiguration -ConnectionName "Contoso L2TP" `
-AuthenticationTransformConstants SHA256128 `
-CipherTransformConstants AES128 `
-EncryptionMethod AES128 `
-IntegrityCheckMethod SHA256 `
-DHGroup Group14 `
-PfsGroup None `
-PassThru -Force
Taj skup je jedan uobičajen L2TP/IPsec raspored, a ne univerzalni odgovor. Svaki parametar prihvata fiksnu listu vrijednosti, a kombinacija koju platforma ne može mapirati vraća se kao greška cmdlet-a umjesto tiho oslabljenog profila. Tretirajte takvu grešku kao izjavu o vrijednostima, a ne o vašim dozvolama.
Kopirajte prijedlog iz dokumentacije gatewaya ili iz njegovih živih postavki faze 1 i faze 2, i mijenjajte jedno polje po jedno samo dok gateway bilježi transformacije koje odbija. Kruženje kroz pet polja daje vezu koja radi slučajno i zapis koji sljedećoj osobi ne objašnjava ništa.
Čitajte neuspjeh po fazi, a ne po tekstu greške
789 pripada porodici kodova koji u dijalogu klijenta svi izgledaju isto. Stavite kod uz fazu kojoj pripada prije nego što ponovo dirnete profil:
| What you see | Stage that failed | Check first |
|---|---|---|
| Nothing happens, then a timeout | No IKE response at all | Server address, UDP 500 and 4500 reachability, NAT traversal on the gateway |
| Error 789 | IKE security exchange | Proposal, pre-shared key, certificate trust and client clock |
| Error 691 or a repeated password prompt | User authentication | Account state, domain, RADIUS or NPS policy |
| Tunnel up, some hosts unreachable | Routing or DNS after PPP | Split-tunnel routes, pushed DNS, remote subnet mask |
Dvije uloge akreditiva su ovdje važne. Unaprijed dijeljeni ključ ili certifikat autentifikuje strane jednu drugoj, dok MSChapv2 ili EAP autentifikuje vas unutar tunela. Resetovanje korisničke lozinke ne može popraviti prvo, nova zajednička tajna ne može popraviti drugo, a mijenjanje oba odjednom uništava dokaz o tome koje je bilo pogrešno.
Na putu sa certifikatom, provjerite sat klijenta, lanac povjerenja i identitet koji gateway očekuje prije nego što razmislite o ublažavanju validacije. Isključivanje validacije pretvara vidljivu 789 u tunel koji se spaja dok vjeruje pogrešnoj strani, i ništa u klijentu vam neće reći da se to dogodilo. lista grešaka daljinskog pristupa kompanije Microsoft je referenca za same kodove i razdvaja otkaze sigurnosnog sloja od otkaza prijave.
Provjerite sa oba kraja prije nego što kažete da je popravljeno
Pročitajte profil natrag, ali ne očekujte prijedlog u izlazu. Get-VpnConnection prijavljuje ime, adresu servera, tip tunela, nivo enkripcije i metod autentifikacije i ne zna ništa o transformacijama, pa čitanje potvrđuje da unos postoji i pokazuje na pravi host:
Get-VpnConnection -Name "Contoso L2TP" |
Select-Object Name, ServerAddress, TunnelType, EncryptionLevel, AuthenticationMethod
Dijalajte iz komandne linije da dobijete broj umjesto dijaloga: rasdial "Contoso L2TP" vraća isti kod neuspjeha koji bi vratio interfejs, a rasdial "Contoso L2TP" /disconnect ga briše između pokušaja. Zatim pročitajte stranu gatewaya za taj isti pokušaj. strongSwan ipsec statusall ili IKE log rutera kaže koji je prijedlog stigao i koji je odbijen, a poređenje toga sa vrijednostima cmdlet-a jedini je korak koji zaista dokazuje da su se dva kraja dogovorila.
Uspješno spajanje nije ciljna linija. Otvorite aplikaciju do koje je korisniku stalo, jer rute, potisnuti DNS i postavke podijeljenog tunela padaju nakon podizanja tunela i ne daju nikakav dijalog greške.
Automatizujte to i vraćajte se čisto
Nadgledano podešavanje je razlog da se ovo skriptuje, a korak dijalovanja je mjesto gdje akreditivi cure. rasdial ih prima u svojoj komandnoj liniji, gdje ih drugi lokalni korisnici i većina kolektora logova mogu pročitati:
subprocess.run(["rasdial", "Contoso L2TP"], check=True)
Preferirajte akreditiv ograničen na nalog koji izvršava posao, ili pustite profil da ga sačuva sa -RememberCredential, umjesto da prosljeđujete lozinku kao argument u zakazani zadatak. Same komande za provisioniranje su sigurne za ponavljanje sa -Force, ali će rado prekriti stari prijedlog, pa ponovno izvršavanje pomaže samo ako skripta nosi trenutne vrijednosti.
Profili preživljavaju restartovanja i žive duže od konfiguracije gatewaya za koju su napravljeni. Kada se prijedlog gatewaya promijeni, uklonite unos i napravite ga ponovo umjesto da slažete drugi skup vrijednosti: Remove-VpnConnection -Name "Contoso L2TP" -Force, pa ponovite dvije cmdlet-e sa novim skupom.
Zatvorite petlju sa četiri provjere koje žive uz skriptu: Get-VpnConnection pokazuje očekivani tip tunela i nivo enkripcije; gateway bilježi završene fazu 1 i fazu 2 za adresu vašeg klijenta; rasdial vraća uspjeh i aplikacija se otvara; i prijedlog zabilježen u skripti odgovara trenutnoj postavci gatewaya. Kada stigne sljedeća 789, to poređenje traje minute umjesto popodneva.