Galat 789 pada koneksi L2TP Windows berarti terowongan mati di dalam pertukaran keamanan IPsec, yang terjadi jauh sebelum Windows mengirim kata sandi pengguna ke mana pun. Mencoba ulang kata sandi, atau mengatur ulang di direktori, tidak dapat memajukan tahap itu. Yang memajukannya adalah membangun ulang koneksi dari PowerShell dengan proposal yang benar-benar ditawarkan gateway, karena wizard Pengaturan memilih transformasi IPsec secara diam-diam dan tidak pernah menunjukkan apa yang dipilihnya. Inilah runbook untuk itu: buat profil, kunci proposal, lalu gunakan tabel tahap agar kode berikutnya memberi tahu Anda sesuatu.

Buat profil tanpa wizard

Add-VpnConnection menulis entri buku telepon asli, jadi hasilnya adalah objek yang sama yang nanti diedit aplikasi Pengaturan. Jalankan dari sesi yang ditinggikan saat koneksi harus ada untuk setiap akun di mesin, atau dari konteks pengguna saat koneksi harus tetap privat:

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

Cocokkan -AuthenticationMethod dengan apa yang ditawarkan gateway. MSChapv2, EAP, dan PAP tidak dapat dipertukarkan, dan profil yang menuntut metode yang tidak akan diterima server gagal sebelum catatan pengguna mana pun dikonsultasikan. Pertahankan -EncryptionLevel Required untuk hal apa pun yang nyata; Optional membiarkan Windows menerima terowongan tanpa enkripsi jika rekan menawarkannya, yang merupakan jalan pintas laboratorium dan bukan pengaturan untuk dikirim.

Jika Anda meneruskan -L2tpPsk, kunci yang telah dibagikan itu ditulis ke profil di disk, dari mana siapa pun yang dapat membaca profil di mesin itu dapat memulihkannya. Gunakan sertifikat untuk autentikasi rekan saat gateway mendukungnya, dan saat PSK tak terhindarkan, simpan di luar repositori dan di luar riwayat shell alih-alih menempelkannya di setiap jalannya provisi.

Kunci proposal alih-alih menerima nilai default

Windows mengisi transformasi IPsec sendiri, itulah sebabnya dua mesin dengan koneksi yang tampak identik dapat gagal secara berbeda terhadap gateway yang sama. Set-VpnConnectionIPsecConfiguration adalah cara yang didukung untuk menguncinya:

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

Himpunan itu adalah satu susunan L2TP/IPsec yang umum, bukan jawaban universal. Setiap parameter menerima daftar nilai yang tetap, dan kombinasi yang tidak dapat dipetakan platform kembali sebagai galat cmdlet alih-alih profil yang dilemahkan diam-diam. Perlakukan galat semacam itu sebagai pernyataan tentang nilai, bukan tentang izin Anda.

Salin proposal dari dokumentasi gateway atau dari pengaturan fase 1 dan fase 2 yang aktif, dan ubah satu bidang pada satu waktu hanya selama gateway mencatat transformasi yang ditolaknya. Menggilir lima bidang menghasilkan koneksi yang berfungsi secara kebetulan dan catatan yang tidak menjelaskan apa pun kepada orang berikutnya.

Baca kegagalan per tahap, bukan dari teks galat

789 termasuk keluarga kode yang semuanya tampak sama di dialog klien. Letakkan kode di depan tahap yang menjadi tempatnya sebelum Anda menyentuh profil lagi:

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

Dua peran kredensial penting di sini. Kunci yang telah dibagikan atau sertifikat mengautentikasi para rekan satu sama lain, sedangkan MSChapv2 atau EAP mengautentikasi Anda di dalam terowongan. Mengatur ulang kata sandi pengguna tidak dapat memperbaiki yang pertama, rahasia bersama baru tidak dapat memperbaiki yang kedua, dan mengubah keduanya sekaligus menghancurkan bukti mana yang salah.

Pada jalur sertifikat, periksa jam klien, rantai kepercayaan, dan identitas yang diharapkan gateway sebelum Anda mempertimbangkan melonggarkan validasi. Menonaktifkan validasi mengubah 789 yang terlihat menjadi terowongan yang terhubung sambil memercayai rekan yang salah, dan tidak ada apa pun di klien yang akan memberi tahu Anda bahwa itu terjadi. daftar galat akses jarak jauh Microsoft adalah rujukan untuk kode-kodenya sendiri, dan memisahkan kegagalan lapisan keamanan dari kegagalan logon.

Verifikasi dari kedua ujung sebelum menyebutnya beres

Baca kembali profil, tetapi jangan mengharapkan proposal di keluaran. Get-VpnConnection melaporkan nama, alamat server, jenis terowongan, tingkat enkripsi, dan metode autentikasi, dan tidak tahu apa pun tentang transformasi, jadi pembacaan kembali memastikan entri ada dan menunjuk ke host yang benar:

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

Dial dari baris perintah agar Anda mendapat nomor alih-alih dialog: rasdial "Contoso L2TP" mengembalikan kode kegagalan yang sama dengan antarmuka, dan rasdial "Contoso L2TP" /disconnect membersihkannya di antara percobaan. Lalu baca sisi gateway untuk percobaan yang sama itu. ipsec statusall dari strongSwan atau log IKE router menyatakan proposal mana yang tiba dan mana yang ditolak, dan membandingkannya dengan nilai cmdlet adalah satu-satunya langkah yang benar-benar membuktikan kedua ujung sepakat.

Koneksi yang berhasil bukan garis finis. Buka aplikasi yang penting bagi pengguna, karena rute, DNS yang didorong, dan pengaturan terowongan terpisah gagal setelah terowongan naik dan sama sekali tidak menghasilkan dialog galat.

Otomatiskan, dan gulung kembali dengan bersih

Penyiapan tanpa pengawasan adalah alasan untuk menulis skrip ini, dan langkah dial adalah tempat kredensial bocor. rasdial mengambilnya di baris perintahnya, tempat pengguna lokal lain dan sebagian besar pengumpul log dapat membacanya:

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

Utamakan kredensial yang dibatasi pada akun yang menjalankan tugas, atau biarkan profil menyimpannya dengan -RememberCredential, daripada meneruskan kata sandi sebagai argumen dalam tugas terjadwal. Perintah provisi itu sendiri aman diulang dengan -Force, tetapi mereka dengan senang hati menimpa proposal lama, jadi menjalankan ulang hanya membantu jika skrip membawa nilai saat ini.

Profil bertahan melintasi reboot dan hidup lebih lama daripada konfigurasi gateway yang menjadi dasar pembuatannya. Saat proposal gateway bergeser, hapus entri dan buat lagi alih-alih menumpuk himpunan nilai kedua di atasnya: Remove-VpnConnection -Name "Contoso L2TP" -Force, lalu ulangi kedua cmdlet dengan himpunan baru.

Tutup lingkaran dengan empat pemeriksaan yang hidup di samping skrip: Get-VpnConnection menunjukkan jenis terowongan dan tingkat enkripsi yang diharapkan; gateway mencatat fase 1 dan fase 2 yang selesai untuk alamat klien Anda; rasdial mengembalikan keberhasilan dan aplikasi terbuka; dan proposal yang dicatat dalam skrip cocok dengan pengaturan gateway saat ini. Saat 789 berikutnya tiba, perbandingan itu memakan waktu beberapa menit alih-alih satu sore.

Artikel terkait