Binari openvpn yang mana sedang berjalan? Semak laluan pelancaran
Nama arahan, laluan perkhidmatan dan fail pakej boleh menjadi tiga objek berbeza. Semak laluan pelancaran, sahkan fail pakej, kemudian buang pembalut itu.
Satu penyelesaian lama telah memindahkan fail boleh laku OpenVPN ke tempat lain dan meninggalkan pembalut shell di laluan asal. Beberapa bulan kemudian kemas kini tiba, dan membatalkan penyelesaian itu menjadi permainan meneka fail mana yang sebenarnya klien. Nama arahan, fail boleh laku yang dikonfigurasikan dalam perkhidmatan dan senarai fail pakej itu sendiri semuanya boleh menunjuk kepada objek yang berbeza, dan membaiki satu tanpa yang lain menghasilkan hos yang kelihatan sudah dibaiki tetapi berkelakuan lebih buruk.
Mulakan dengan laluan yang dilancarkan oleh perkhidmatan
Terminal dan unit systemd tidak menyelesaikan fail boleh laku dengan cara yang sama. Shell mencari dalam PATH; unit menamakan laluan, dan ganti drop-in boleh menggantikannya tanpa menyentuh fail yang anda baca. Perbezaan itulah yang menjelaskan sebahagian besar kekeliruan dalam tugasan ini. Ia juga menentukan fail mana yang perlu disasar oleh pembaikan anda.
Tanya unit apa yang dijalankannya, termasuk drop-in yang mengubahnya, dan baca baris ExecStart yang terhasil dan bukan serpihan yang anda anggap berwibawa. Kemudian ikuti laluan itu melalui mana-mana pautan simbolik sehingga fail terakhir. Pembalut yang berakhir dengan exec ke direktori tersembunyi ialah susunan biasa daripada pembaikan lama ini.
Catat laluan yang telah diselesaikan sebelum anda mengubah apa-apa.
systemctl cat [email protected] | grep -n 'ExecStart'
readlink -f "$(command -v openvpn)"Bandingkan nama arahan dengan laluan perkhidmatan
Kedua-dua jawapan selalunya berbeza, dan perbezaan itu bukanlah kecacatan secara automatik. Pemalam NetworkManager boleh melancarkan laluannya sendiri, dan kontena boleh melekapkan satu lagi.
Yang penting ialah mengetahui pemilik mana yang melancarkan proses yang melayani trafik. Jika unit menjalankan /usr/local/sbin/openvpn-wrapper manakala shell anda menyelesaikan /usr/sbin/openvpn, membaiki fail kedua tidak mengubah apa-apa pada perkhidmatan.
Tanya pakej mana yang memiliki setiap calon, kemudian tentukan sama ada fail itu diurus oleh pakej atau diletakkan secara setempat. Fail tanpa pakej pemilik ialah fail yang seseorang letakkan di situ dengan sengaja, dan ia berhak mendapat nama, pemilik dan sebab sebelum dipadam. Kesilapan sebaliknya juga biasa: menimpa fail pakej dengan binari lama yang disimpan kerana catatan forum menggunakan direktori yang sama.
Biarkan pangkalan data pakej bercakap tentang fail pakej
Apabila perisian itu datang daripada pakej Debian, pangkalan data pakej boleh memberitahu sama ada failnya masih sepadan dengan apa yang dipasang. Ini soalan integriti yang sempit, bukan keputusan keselamatan, dan perbezaannya penting apabila anda memutuskan apa yang perlu dibaiki. Ketidakpadanan bermaksud fail berubah selepas pemasangan, yang mungkin penyelesaian lama anda atau suntingan setempat yang sah. Outputnya tidak memutuskan yang mana, jadi bacalah sebagai petunjuk dan bukan kesimpulan.
Jalankan pengesahan dan baca output dan bukannya menganggap hasil kosong sebagai bukti apa-apa.
dpkg -S /usr/sbin/openvpn
dpkg --verify openvpnManual dpkg mendokumenkan bahawa pengesahan membandingkan fail yang dipasang dengan metadata yang direkodkan secara setempat, menggunakan jumlah semak yang disimpan jika ada. Ia perasan fail pakej yang berubah, dan ia tidak boleh memberitahu sama ada binari lain dilancarkan sebagai gantinya.
Rekod keadaan sebelum membaiki
Kumpulkan laluan pelancaran yang telah diselesaikan, hubungan fail dengan pakej, lokasi pembalut dan rekod perubahan yang memperkenalkannya. Salin pembalut ke tempat terlindung jika ia mengandungi kerja integrasi yang akan diperlukan kemudian.
Jangan tampal kandungan pembalut ke dalam urutan sokongan sebelum membacanya, kerana skrip ini kadangkala membawa kelayakan atau butiran get laluan.
Rekod profil mana yang digunakan oleh perkhidmatan dan siapa yang bersambung semasa anda bekerja, kerana memulakan semula terowong boleh mengganggu sesi yang anda gunakan untuk mentadbir hos.
Sahkan pelancaran, kemudian buang pembalut
Selepas pembaikan, mulakan perkhidmatan dan sahkan bahawa proses itu menjalankan laluan yang anda maksudkan. Pertanyaan versi yang dijalankan dengan tangan membuktikan fail itu berfungsi; ia tidak membuktikan unit itu menggunakannya.
Kemudian sambungkan semula klien dan periksa sama ada profil masih mengesahkan, kerana pertukaran binari yang mengabaikan pilihan asal akan gagal dengan cara yang kelihatan seperti masalah sijil.
Buang pembalut yang tersesar melalui rekod perubahan yang sama yang memperkenalkannya. Pembaikan yang selesai menyatakan binari mana yang berjalan, mengapa, dan fail mana yang dibuang; memulihkan nama fail dan berharap bukanlah perkara yang sama.