Menghentikan layanan menghapus antarmuka bahkan dengan persist-tun dipasang. Itu adalah opsi yang bekerja seperti didokumentasikan, bukan kegagalan. Opsi ini menjelaskan satu jalur mulai ulang di dalam proses yang berjalan, dan systemctl stop bukan jalur itu.

Baca kedua nama bersama-sama dan desainnya menjadi jelas. Satu menyimpan deskriptor, yang lain menyimpan materi kunci, dan keduanya ada karena apa yang terjadi setelah hak istimewa dilepaskan.

Dua sumber daya dan mulai ulang tempat keduanya berasal

OpenVPN memberi sinyal mulai ulang sendiri dalam dua situasi biasa. SIGUSR1 eksplisit melakukannya, dan ping-restart yang dipicu oleh peer mati melakukan hal yang sama. Keduanya membiarkan proses hidup dan menjalankan kembali penyiapan koneksi, dan di situlah opsi ini mendapat tempatnya.

EventTUN/TAP deviceKey and auth filesAddresses and routesup/down hooks
Soft reset, from SIGUSR1 or from a ping-restart the daemon sends itselfsurvives only with persist-tunsurvive only with persist-keysurvive with the device, otherwise rebuiltrun again only when restart hooks are enabled
Configuration reload, SIGHUPrecreatedre-read from diskrebuilt once the device returnsrun again
Service stoplostre-read at the next startremovedrun at the next start

Hanya baris mulai ulang lunak yang diubah kedua opsi ini, dan pekerjaan yang dilewatinya adalah bagian mahal pada tautan yang sibuk. Membuka kembali perangkat merobohkan alamat dan rute yang terpasang padanya, dan membangunnya kembali dapat menjatuhkan paket yang sedang dalam perjalanan saat mulai ulang dimulai. Penghentian menghancurkan objek yang sama tanpa opsi untuk mempertahankannya.

Mengapa opsi ini ada sama sekali

Server OpenVPN yang dikeraskan biasanya mulai sebagai root, membuka kunci dan perangkatnya, lalu turun ke pengguna tanpa hak istimewa. Setelah penurunan itu, beberapa operasi hilang begitu saja. Membaca file kunci mode 0600, membuat antarmuka jaringan, atau mengubah rute semuanya dapat ditolak.

Tanpa opsi persist, peer yang diam cukup lama untuk memicu ping-restart akan memaksa operasi itu persis. Penyambungan ulang akan gagal meskipun tidak ada yang berubah pada konfigurasi. Proses akan tampak mati tanpa alasan, dan log akan menunjukkan kesalahan izin alih-alih kesalahan jaringan.

Dengan opsi itu, mulai ulang lunak menggunakan kembali apa yang sudah diperoleh fase berhak istimewa. Tidak ada sihir dan proses tidak selamat dari apa pun. Perolehan sumber daya hanya ditunda.

Baca kesalahan pertama, bukan yang terakhir

Saat mulai ulang gagal, baca kesalahan pertama alih-alih yang terakhir. Kunci yang dilindungi, file auth, ioctl antarmuka, dan hook eksternal adalah empat sumber daya berbeda. Mempertahankan satu tidak mengatakan apa pun tentang akses ke yang lain. Hook yang memanggil alat firewall tetap membutuhkan hak istimewa yang dituntut alat itu.

Hook punya tombolnya sendiri. Panduan OpenVPN memasangkan opsi persist dengan up-restart, yang menentukan apakah skrip up dan down berjalan lagi setelah mulai ulang. Antarmuka yang tetap naik karena itu tidak memberi tahu apa pun tentang apakah integrasi resolver Anda diperbarui.

# which restart path just happened?
journalctl -u openvpn-client@office --since '10 min ago' | grep -E 'SIGUSR1|ping-restart|Restart pause|NOTE:'

# did the interface survive, and do its routes still exist?
ip -brief link show tun0
ip route show dev tun0

Sepasang perintah itu memisahkan dua mode kegagalan dalam hitungan detik. Antarmuka yang ada dengan rute yang hilang adalah masalah hook atau rute. Antarmuka yang lenyap berarti proses benar-benar berakhir.

Antarmuka yang dipertahankan bukan kill switch

Jika persyaratannya adalah lalu lintas tidak boleh pernah keluar dari terowongan, perangkat yang dipertahankan tidak memberikannya. Rute untuk keluarga alamat lain, rute default kedua, dan kasus ketika proses keluar sepenuhnya semuanya tetap di luar cakupan opsi.

Tangani kedua persyaratan secara terpisah. Mempertahankan objek terowongan di antara penyambungan ulang adalah kemudahan bagi daemon. Memblokir keluar saat terowongan mati adalah kebijakan firewall dengan aturan dan pengujiannya sendiri. Mencampuradukkan keduanya menghasilkan konfigurasi yang tampak defensif dan berperilaku seperti penyambungan ulang upaya terbaik.

Beri nama peristiwa sebelum mendiagnosisnya. Mulai ulang lunak, upaya koneksi yang gagal, dan penghentian layanan adalah tiga peristiwa dengan tiga perilaku, dan hanya yang pertama adalah yang dijelaskan opsi ini.

Artikel terkait