Perkhidmatan anda gagal sebelum OpenVPN sempat berjalan, dan ralat itu menyebut unit gunung yang tidak pernah anda konfigurasikan. Itulah petunjuknya: systemd menolak seluruh transaksi kerana unit gunung akar dimask, dan profil VPN anda belum dibaca. Punca biasa ialah fail sisa dalam direktori unit masa jalan, bukan fstab yang rosak dan bukan sijil yang hilang. Jejaki fail itu dahulu, kerana itulah penjelasan paling murah untuk disingkirkan.

Ralat menyebut gunung akar, bukan profil anda

systemd menjana unit gunung akar sendiri daripada maklumat gunung kernel, dan menamakan unit itu -.mount kerana sengkang mewakili laluan akar. Unit itu biasanya wujud hanya dalam memori dan tiada fail di belakangnya. Apabila ralat mengatakan unit itu dimask, seseorang telah meletakkan fail unit di tempat systemd akan memuatnya dan mengarahkan fail itu ke /dev/null. Mask ialah keadaan sebenar, bukan salah taip dalam mesej.

Unit instans gagal kerana graf tugasnya mencapai gunung akar melalui susunan dan melalui keperluan gunungnya sendiri. Transaksi ditolak sebelum binari OpenVPN dilaksanakan, jadi tiada apa pun dalam konfigurasi klien boleh menjadi puncanya. Itulah sebabnya menukar profil, sijil atau kelayakan tidak memberi kesan pada kegagalan khusus ini.

Periksa direktori masa jalan sebelum anda menyahpepijat OpenVPN

Cari fail dengan nama tepat itu dalam direktori unit masa jalan, kemudian tanya systemd apa yang difikirkannya unit itu. Kedua-dua jawapan pantas, dan bersama-sama ia memisahkan fail sisa daripada masalah gunung yang sebenar.

ls -l /run/systemd/system/-.mount
systemctl status -.mount
systemctl list-unit-files --state=masked | grep mount

Mesin biasa tidak mempunyai fail sedemikian, dan senarai yang dimask tidak mengandungi gunung akar. Jika arahan pertama mencetak pautan simbolik ke /dev/null, diagnosisnya sudah pasti. Direktori yang sama boleh mengandungi mask tmp.mount yang dicipta oleh alat yang sama, dan itu menghasilkan kelas kegagalan yang sama dengan nama lain. Lihat seluruh direktori dan bukan hanya nama dalam ralat.

ls -la /run/systemd/system/*.mount

Jika direktori bersih dan unit itu masih dimask, mask itu berada di tempat lain dalam laluan carian, dan systemctl cat -.mount akan menunjukkan fail mana yang dimuat.

Hapuskan fail itu, muat semula dan mula semula

Membuang fail masa jalan dan memuat semula pengurus sudah memadai, dan ia tidak menyentuh apa-apa yang datang daripada pakej. Muat semula sebelum memulakan, kerana systemd menyimpan keadaan unit yang dimuat sehingga ia membaca semula direktori itu.

sudo rm -f /run/systemd/system/-.mount /run/systemd/system/tmp.mount
sudo systemctl daemon-reload
systemctl status -.mount
sudo systemctl start [email protected]

Kemudian baca jurnal perkhidmatan itu sendiri dan bukannya menganggap pembaikan itu berjaya. Permulaan yang bersih hanya membuktikan systemd menerima unit itu; klien masih boleh mati kerana profil yang hilang, rakan sebaya yang tidak dapat dicapai atau sijil yang tidak disahkan. Itu masalah OpenVPN biasa yang tersembunyi di sebalik unit yang dimask. Jurnal merekodkan profil mana yang dimuat dan sama ada terowong benar-benar terbentuk. Jika unit bermula tetapi terowong tidak, anda telah beralih kepada masalah lain, dan itu kemajuan.

journalctl -u [email protected] -b --no-pager

Kerana /run ialah sistem fail sementara, but semula juga membersihkan fail itu. Itu menjadikan but semula ujian yang berguna: jika perkhidmatan berfungsi selepas but semula dan gagal lagi selepas penyebaran seterusnya, fail itu dibakar ke dalam imej.

Halang ia kembali daripada imej

Templat kontena atau mesin maya yang memask unit gunung semasa pembinaannya akan membawa mask itu ke setiap klon. Apa sahaja yang memerlukan sistem fail seterusnya akan rosak, dan mesej itu menyalahkan gunung dan bukan imej asalnya. Membaikinya dalam satu instans yang sedang berjalan menyembunyikan masalah sehingga instans seterusnya dicipta.

Cari dalam konteks binaan untuk nama fail dan arahan yang menciptanya, kemudian buang mask daripada templat dan bina semula. Jika mask itu benar-benar diperlukan semasa binaan, buangkannya dalam lapisan yang sama yang menamatkan binaan, supaya imej yang dihantar bermula bersih. Sahkan pada klon baharu dan bukan pada mesin yang anda baiki secara manual. Itulah satu-satunya ujian yang membuktikan imej itu berubah.

Gejala yang perlu diingat ialah percanggahan antara ralat dan perkara yang anda sedang konfigurasikan. Apabila systemd mengadu tentang gunung semasa anda memulakan klien VPN, baca nama unit dalam mesej itu sebelum membaca nama perkhidmatan.

Artikel berkaitan