Tunnel yang baru muncul setelah seseorang masuk biasanya diluncurkan oleh sesi orang itu, bukan oleh layanan otomatis. Penyebab umumnya adalah pintasan startup yang meluncurkan openvpn-gui.exe, dan itu bukan instalasi yang rusak. Pintasan tersebut menjalankan aplikasi desktop di dalam sesi pengguna, dengan profil pengguna itu, penyimpanan sertifikatnya, dan kemampuannya menjawab permintaan. Tidak ada yang membuat koneksi itu independen dari manusia yang sudah masuk, dan itulah tepatnya yang dibutuhkan tunnel sebelum login.

Gejalanya biasanya punya tiga penyebab

Tiga pola terlihat sama dari luar dan punya perbaikan berbeda. Yang pertama adalah pemilik eksekusi berupa sesi pengguna, bukan layanan, yaitu kasus pintasan startup. Yang kedua adalah profil yang berada di tempat yang tidak dilihat layanan, sehingga layanan mulai, tidak menemukan apa pun, dan keluar dengan bersih. Yang ketiga adalah profil yang ditemukan dan dijalankan layanan, tetapi kredensialnya membutuhkan interaksi yang tidak bisa disediakan layanan mana pun.

Menentukan mana yang berlaku perlu dua pembacaan: apa yang dikonfigurasi untuk dijalankan layanan, dan berkas mana yang bisa dilihatnya. Keduanya satu perintah, dan tidak satu pun mengganggu koneksi yang sedang berjalan.

Apa yang sebenarnya dibaca layanan otomatis

Layanan otomatis Community adalah pembungkus yang memindai direktori mulai otomatis yang dikonfigurasi, biasanya config-auto di bawah instalasi, dan meluncurkan proses OpenVPN untuk setiap profil yang cocok dan ditemukannya. Profil yang terlihat di menu GUI pengguna justru berada di bawah profil roaming pengguna itu, di direktori yang tidak dibaca akun layanan. Panduan layanan Windows menjelaskan penemuan itu, dan layak dibaca sebelum menyalin apa pun, karena direktori tujuan adalah properti instalasi, bukan konvensi tetap. Jadi menyalin berkas ke folder GUI tidak mengubah apa pun bagi layanan, dan menyalinnya ke setiap folder bernama config membuat duplikat, bukan perbaikan.

Get-Service OpenVPNService | Select-Object Status, StartType
Get-CimInstance Win32_Service | Where-Object Name -eq 'OpenVPNService' | Select-Object PathName, StartName
gci 'C:\Program Files\OpenVPN\config-auto'

Perintah terakhir mendaftar apa yang benar-benar akan dilihat pembungkus, dan itu cara tercepat memastikan profil berada di tempat yang salah. Baris kedua juga menunjukkan akun tempat layanan berjalan, dan akun itu menentukan jalur berkas dan penyimpanan sertifikat mana yang dapat dijangkau.

Mengapa login desktop berhasil dan boot tidak

Keberhasilan di desktop bisa lama menyembunyikan ketergantungan pada masukan. GUI dapat mengumpulkan frasa sandi kunci, kata sandi akun, atau faktor kedua dalam dialog, karena berjalan di sesi interaktif dengan desktop yang terlihat. Layanan berjalan di sesi tanpa desktop, jadi permintaan masukan tidak punya tempat muncul, dan koneksi gagal setelah waktu tunggu yang sama sekali tidak mirip masalah kredensial.

Akses berkas mengikuti aturan yang sama. Kunci privat yang disimpan di bawah profil pengguna, atau sertifikat di penyimpanan pribadi pengguna, tidak tersedia bagi layanan yang berjalan sebagai mesin. Bandingkan jalur absolut, izin, dan pilihan sertifikat yang dibuat tiap pihak alih-alih menganggap berkas profil yang sama berarti lingkungan yang sama.

Tugas terjadwal yang diatur berjalan tanpa peduli apakah pengguna masuk mewarisi batasan serupa. Tugas itu bisa meluncurkan berkas eksekusi GUI dengan berhasil dan tetap menghasilkan proses yang tidak pernah memperoleh kredensial, jadi adanya proses di pengelola tugas bukan bukti tunnel yang berfungsi.

Pilih satu pemilik dan uji siklus hidup sebenarnya

Untuk koneksi milik orang yang sudah masuk, gunakan perilaku mulai otomatis GUI yang didukung dan biarkan layanan di luar. Untuk tunnel yang harus ada sebelum siapa pun masuk, konfigurasikan layanan, letakkan profil di tempat pembungkus membacanya, dan gunakan mekanisme kredensial tanpa pengawasan yang didukung, seperti kunci tanpa frasa sandi interaktif atau berkas kredensial yang didokumentasikan.

Get-Content 'C:\Program Files\OpenVPN\log\openvpn.log' -Tail 40
Get-WinEvent -LogName Application -MaxEvents 20 | Where-Object ProviderName -like '*OpenVPN*'

Uji siklus hidup yang penting: boot ulang tanpa ada yang masuk, lalu sambung lagi setelah perubahan jaringan. Pertahankan satu pemilik untuk koneksi, karena dua mekanisme mulai yang bersaing biasanya menghasilkan dua instans yang berebut rute yang sama dan sesi server yang sama, yang lebih sulit didiagnosis daripada salah satu mekanismenya sendiri.

Artikel terkait