Памылка 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 ачышчае яго паміж спробамі. Затым прачытайце бок шлюза для той жа спробы. strongSwan ipsec statusall або журнал 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, гэтае параўнанне зойме хвіліны замест паловы дня.

Падобныя артыкулы