Sebuah instance OpenVPN muncul saat boot dengan nama yang tidak Anda kenali, dan menghentikannya berfungsi sampai reboot berikutnya. Pola itu berarti Anda telah menghapus prosesnya tetapi belum aktivasinya. Keduanya adalah objek berbeda, dan hanya satu yang terlihat di layar status. Menemukan aktivasi membutuhkan empat perintah baca-saja dan satu keputusan.

Sebutkan unit yang tepat terlebih dahulu

Mulailah dari nama unit di journal, bukan dari nama file profil. Instance bisa bernama openvpn@, openvpn-client@, openvpn-server@ atau sesuatu yang khas distro, dan menebak namanya membawa Anda ke template yang salah. Output status menyebutkan unit yang benar-benar berjalan, dan itulah satu-satunya nama yang penting di sini. Salin persis, termasuk sufiks apa pun.

Perintah berikut menjelaskan unit itu tanpa mengubah apa pun. systemctl show melaporkan jalur fragmen, jalur sumber, status file unit, drop-in apa pun, dan apa yang memicunya. list-dependencies --reverse menunjukkan unit yang dimuat mana yang menunjuk ke sana. Keduanya baca-saja, jadi jalankan sebelum membentuk teori.

Ganti nama yang diamati di mana-mana. Nama contoh yang disalin adalah cara paling umum untuk menyelidiki layanan yang salah, dan menghasilkan jawaban percaya diri tentang unit yang tidak pernah berjalan.

Baca template untuk mengetahui nama file

Unit instance adalah perluasan dari template, dan template menentukan file konfigurasi mana yang dibacanya. Baris perintah yang berakhir pada placeholder khusus instance diselesaikan menjadi nama instance plus sufiks. Jika sufiksnya .conf dan instance bernama old, filenya adalah old.conf. Jika Anda menamai instance old.conf, template yang sama meminta old.conf.conf.

Detail itu menjelaskan satu kelas duplikat. Seseorang menambahkan instance kedua dengan nama yang salah, yang pertama terus berjalan, dan host berakhir dengan dua tunnel dan satu log yang membingungkan.

Baca template yang efektif, bukan file yang Anda ingat pernah disunting. Drop-in dapat menggantikan baris perintah, dan penggantinya itulah yang berjalan saat boot.

Lacak bagaimana ia masuk ke transaksi boot

Tiga jalur umum: tautan wants dari sebuah target, persyaratan dari unit lain, atau unit yang dihasilkan oleh generator paket. Daftar dependensi terbalik mencakup dua yang pertama sebagai entri graf yang dimuat. Daftar itu tidak mencakup timer, hook, atau permintaan eksternal, sehingga daftar tersebut adalah bukti, bukan audit lengkap.

Output yang dihasilkan di bawah /run/systemd/generator adalah produk, bukan sumber. Menyuntingnya hanya bertahan hingga generasi berikutnya, sehingga perbaikan yang diterapkan di sana tampak berhasil lalu kembali.

Periksa input terdokumentasi paket sebelum mengasumsikan dari mana generator membaca. Pemindaian direktori yang tidak terdokumentasi adalah alasan biasa sebuah unit muncul tanpa tautan aktivasi.

Hapus aktivasinya, bukan hanya prosesnya

Jika instance diaktifkan langsung dan benar-benar usang, systemctl disable --now menghentikannya dan menghapus tautan boot dalam satu langkah. Periksa dulu bahwa tunnel ini bukan satu-satunya jalur administratif Anda ke host. Perintah itu adalah contoh siklus hidup, bukan saran untuk menghentikan setiap VPN di mesin. Jalankan pemeriksaan sebelum perintah, bukan sesudahnya.

Dua bagian itu dapat dipisahkan dan sering tertukar. Menonaktifkan tidak menghentikan layanan yang berjalan, dan menghentikan tidak menghapus aktivasi, jadi perintah sebagian menjelaskan masalah yang kembali saat boot.

Unit yang dinonaktifkan masih dapat dijalankan oleh unit lain atau oleh permintaan eksplisit. Ketika generator memiliki aktivasi, perbaiki input generator alih-alih menonaktifkan outputnya. Penyamaran memblokir lebih banyak jalur tetapi dapat merusak dependensi, jadi itu bukan pengganti pemahaman.

Verifikasi dengan reboot, bukan dengan layar status

Muat ulang systemd jika definisi unit atau input generator berubah, lalu periksa status yang dihasilkan. Muat ulang daemon tidak mendorong profil baru ke tunnel yang sedang berjalan, jadi kedua pemeriksaan itu terpisah. Jadwalkan reboot dan pastikan instance tetap tidak ada sementara tunnel yang dimaksud masih berfungsi.

Pertahankan profil lama sampai kepemilikannya dipahami, lalu pensiunkan melalui proses yang dimaksud. Keberhasilan adalah unit yang tidak ada dan jalur akses yang berfungsi, bukan unit yang gagal yang hilang dari satu layar.

Artikel terkait