Грешка 789 на L2TP вези у Windows-у значи да је тунел умро унутар IPsec безбедносне размене, што се дешава много пре него што Windows уопште пошаље корисничку лозинку негде. Поновно покушавање лозинке, или њено ресетовање у директоријуму, не може да помери ту фазу напред. Оно што је помера јесте поновно прављење везе из PowerShell-а са предлогом који гејтвеј заиста нуди, јер чаробњак у Подешавањима тихо бира IPsec трансформације и никада вам не показује шта је изабрао. Ово је упутство за то: направите профил, фиксирајте предлог, а затим користите табелу фаза да би вам следећи код нешто рекао.

Направите профил без чаробњака

Add-VpnConnection уписује изворни унос у именик телефона, тако да је резултат исти објекат који ће апликација Подешавања касније уређивати. Покрените га из подигнуте сесије када веза треба да постоји за сваки налог на машини, или из корисничког контекста када треба да остане приватна:

Add-VpnConnection -Name "Contoso L2TP" `
  -ServerAddress 203.0.113.10 `
  -TunnelType L2tp `
  -EncryptionLevel Required `
  -AuthenticationMethod MSChapv2 `
  -RememberCredential -Force

Ускладите -AuthenticationMethod са оним што гејтвеј нуди. MSChapv2, EAP и PAP нису међусобно заменљиви, а профил који захтева метод који сервер неће прихватити пада пре него што се погледа било који кориснички запис. Задржите -EncryptionLevel Required за све стварно; Optional дозвољава Windows-у да прихвати нешифровани тунел ако друга страна понуди такав, што је лабораторијска пречица, а не подешавање за испоруку.

Ако проследите -L2tpPsk, тај унапред подељени кључ се уписује у профил на диску, одакле га свако ко може да прочита профил на тој машини може повратити. Користите сертификат за аутентификацију друге стране када гејтвеј то подржава, а када је PSK неизбежан, држите га ван складишта и ван историје шкољке уместо да га лепите у свако извршавање обезбеђивања.

Фиксирајте предлог уместо да прихватате подразумеване вредности

Windows сам попуњава IPsec трансформације, и зато две машине са наизглед идентичном везом могу различито да падну пред истим гејтвејем. Set-VpnConnectionIPsecConfiguration је подржани начин да их фиксирате:

Set-VpnConnectionIPsecConfiguration -ConnectionName "Contoso L2TP" `
  -AuthenticationTransformConstants SHA256128 `
  -CipherTransformConstants AES128 `
  -EncryptionMethod AES128 `
  -IntegrityCheckMethod SHA256 `
  -DHGroup Group14 `
  -PfsGroup None `
  -PassThru -Force

Тај скуп је један уобичајен L2TP/IPsec распоред, а не универзални одговор. Сваки параметар прихвата фиксну листу вредности, а комбинација коју платформа не може да мапира враћа се као cmdlet грешка уместо тихо ослабљеног профила. Третирајте такву грешку као изјаву о вредностима, а не о вашим дозволама.

Копирајте предлог из документације гејтвеја или из његових живих подешавања фазе 1 и фазе 2 и мењајте по једно поље истовремено само док гејтвеј бележи трансформације које одбија. Пролазак кроз пет поља даје везу која ради случајно и запис који следећем човеку ништа не објашњава.

Читајте неуспех по фази, не по тексту грешке

789 припада породици кодова који у дијалогу клијента сви изгледају исто. Поставите код испред фазе којој припада пре него што поново дотакнете профил:

What you seeStage that failedCheck first
Nothing happens, then a timeoutNo IKE response at allServer address, UDP 500 and 4500 reachability, NAT traversal on the gateway
Error 789IKE security exchangeProposal, pre-shared key, certificate trust and client clock
Error 691 or a repeated password promptUser authenticationAccount state, domain, RADIUS or NPS policy
Tunnel up, some hosts unreachableRouting or DNS after PPPSplit-tunnel routes, pushed DNS, remote subnet mask

Овде су важне две улоге акредитива. Унапред подељени кључ или сертификат аутентификује стране једну према другој, док MSChapv2 или EAP аутентификује вас унутар тунела. Ресетовање корисничке лозинке не може да поправи прво, нова заједничка тајна не може да поправи друго, а промена оба одједном уништава доказ о томе које је било погрешно.

На путу са сертификатом, проверите сат клијента, ланац поверења и идентитет који гејтвеј очекује пре него што размотрите ублажавање валидације. Искључивање валидације претвара видљиву 789 у тунел који се повезује док верује погрешној страни, и ништа у клијенту вам неће рећи да се то догодило. листа грешака при даљинском приступу компаније Microsoft је референца за саме кодове, и она раздваја отказе безбедносног слоја од отказа при пријави.

Проверите са оба краја пре него што то прогласите поправљеним

Прочитајте профил назад, али не очекујте предлог у излазу. Get-VpnConnection пријављује име, адресу сервера, тип тунела, ниво шифровања и метод аутентификације и не зна ништа о трансформацијама, тако да читање потврђује да унос постоји и показује на прави хост:

Get-VpnConnection -Name "Contoso L2TP" |
  Select-Object Name, ServerAddress, TunnelType, EncryptionLevel, AuthenticationMethod

Позивајте из командне линије да бисте добили број уместо дијалога: rasdial "Contoso L2TP" враћа исти код неуспеха који би вратио интерфејс, а rasdial "Contoso L2TP" /disconnect га брише између покушаја. Затим прочитајте страну гејтвеја за исти тај покушај. ipsec statusall strongSwan-а или IKE дневник рутера каже који је предлог стигао и који је одбијен, а поређење тога са вредностима cmdlet-а једини је корак који заиста доказује да су се два краја договорила.

Успешно повезивање није циљна линија. Отворите апликацију која је кориснику важна, јер руте, гурнути DNS и подешавања подељеног тунела падају након што се тунел подигне и уопште не стварају дијалог за грешку.

Аутоматизујте то и вратите се чисто

Ненадгледано подешавање је разлог да се ово скриптује, а корак бирања је место где акредитиви цуре. rasdial их прима у својој командној линији, где их други локални корисници и већина сакупљача дневника могу прочитати:

subprocess.run(["rasdial", "Contoso L2TP"], check=True)

Преферирајте акредитив ограничен на налог који извршава посао, или пустите профил да га сачува са -RememberCredential, уместо да прослеђујете лозинку као аргумент у заказаном задатку. Саме команде за обезбеђивање су безбедне за понављање са -Force, али ће радо прекрити стари предлог, па поновно извршавање помаже само ако скрипта носи тренутне вредности.

Профили преживљавају рестартовања и живе дуже од конфигурације гејтвеја за коју су направљени. Када се предлог гејтвеја помери, уклоните унос и направите га поново уместо да слажете други скуп вредности: Remove-VpnConnection -Name "Contoso L2TP" -Force, затим поновите две cmdlet-е са новим скупом.

Затворите петљу са четири провере које живе поред скрипте: Get-VpnConnection показује очекивани тип тунела и ниво шифровања; гејтвеј бележи завршену фазу 1 и фазу 2 за адресу вашег клијента; rasdial враћа успех и апликација се отвара; и предлог забележен у скрипти одговара тренутном подешавању гејтвеја. Када стигне следећа 789, то поређење траје минуте уместо поподнева.

Повезани чланци