Peringatan soal beberapa skrip terdengar seperti keluhan penjadwalan, jadi perbaikan yang tampak jelas adalah menukar urutan baris sampai peringatan itu hilang. Ini bukan keluhan penjadwalan. Definisi --up yang lebih baru menggantikan perintah yang sudah tersimpan untuk tahap itu, dan pengurai mengatakan hal itu, yang berarti dari dua skrip Anda hanya tepat satu yang pernah berjalan. Yang lain tidak mengantre di belakangnya; ia sudah hilang.

Itulah sebabnya peringatan ini layak diperhatikan meski tidak fatal: yang diramalkannya adalah pembaruan DNS atau perubahan rute yang diam-diam berhenti terjadi.

Peringatan ini bukan soal urutan

OpenVPN menyimpan satu perintah skrip pengguna untuk tahap up. Ketika pengurai menemukan definisi lain, dari profil, berkas yang disertakan, atau baris perintah, ia menggantikan yang sudah dipegangnya dan mengeluarkan peringatan. Tidak ada yang digabungkan, tidak ada yang berjalan dua kali, dan tidak ada pertanyaan urutan. Perintah yang bertahan adalah yang terakhir dilihat pengurai, karena itu memindahkan satu baris dapat mengubah pemenang sementara skrip lainnya tetap mati.

Pola yang sama berlaku untuk tahap skrip lainnya: satu perintah untuk masing-masing. Jika dua pekerjaan harus sama-sama terjadi, keduanya perlu satu titik masuk, bukan dua arahan yang menyerupai daftar.

Temukan kedua definisi di peluncuran sebenarnya

Mulailah dari apa yang benar-benar diterima daemon, bukan dari profil yang Anda sunting. ps -ef dan ExecStart unit menunjukkan baris perintah, yang mungkin menambahkan --up dari titik masuk kontainer atau pembungkus; berkas init distribusi dapat melakukan hal yang sama. systemctl cat openvpn-server@server mengungkap apa yang disumbangkan layanan itu sendiri, dan grep rekursif pada direktori konfigurasi menemukan definisi tingkat berkas. Duplikat biasanya berasal dari lapisan berbeda, dan itulah sebabnya menyunting satu berkas tidak mengubah apa pun.

Menyalin skrip ke direktori lain atau mengganti namanya juga tidak menghapus arahan. Pengurai menghitung definisi, bukan berkas.

Biarkan satu hook memiliki pekerjaan itu

Perbaikan yang tahan lama adalah satu pengirim yang menjalankan kedua tindakan dalam urutan yang disengaja. Skrip shell pendek dengan set -eu yang memanggil integrasi yang diperlukan lalu tindakan lokal, meneruskan "$@" agar batas argumen tetap utuh, menjaga perilaku di satu tempat yang dapat diaudit. Meneruskan argumen hanya melestarikannya; itu tidak membuktikan bahwa kedua pembantu mengharapkan antarmuka yang sama, jadi bacalah kontrak masing-masing. Putuskan apa yang harus dilakukan kegagalan dan apakah perubahan sebagian perlu dibalik.

Jika peluncur menawarkan hook ekstensi yang didukung, pilih itu daripada rantai buatan tangan. Image kontainer atau paket vendor sering memiliki tempat terdokumentasi untuk pekerjaan tambahan, dan menggunakannya mencegah peningkatan menimpa pengirim Anda.

Pembersihan termasuk tahap down yang sesuai. Tindakan up yang menulis ulang DNS atau menambahkan rute memerlukan pembalikan yang terdokumentasi, dan pengirim yang hanya menangani penyalaan adalah setengah desain.

Pastikan integrasinya, bukan hanya diamnya

Menghapus peringatan duplikat adalah bagian yang mudah; integrasinya tetap harus berfungsi. Periksa status resolver setelah terhubung dengan resolvectl status atau dengan membaca /etc/resolv.conf, dan pastikan rutenya dengan ip route. Lalu putuskan dan sambungkan lagi, karena hook yang dirangkai terburu-buru cenderung meninggalkan sesuatu dari sesi sebelumnya. journalctl -u openvpn-server@server -b menunjukkan apakah pengirim Anda berjalan dan apa yang dicetaknya.

Jaga hak istimewa hook di tempatnya. Menaikkan script-security atau menjalankan daemon dengan lebih banyak hak bukan perbaikan untuk hook yang diganti; itu memperluas apa yang dapat dilakukan setiap skrip di masa depan, termasuk yang dinamai penyerang.

Tanda bahwa perbaikan itu nyata bukanlah diam di log. Itu adalah jawaban DNS, entri rute, dan pembersihan yang semuanya berperilaku benar setelah dua penyambungan ulang.

Artikel terkait