Ralat 789 L2TP/IPsec pada Windows: bina profil dan kunci cadangan
Ralat 789 gagal dalam pertukaran IPsec, bukan pada kata laluan. Skripkan profil L2TP, kunci cadangan dan baca kod kemudian mengikut peringkat.
Ralat 789 pada sambungan L2TP Windows bermakna terowong mati di dalam pertukaran keselamatan IPsec, yang berlaku jauh sebelum Windows menghantar kata laluan pengguna ke mana-mana. Mencuba semula kata laluan, atau menetapkannya semula dalam direktori, tidak dapat memajukan peringkat itu. Yang memajukannya ialah membina semula sambungan daripada PowerShell dengan cadangan yang benar-benar ditawarkan oleh gateway, kerana wizard Tetapan memilih transformasi IPsec secara senyap dan tidak pernah menunjukkan kepada anda apa yang dipilihnya. Inilah buku panduan untuk itu: bina profil, kunci cadangan, kemudian gunakan jadual peringkat supaya kod seterusnya memberitahu anda sesuatu.
Bina profil tanpa wizard
Add-VpnConnection menulis entri buku telefon asli, jadi hasilnya ialah objek yang sama yang akan diedit oleh aplikasi Tetapan kemudian. Jalankannya daripada sesi tinggi apabila sambungan perlu wujud untuk setiap akaun pada mesin, atau daripada konteks pengguna apabila ia perlu kekal peribadi:
Add-VpnConnection -Name "Contoso L2TP" `
-ServerAddress 203.0.113.10 `
-TunnelType L2tp `
-EncryptionLevel Required `
-AuthenticationMethod MSChapv2 `
-RememberCredential -Force
Padankan -AuthenticationMethod dengan apa yang ditawarkan oleh gateway. MSChapv2, EAP dan PAP tidak boleh ditukar ganti, dan profil yang menuntut kaedah yang tidak akan diterima oleh pelayan gagal sebelum mana-mana rekod pengguna dirujuk. Kekalkan -EncryptionLevel Required untuk apa-apa yang sebenar; Optional membenarkan Windows menerima terowong tidak disulitkan jika rakan setara menawarkannya, yang merupakan jalan pintas makmal dan bukan tetapan untuk dihantar.
Jika anda menyalurkan -L2tpPsk, kunci yang dikongsi terlebih dahulu itu ditulis ke dalam profil pada cakera, dari mana sesiapa yang boleh membaca profil pada mesin itu boleh memulihkannya. Gunakan sijil untuk pengesahan rakan setara apabila gateway menyokongnya, dan apabila PSK tidak dapat dielakkan, simpan di luar repositori dan di luar sejarah shell dan bukan menampalnya ke dalam setiap larian peruntukan.
Kunci cadangan dan bukan menerima nilai lalai
Windows mengisi transformasi IPsec sendiri, itulah sebabnya dua mesin dengan sambungan yang kelihatan serupa boleh gagal secara berbeza terhadap gateway yang sama. Set-VpnConnectionIPsecConfiguration ialah cara yang disokong untuk menguncinya:
Set-VpnConnectionIPsecConfiguration -ConnectionName "Contoso L2TP" `
-AuthenticationTransformConstants SHA256128 `
-CipherTransformConstants AES128 `
-EncryptionMethod AES128 `
-IntegrityCheckMethod SHA256 `
-DHGroup Group14 `
-PfsGroup None `
-PassThru -Force
Set itu ialah satu susunan L2TP/IPsec yang biasa, bukan jawapan universal. Setiap parameter menerima senarai nilai tetap, dan gabungan yang tidak dapat dipetakan oleh platform kembali sebagai ralat cmdlet dan bukannya profil yang dilemahkan secara senyap. Anggap ralat sedemikian sebagai kenyataan tentang nilai, bukan tentang kebenaran anda.
Salin cadangan daripada dokumentasi gateway atau daripada tetapan fasa 1 dan fasa 2 yang aktif, dan ubah satu medan pada satu masa hanya semasa gateway mencatat transformasi yang ditolaknya. Melalui lima medan menghasilkan sambungan yang berfungsi secara kebetulan dan rekod yang tidak menjelaskan apa-apa kepada orang seterusnya.
Baca kegagalan mengikut peringkat, bukan mengikut teks ralat
789 tergolong dalam keluarga kod yang semuanya kelihatan sama dalam dialog klien. Letakkan kod itu di hadapan peringkat yang menjadi miliknya sebelum anda menyentuh profil lagi:
| 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 |
Dua peranan kelayakan penting di sini. Kunci yang dikongsi terlebih dahulu atau sijil mengesahkan rakan setara antara satu sama lain, manakala MSChapv2 atau EAP mengesahkan anda di dalam terowong. Menetapkan semula kata laluan pengguna tidak dapat membaiki yang pertama, rahsia bersama yang baharu tidak dapat membaiki yang kedua, dan menukar kedua-duanya sekali gus memusnahkan bukti yang mana satu salah.
Pada laluan sijil, periksa jam klien, rantaian kepercayaan dan identiti yang dijangka oleh gateway sebelum anda mempertimbangkan melonggarkan pengesahan. Melumpuhkan pengesahan mengubah 789 yang kelihatan menjadi terowong yang bersambung sambil mempercayai rakan setara yang salah, dan tiada apa-apa dalam klien akan memberitahu anda bahawa itu berlaku. senarai ralat akses jauh Microsoft ialah rujukan untuk kod itu sendiri, dan ia memisahkan kegagalan lapisan keselamatan daripada kegagalan log masuk.
Sahkan dari kedua-dua hujung sebelum mengisytiharkannya diperbaiki
Baca semula profil, tetapi jangan harapkan cadangan itu dalam output. Get-VpnConnection melaporkan nama, alamat pelayan, jenis terowong, tahap penyulitan dan kaedah pengesahan, dan ia tidak tahu apa-apa tentang transformasi, jadi bacaan semula mengesahkan bahawa entri wujud dan menunjuk kepada hos yang betul:
Get-VpnConnection -Name "Contoso L2TP" |
Select-Object Name, ServerAddress, TunnelType, EncryptionLevel, AuthenticationMethod
Dail dari baris arahan supaya anda mendapat nombor dan bukan dialog: rasdial "Contoso L2TP" mengembalikan kod kegagalan yang sama dengan antara muka, dan rasdial "Contoso L2TP" /disconnect membersihkannya antara percubaan. Kemudian baca bahagian gateway untuk percubaan yang sama itu. ipsec statusall strongSwan atau log IKE penghala menyatakan cadangan mana yang tiba dan mana yang ditolak, dan membandingkannya dengan nilai cmdlet ialah satu-satunya langkah yang benar-benar membuktikan kedua-dua hujung bersetuju.
Sambungan yang berjaya bukan garis penamat. Buka aplikasi yang penting kepada pengguna, kerana laluan, DNS yang ditolak dan tetapan terowong berpecah gagal selepas terowong naik dan tidak menghasilkan dialog ralat sama sekali.
Automasikannya, dan gulung semula dengan bersih
Persediaan tanpa pengawasan ialah sebab untuk menulis skrip ini, dan langkah dail ialah tempat kelayakan bocor. rasdial mengambilnya pada baris arahannya, di mana pengguna tempatan lain dan kebanyakan pengumpul log boleh membacanya:
subprocess.run(["rasdial", "Contoso L2TP"], check=True)
Utamakan kelayakan yang terhad kepada akaun yang menjalankan tugas, atau biarkan profil menyimpannya dengan -RememberCredential, daripada menyalurkan kata laluan sebagai hujah dalam tugas berjadual. Perintah peruntukan itu sendiri selamat diulang dengan -Force, tetapi ia dengan senang hati akan menimpa cadangan lama, jadi larian semula hanya membantu jika skrip membawa nilai semasa.
Profil kekal merentasi but semula dan hidup lebih lama daripada konfigurasi gateway yang menjadi asas pembinaannya. Apabila cadangan gateway berubah, buang entri dan bina semula dan bukannya melapisi set nilai kedua di atasnya: Remove-VpnConnection -Name "Contoso L2TP" -Force, kemudian ulangi kedua-dua cmdlet dengan set baharu.
Tutup gelung dengan empat semakan yang tinggal di sebelah skrip: Get-VpnConnection menunjukkan jenis terowong dan tahap penyulitan yang dijangka; gateway mencatat fasa 1 dan fasa 2 yang selesai untuk alamat klien anda; rasdial mengembalikan kejayaan dan aplikasi terbuka; dan cadangan yang direkodkan dalam skrip sepadan dengan tetapan gateway semasa. Apabila 789 seterusnya tiba, perbandingan itu mengambil masa beberapa minit dan bukannya satu petang.