Грешка 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, това сравнение отнема минути вместо следобед.

Подобни статии