Menyambung semula klien OpenVPN: tiga kawalan, tiga skop
Menjatuhkan satu sesi, memberitahu setiap klien UDP dan memulakan semula daemon ialah operasi berbeza. Tentukan skop dahulu, kemudian sahkan sesi baharu.
Seseorang meminta klien VPN disambung semula, dan permintaan itu boleh bermaksud tiga perkara berbeza. Ia boleh bermaksud menjatuhkan satu sesi yang disahkan, memberitahu setiap klien bahawa pelayan UDP akan pergi, atau memulakan semula daemon itu sendiri. Setiap satu mempunyai jejari kesan berbeza, dan pilihan yang salah menjadikan pembaikan untuk seorang pengguna sebagai gangguan perkhidmatan. Skop ialah keputusannya, dan arahan mengikut daripadanya.
Tanya siapa yang patut terjejas sebelum bertanya kawalan mana yang hendak digunakan.
Satu instans: antara muka pengurusan
Antara muka pengurusan yang dikonfigurasikan boleh menyenaraikan instans yang bersambung dan menjatuhkan tepat satu daripadanya. Setiap sesi membawa pengecam klien, dan client-kill CID menyasarkan pengecam itu dan bukan nama umum. Baca pengecam hidup daripada output status semasa, kerana nilai yang disalin daripada log lama merujuk sesi yang tidak lagi wujud. Menjatuhkan instans menamatkan sambungan itu dan tiada yang lain.
Ia tidak menjamin sambungan baharu. Sama ada klien kembali bergantung pada tetapan cuba semulanya, entri jauh yang tinggal, keperluan pengesahannya dan sama ada aplikasi penyelia masih berjalan. Klien yang kembali mendapat pengecam baharu, dan sebab itulah membandingkan pengecam ialah satu-satunya cara boleh dipercayai untuk membezakan yang lama daripada yang baharu.
Notis keluar UDP bukan arahan setiap klien
explicit-exit-notify ialah arahan konfigurasi tentang peristiwa keluar dan mula semula. Pada klien UDP ia memberitahu pihak lawan bahawa sesi semakin tamat, dan argumen berangka mengawal berapa kali notis diulang. Apabila pelayan berjalan melalui UDP ia menghantar mesej kawalan mula semula kepada klien yang bersambung, dan nilai yang didokumenkan membezakan penyambungan semula ke pelayan yang sama daripada perpindahan ke entri jauh yang lain. Itu isyarat kitaran hayat dengan khalayak luas.
Tiada apa-apa di dalamnya memilih klien sewenang-wenangnya pada saat sewenang-wenangnya. Menganggapnya sebagai butang sambung semula mencapai setiap sesi bersambung sekali gus.
Isyarat bertindak pada proses, bukan pada sesi
SIGUSR1 meminta proses yang berjalan memulakan semula sambungannya tanpa membaca semula konfigurasi, dan pilihan ketekalan menentukan apa yang bertahan daripada mula semula itu. SIGHUP melangkah lebih jauh: ia membaca semula fail konfigurasi dan membuka semula sumber dayanya. SIGTERM dan SIGINT meminta penutupan yang teratur. Itu operasi peringkat proses: pada pelayan berbilang klien ia menjejaskan setiap sesi yang dibawa proses, bukan yang dinamakan dalam tiket.
Apabila proses berjalan di bawah pengurus perkhidmatan, gunakan kawalan pengurus itu sendiri dan bukan menghantar isyarat kepada PID yang anda temui dalam senarai proses. Baca unit untuk melihat isyarat mana yang dihantar pengurus, kerana mula semula dan muat semula melakukan perkara berbeza pada daemon yang sama.
Tentukan skop sebelum memilih kawalan
Tiga soalan menyelesaikannya. Siapa yang patut terjejas: seorang pengguna, setiap klien satu pelayan, atau daemon dan semua yang dibawanya. Apa yang patut bertahan: konfigurasi, keadaan terowong, atau kedua-duanya tidak. Siapa yang berwenang: integrasi pengurusan, pemilik perkhidmatan, atau pengendali rangkaian yang mengawal notis keluar. Jawab itu dan hanya satu kawalan sesuai.
Menambah pendengar kawalan tanpa pengesahan untuk mendapat butang sambung semula menyerahkan jauh lebih banyak daripada butang itu kepada sesiapa yang boleh mencapai port.
Sahkan sesi baharu, bukan pemutusan
Peristiwa pemutusan membuktikan sesi lama tamat. Ia tidak mengatakan apa-apa tentang sesi baharu yang mengesahkan diri, menerima alamat, memasang laluan atau mencapai sumber yang diperlukan pengguna. Semak pengecam baharu, kemudian keadaan terowong, kemudian satu sumber sebenar. Ketiga-tiga langkah itu ialah perbezaan antara sambung semula dan sambungan yang berfungsi.
Tulis skop dalam rekod perubahan. 'Saya menyambung semula klien' bukan penerangan apabila klien itu salah seorang daripada empat puluh di pelayan kongsi.