Putuskan satu profil OpenVPN GUI, bukan semua tunnel
Tunnel yang dikelola GUI membutuhkan perintah GUI, tunnel yang dikelola layanan membutuhkan kendali layanan. Tentukan program mana yang memiliki profil sebelum Anda menulis skrip apa pun.
Skrip pemutusan biasanya gagal karena satu alasan: skrip itu menyapa pemilik yang salah. Tunnel yang dikelola OpenVPN GUI komunitas milik sesi GUI tersebut, tunnel yang dimulai oleh layanan Windows milik layanan, dan OpenVPN Connect bukan milik keduanya. Lakukan pemeriksaan ini secara berurutan dan berhenti saat pemiliknya tidak jelas. Mengirim perintah kill karena pemiliknya ambigu adalah cara satu pemutusan profil berubah menjadi gangguan seluruh situs.
Untuk koneksi yang dikelola GUI, perintah yang berguna adalah pesan ke GUI, bukan sinyal ke openvpn.exe.
Pertama, tentukan pemiliknya
Lihat program mana yang benar-benar menampilkan status terhubung sebelum Anda menulis apa pun. Ikon di baki sistem berarti sesi GUI yang memilikinya. Entri layanan berarti layanan yang memilikinya. Jendela aplikasi terpisah dengan daftar profilnya sendiri berarti bukan keduanya, dan antarmuka khusus versinya sendiri yang berlaku.
Periksa juga akun dan sesi desktop. Tugas terjadwal yang berjalan sebagai pengguna lain, atau dalam sesi non-interaktif, tidak boleh dianggap mengendalikan GUI yang dilihat orang yang sudah masuk. Ketidakcocokan itu menghasilkan perintah yang selesai dengan bersih dan tidak mengubah apa pun, dan itulah jenis kegagalan termahal untuk diurai dari log.
Lalu kirim pemutusan milik pemiliknya sendiri
Jika GUI terpasang di jalur pada contoh dan ada profil bernama office, seluruh perintahnya satu baris:
"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --command disconnect officeGanti dengan jalur pemasangan Anda yang sebenarnya dan nama konfigurasi yang persis, termasuk besar-kecil huruf seperti yang ditampilkan GUI. Dokumentasi perintah proyek mencantumkan kendali GUI yang didukung, dan contoh ini hanya milik OpenVPN GUI — ini bukan perintah untuk setiap aplikasi yang namanya mengandung OpenVPN.
Untuk tunnel milik layanan, kendali yang benar adalah layanannya, bukan berkas biner GUI. Periksa layanan yang terpasang dan profil yang dikelolanya sebelum menghentikan apa pun, karena satu penghentian dapat menjatuhkan beberapa tunnel sekaligus dan Anda tidak akan mendapat hasil per profil.
Pastikan tidak ada yang lain ikut jatuh
GUI juga mendokumentasikan perintah disconnect_all, dan cakupannya justru menjadi alasan perintah itu alat yang salah untuk skrip yang hanya boleh menghentikan office. Jika Anda tergoda memakainya demi kesederhanaan, tanyakan apa lagi yang terhubung di mesin itu dan bagaimana pengguna akan menyadarinya.
taskkill /F /IM openvpn.exe lebih buruk dalam dua hal. Perintah itu memilih proses berdasarkan nama berkas yang dapat dieksekusi, dan memaksakan penghentian, sehingga tidak menyatakan nama profil maupun urutan pemutusan normal milik pemiliknya. Menyebutnya penghentian yang rapi menyembunyikan kedua masalah di balik satu status keluar.
Jalur mana pun yang Anda ambil, periksa cakupan dampaknya sebelum perubahan: daftar profil yang terhubung, catat mana yang harus bertahan, lalu periksa lagi sesudahnya.
Pastikan statusnya, bukan kode keluarnya
Setelah meminta pemutusan, baca status koneksi yang disebutkan melalui pemiliknya alih-alih memercayai nilai kembali perintah. Jika langkah berikutnya membutuhkan jaringan setelah pembongkaran, tunggu perubahan status itu dengan batas waktu eksplisit alih-alih menganggap pembersihan selesai saat proses kembali. Skrip yang berlomba dengan pembongkaran akan gagal sesekali dan VPN akan disalahkan.
Jika statusnya tidak pernah berubah, pemiliknya mungkin bukan yang Anda sapa. Periksa ulang sesi dan akun sebelum beralih ke perintah yang lebih kuat.
Apa yang harus dimasukkan ke log
Catat nama profil, pemilik yang Anda sapa, dan konteks peluncuran, ditambah status yang dihasilkan. Jangan menuangkan konfigurasi lengkap atau kredensial ke log tugas, dan jangan catat baris perintah jika berisi jalur ke berkas berisi rahasia.
Pesan kesalahan yang menyebutkan profil dan konteksnya cukup bagi orang berikutnya untuk mereproduksi masalah. Log yang hanya mencatat kode keluar generik mengirim mereka kembali ke awal, dan di situlah dugaan dimulai lagi.