OpenVPN gagal bermula tanpa ralat? Lihat journal
Keluar senyap di Ubuntu biasanya bermaksud mesej pergi ke tempat lain atau unit tidak pernah berjalan. Semak nama instance, journal dan binari dahulu.
Perintah itu kembali, perkhidmatan ditunjukkan sebagai gagal, dan tiada apa yang menyerupai penjelasan sampai ke terminal. Kesunyian itu ialah simptom yang orang gambarkan sebagai «OpenVPN gagal bermula», dan ia hampir tidak pernah bermaksud program itu mati tanpa berkata apa-apa. Ia bermaksud mesej itu pergi ke saluran yang anda tidak baca, atau benda yang anda mulakan bukan benda yang anda konfigurasikan. Kedua-dua kes boleh didiagnosis dalam masa kurang seminit sebaik anda berhenti menganggap profil itu sebagai suspek.
Empat tempat menyerap output: journal unit, pemalam yang memiliki sambungan, hujung lain terowong, dan binari berbeza daripada yang anda sangka sedang berjalan. Setiap satu ada pemeriksaan sendiri.
Kesunyian bermaksud anda tidak memerhati saluran yang betul
Panggilan latar depan mencetak ke terminal anda. Unit mencetak ke journal, dan unit yang gagal boleh keluar sebelum menulis apa-apa jika kegagalan itu terletak pada cara ia dimulakan dan bukan pada apa yang diberitahu kepadanya. Perbezaan ini penting: tiada entri journal bermaksud proses itu tidak pernah benar-benar berjalan, manakala satu entri diikuti dengan keluar bermaksud ia berjalan dan menolak sesuatu.
systemctl status openvpn-client@office
journalctl -u openvpn-client@office -b --no-pager
Tambahkan systemctl show -p Result -p ExecMainStatus openvpn-client@office untuk memisahkan keluar bersih daripada isyarat. Status 1 dengan Result=exit-code ialah keputusan program; Result=signal atau tamat masa menunjuk kepada persekitaran sebaliknya, dan tiada jumlah penyuntingan profil akan mengubahnya. Catat kedua-dua nilai sebelum memulakan semula apa-apa, kerana mula semula menghapuskan keadaan sementara yang menghasilkannya.
Nama instans ialah sebahagian daripada laluan
Unit templat yang dipakej tidak mengambil laluan fail. Ia mengambil nama instans, dan nama itu ditambah pada direktori untuk mencari profil: office dalam pakej Debian dan Ubuntu diselesaikan kepada /etc/openvpn/client/office.conf. Fail bernama office-v2.conf, yang dimulakan sebagai @office tidak pernah dibaca, dan unit keluar dengan senyap kerana dari sudut pandangannya tiada apa yang perlu dilakukan. Direktori carian berbeza antara mod klien dan pelayan, jadi kesilapan yang sama menunjuk ke tempat yang jauh berbeza apabila anda menukar templat.
Ketidakpadanan itulah punca paling biasa kegagalan senyap, dan ia tidak kelihatan dalam profil kerana profil itu baik. Senaraikan apa yang benar-benar wujud dan bandingkan kedua-dua nama huruf demi huruf, termasuk apa-apa sambungan yang dijangka oleh pakej.
ls -l /etc/openvpn/client/
systemctl list-units 'openvpn*' --all
Jika unit didayakan tetapi tiada instans disenaraikan, pendayaan itu sendiri mungkin merujuk kepada nama yang kemudiannya dinamakan semula. Mendayakan semula instans yang betul biasanya memadai, dan fail unit lama yang tertinggal wajar dipadam supaya tidak mengelirukan orang seterusnya. Fail unit yang tertinggal ialah perkara kecil yang kemudiannya menelan masa sejam seseorang.
Apabila pemalam memiliki terowong, terminal tidak melihat apa-apa
Sambungan yang dimulakan daripada applet desktop dimiliki oleh NetworkManager, dan output OpenVPN-nya masuk ke journal perkhidmatan itu dan bukan ke mana-mana shell yang anda buka. Menjalankan klien dengan tangan dan tidak melihat apa-apa adalah dijangka dalam susunan itu, kerana proses yang dijalankan dengan tangan bukan yang membawa sambungan.
Cari perkhidmatan yang memilikinya dalam journal, kemudian hasilkan semula penghuraian dengan tahap terperinci yang boleh anda baca. Dua arahan di bawah melihat pemilik berbeza bagi kegagalan yang sama.
journalctl -b -u NetworkManager --no-pager | grep -i -A3 openvpn
openvpn --config /etc/openvpn/client/office.conf --verb 4 --log /tmp/ovpn.log
Larian berdiri sendiri adalah untuk membaca mesej, bukan untuk menggantikan sambungan terurus, dan kedua-duanya berbeza selepas itu: integrasi DNS, laluan dan jangka hayat milik pemalam. Membaiki ralat penghuraian dalam larian berdiri sendiri tidak membaiki penyelesaian nama secara automatik apabila applet mengambil alih, jadi asingkan kedua-dua pemerhatian.
Dua binari, satu PATH
Binaan manual yang dipasang di bawah /usr/local menang pada panggilan shell, kerana /usr/local/sbin mendahului /usr/sbin dalam PATH lalai Ubuntu. Unit tidak menggunakan PATH anda; ia menjalankan laluan mutlak yang tertulis dalam ExecStart. Jadi versi yang berfungsi dalam terminal anda dan versi yang gagal sebagai perkhidmatan boleh jadi program yang benar-benar berbeza.
Bandingkan kedua-duanya sebelum membina semula apa-apa. Arahan ketiga ialah yang menentukan hujah.
command -v openvpn
whereis openvpn
systemctl cat openvpn-client@office | grep ExecStart
Satu lagi perbezaan persekitaran tersembunyi di tempat yang sama. Unit yang dipakej bergantung pada direktori masa jalan di bawah /run yang dicipta oleh systemd untuknya; unit pengganti yang ditulis dengan tangan yang meninggalkan tetapan itu boleh gagal sebelum membuka satu fail, dan kegagalan itu kelihatan seperti penolakan umum tanpa sebarang mesej OpenVPN.
Kegagalan yang tidak dapat dilaporkan oleh klien
Sesetengah hasil diputuskan di hujung jauh. Gerbang yang menjawab dengan status HTTP dan menutup sambungan telah memberitahu anda tentang keadaannya sendiri, dan langkah berguna seterusnya ialah lognya atau akaun di sebalik kelayakan itu dan bukan fail tempatan anda. Tiada apa yang rosak secara tempatan dalam senario itu, dan menyunting profil untuk mengimbanginya menjadikan diagnosis seterusnya lebih sukar. Baca log itu sebelum anda menyentuh konfigurasi klien.
Satu lagi kes senyap ialah klien yang berfungsi dengan betul. Terowong mod klien tidak pernah mendengar pada port, jadi pemeriksaan yang menjangka pendengar terbuka tidak akan melaporkan apa-apa dan kelihatan seperti kegagalan. Sahkan mod mana yang anda mulakan sebelum membuat kesimpulan daripada senarai port yang kosong.
Kerjakan lapisan mengikut urutan: adakah unit wujud dan adakah nama instans betul, adakah sesuatu sampai ke journal atau fail --log, binari dan profil mana yang benar-benar berjalan, dan adakah kegagalan itu tempatan atau jauh. Setiap jawapan menanggalkan satu lapisan. Bermula daripada profil bermaksud menulis semula fail yang mungkin tidak pernah dibuka.