Amaran tentang berbilang skrip kedengaran seperti aduan penjadualan, jadi pembetulan yang jelas ialah menyusun semula baris sehingga ia hilang. Ia bukan aduan penjadualan. Definisi --up yang kemudian menggantikan arahan yang sudah disimpan untuk peringkat itu, dan penghurai mengatakan begitu, bermakna daripada dua skrip anda hanya tepat satu pernah berjalan. Yang satu lagi tidak beratur di belakangnya; ia sudah tiada.

Itulah sebabnya amaran ini wajar diberi perhatian walaupun tidak membawa maut: apa yang diramalkannya ialah kemas kini DNS atau perubahan laluan yang senyap-senyap berhenti berlaku.

Amaran ini bukan tentang susunan

OpenVPN menyimpan satu arahan skrip pengguna untuk peringkat up. Apabila penghurai menemui definisi lain, daripada profil, fail yang disertakan atau baris arahan, ia menggantikan apa yang sudah dipegangnya dan mengeluarkan amaran. Tiada apa digabungkan, tiada apa berjalan dua kali, dan tiada persoalan susunan. Arahan yang terus hidup ialah yang terakhir dilihat penghurai, sebab itulah memindahkan satu baris boleh menukar pemenang sementara skrip yang lain kekal mati.

Corak yang sama terpakai pada peringkat skrip yang lain: satu arahan setiap satu. Jika dua kerja perlu berlaku kedua-duanya, mereka memerlukan satu titik masuk, bukan dua arahan yang menyerupai senarai.

Cari kedua-dua definisi dalam pelancaran sebenar

Mulakan dengan apa yang benar-benar diterima oleh daemon, bukan dengan profil yang anda sunting. ps -ef dan ExecStart unit menunjukkan baris arahan, yang mungkin menambah --up daripada titik masuk kontena atau pembalut; fail init sesuatu edaran boleh berbuat demikian juga. systemctl cat openvpn-server@server mendedahkan apa yang disumbangkan oleh perkhidmatan itu sendiri, dan grep rekursif pada direktori konfigurasi menemui definisi peringkat fail. Duplikasi selalunya datang daripada lapisan berbeza, dan itulah sebabnya menyunting satu fail tidak mengubah apa-apa.

Menyalin skrip ke direktori lain atau menamakannya semula juga tidak membuang arahan. Penghurai mengira definisi, bukan fail.

Biarkan satu hook memiliki kerja itu

Pembetulan yang tahan lama ialah satu penghantar yang menjalankan kedua-dua tindakan dalam susunan yang disengajakan. Skrip shell pendek dengan set -eu yang memanggil integrasi yang diperlukan dan kemudian tindakan tempatan, sambil menyalurkan "$@" supaya sempadan argumen kekal, menyimpan tingkah laku di satu tempat yang boleh diaudit. Menyalurkan argumen hanya memeliharanya; ia tidak membuktikan kedua-dua pembantu menjangka antara muka yang sama, jadi baca kontrak setiap satu. Tentukan apa yang perlu dilakukan oleh kegagalan dan sama ada perubahan separa perlu diterbalikkan.

Jika pelancar menawarkan hook sambungan yang disokong, utamakan ia berbanding rantaian buatan tangan. Imej kontena atau pakej vendor selalunya mempunyai tempat berdokumen untuk kerja tambahan, dan menggunakannya menghalang peningkatan daripada menimpa penghantar anda.

Pembersihan tergolong dalam peringkat down yang sepadan. Tindakan up yang menulis semula DNS atau menambah laluan memerlukan pembalikan berdokumen, dan penghantar yang hanya mengendalikan permulaan ialah separuh reka bentuk.

Sahkan integrasi, bukan sekadar kesenyapan

Membuang amaran pendua ialah bahagian yang mudah; integrasi masih perlu berfungsi. Periksa keadaan penyelesai selepas bersambung dengan resolvectl status atau dengan membaca /etc/resolv.conf, dan sahkan laluan dengan ip route. Kemudian putus dan sambung semula, kerana hook yang dirantai tergesa-gesa cenderung meninggalkan sesuatu daripada sesi sebelumnya. journalctl -u openvpn-server@server -b menunjukkan sama ada penghantar anda berjalan dan apa yang dicetaknya.

Kekalkan keistimewaan hook di tempatnya. Menaikkan script-security atau menjalankan daemon dengan lebih banyak hak bukan pembetulan untuk hook yang diganti; ia meluaskan apa yang boleh dilakukan oleh setiap skrip masa depan, termasuk yang akan dinamakan oleh penyerang.

Tanda bahawa pembetulan itu benar bukanlah kesenyapan dalam log. Ia adalah jawapan DNS, entri laluan dan pembersihan yang semuanya berfungsi selepas dua sambungan semula.

Artikel berkaitan