Tugasnya jelas: saat laptop terhubung, sesuatu di laptop seharusnya berubah. Konfigurasi yang sedang diedit milik server, dan di situlah asumsinya patah. Jalur dalam berkas server menamai berkas di server itu, dan berapa pun push tidak mengubah proses siapa yang menjalankannya. Memilih di antara kedua hook terutama soal memutuskan mesin mana yang memiliki pekerjaan itu dan menerima batasan yang menyertainya.

Dua mesin, dua pertanyaan yang harus dijawab lebih dulu

Tanyakan di mana perubahan status harus terjadi, lalu tanyakan peristiwa mana yang sesuai dengannya. Jika perubahannya adalah otorisasi per pengguna atau keputusan konfigurasi per klien, itu milik tempat direktori pengguna diketahui: server. Jika perubahannya adalah rute, pengaturan resolver, atau pembantu lokal di endpoint, itu milik endpoint, dan hanya endpoint yang bisa melakukannya.

Menjawab kedua pertanyaan itu dalam urutan terbalik adalah cara orang akhirnya mencoba mendorong berkas batch ke laptop Windows. Server tahu siapa yang terhubung; laptop tahu bagaimana tumpukan jaringannya sendiri. Tidak ada yang punya informasi pihak lain, dan upaya itu biasanya gagal diam-diam alih-alih dengan galat yang jelas.

Sebelum keduanya, ada baiknya mengajukan pertanyaan ketiga: apakah platform bahkan menyediakan hook yang Anda inginkan? Perangkat yang membuat konfigurasinya sendiri mungkin tidak menawarkan nama peristiwa yang sama, dan klien desktop yang mengimpor berkas .ovpn belum tentu klien yang sama dengan yang menjadi tujuan penulisan berkas itu. Memastikan platform lebih dulu menyelamatkan Anda dari merancang di sekitar hook yang tidak ada di sana. Itu juga memberi tahu Anda dokumentasi mana yang benar-benar berlaku untuk mesin di depan Anda.

Opsi sisi server: satu peristiwa per koneksi

Skrip client-connect berjalan dalam konteks proses server saat klien terautentikasi terhubung, dan menerima detail koneksi terdokumentasi seperti common name dan alamat yang diberikan. Itu tempat yang tepat untuk menulis fragmen konfigurasi per klien, menegakkan keputusan kebijakan, atau mencatat status yang dimiliki server.

Perbedaan yang orang lewatkan adalah perbedaan antara hook itu dan hook up server. Hook up dipicu saat server membuka perangkat tunnel-nya, yang pada server banyak klien terjadi sekali saat daemon mulai. Itu bukan peristiwa per login, dan kode yang diletakkan di sana berjalan saat layanan dimulai, bukan saat pengguna terhubung.

Pada perangkat dengan antarmuka web, gunakan mekanisme ekstensi yang didukung alih-alih mengedit berkas daemon yang dihasilkan. Berkas yang dihasilkan ditulis ulang pada penyimpanan berikutnya, dan penulisan ulang itu diam-diam menghapus perubahan Anda pada saat terburuk. Simpan salinan teks ekstensi di luar perangkat agar pembaruan firmware tidak juga kehilangan maksudnya.

Opsi sisi klien: pekerjaan yang harus berjalan secara lokal

Klien komunitas dapat menjalankan skrip lokal saat perangkat tunnel muncul dan lagi saat rute dipasang. Itu dua momen berbeda, dan memilih yang salah menghasilkan perlombaan klasik di mana pembantu mulai sebelum rute yang menjadi dependensinya ada.

Pembantu itu harus ada di klien tersebut, dapat dibaca dan dijalankan oleh akun yang menjalankan klien, dan diizinkan oleh pengaturan script-security yang eksplisit. Skrip yang berfungsi saat Anda menjalankan klien sebagai administrator tidak memberi tahu apa pun tentang layanan sebelum login atau sesi pengguna lain.

Penamaan juga penting. Hook up berkaitan dengan pembuatan perangkat dan route-up dengan pemasangan rute, tetapi tugas yang membutuhkan jaringan privat dapat dijangkau harus memverifikasi keterjangkauan alih-alih menganggap pembuatan perangkat berarti setiap rute, entri resolver, dan aplikasi siap.

Mengapa mendorong kode yang dapat dieksekusi tidak ada di menu

Opsi yang didorong dengan push sengaja dibatasi, dan opsi yang menjalankan skrip termasuk kategori yang tidak boleh diteruskan server. Batasan itu ada karena alternatifnya akan membiarkan server yang terganggu atau salah konfigurasi menjalankan perintah sembarangan pada setiap klien yang pernah terhubung.

Mengaktifkan eksekusi skrip secara lokal tidak mengubah itu. Pengaturan script-security Anda mengizinkan skrip lokal yang Anda pilih; itu tidak memberi wewenang kepada server untuk memasok yang baru.

Jika tujuannya hanya memasang rute VPN, gunakan konfigurasi rute yang didukung alih-alih menciptakan skema eksekusi jarak jauh. Jika tujuannya benar-benar membutuhkan kode lokal, distribusikan melalui perkakas manajemen endpoint organisasi dan tinjau seperti perangkat lunak lain yang berjalan dengan hak istimewa pengguna.

Apa yang harus diverifikasi sebelum mempercayai salah satu hook

Tuliskan empat hal untuk setiap hook: mesinnya, nama peristiwanya, akun yang menjalankannya, dan perubahan status yang seharusnya dihasilkannya. Lalu uji koneksi, penyambungan ulang, dan jalur pembersihan, karena hook yang membocorkan status saat menyambung ulang lebih buruk daripada hook yang tidak pernah berjalan.

Uji di bawah akun yang benar-benar akan menjalankannya, pada saat ia benar-benar akan dijalankan. Manual openvpn(8) mendokumentasikan kedua keluarga hook dan batasan push; platform tempat Anda menerapkan mendokumentasikan apakah ia mengeksposnya sama sekali. Skrip yang berhasil di terminal administrator interaktif adalah hipotesis, bukan verifikasi.

Artikel terkait