Menjalankan nordvpn dan menerima mesej tentang daemon yang tidak dapat dihubungi ialah aduan sempit yang biasanya tiba ketika anda sudah terlambat. Ia tidak berkata apa-apa tentang sama ada terowong berfungsi, kerana CLI hanyalah bahagian hadapan: ia bercakap dengan proses latar belakang melalui socket Unix, dan mesej itu bermaksud perbualan tersebut tidak berlaku. Berjalanlah keluar dari arahan itu dan berhenti pada perkara pertama yang ternyata tidak benar.

Mulakan di tempat ralat muncul

Dua proses terlibat, dan mengelirukan kedua-duanya itulah yang menjadikan perkara ini misteri. Daemon memiliki terowong dan mendengar pada socket di bawah /run/nordvpn/. Arahan yang anda taip menyambung ke socket itu dan bukannya menyentuh antara muka itu sendiri.

Apabila socket tiada atau menolak sambungan, CLI tiada sesiapa untuk ditanya, jadi ia melaporkan varian «daemon pengguna» atau «daemon sistem» bagi aduan yang sama. Salah satu varian itu menamakan laluan secara langsung, dan itulah ayat paling berguna dalam keseluruhan pertukaran.

Periksa unit sebelum apa-apa yang lain

Tanya pengurus perkhidmatan sama ada daemon sedang berjalan, kemudian mulakan dan dayakannya dalam satu langkah jika tidak:

systemctl status nordvpnd
sudo systemctl enable --now nordvpnd
nordvpn version

Jika unit wujud tetapi tidak aktif, enable --now memulakannya dan mengatur but seterusnya sekali gus. Jika unit tidak wujud, pakej itu bukan yang anda anggap, dan nama yang dipasang lebih penting daripada nama dalam nota anda. Itu kedengaran seperti perbezaan yang remeh sehingga anda menghabiskan dua puluh minit mendayakan perkhidmatan yang tidak pernah dipasang di bawah label itu. Baca apa yang ada, kemudian bertindak menurutnya.

Menyenaraikan fail unit menyelesaikannya dengan satu arahan, dan ia berbaloi dilakukan sebelum anda membuat sebarang kesimpulan tentang pemasangan:

systemctl list-unit-files 'nordvpn*'
service --status-all

Keluaran telah menghantar perkhidmatan itu di bawah lebih daripada satu nama unit, jadi binaan yang menggunakan nordvpn dan bukannya nordvpnd akan menghasilkan salinan sempurna ralat ini sementara perkhidmatan sihat berjalan tepat di sebelahnya.

Socket dan kumpulannya menentukan akses

Walaupun daemon berjalan, sambungan boleh ditolak kerana kebenaran. Pemasang mencipta kumpulan nordvpn, dan socket dimiliki menurutnya, jadi pengguna di luar kumpulan itu ditolak sementara perkhidmatan itu benar-benar sihat.

sudo usermod -aG nordvpn "$USER"
newgrp nordvpn

Keahlian kumpulan dibaca apabila sesi bermula, itulah sebabnya perubahan itu kelihatan tidak berkesan di terminal tempat anda melakukannya. Shell log masuk baharu atau newgrp diperlukan sebelum sesi yang berjalan melihat kumpulan baharu itu. Uji dalam shell baharu, bukan dalam shell yang baru menjalankan arahan itu. Jika tidak, anda akan menyimpulkan pembaikan itu gagal sedangkan ia belum dilaksanakan.

Pemilikan socket itu sendiri ialah separuh kedua pemeriksaan tersebut. Bandingkan kumpulan pada socket dengan kumpulan yang dilaporkan dalam shell yang menjalankan CLI, dan persoalan kebenaran terjawab dalam satu langkah dan bukannya dengan memasang semula:

ls -l /run/nordvpn
id

Proses yang hidup bukan bukti socket yang betul. Daemon yang dimulakan oleh pengurus lain, atau pakej lama yang mengikat socket dengan nama berbeza, melaporkan dengan cara yang sama. Senarai direktori membezakan kes-kes itu dalam satu baris, itulah sebabnya ia mengalahkan pemasangan semula.

Proses bagi setiap pengguna pada pembungkusan lama

Sesetengah pembungkusan menjalankan proses kedua dalam konteks pengguna yang log masuk, yang dijangka ditemui oleh integrasi desktop. Jika skrip init sistem memulakannya tanpa turun ke akaun itu, CLI mencari daemon yang tidak dimiliki mana-mana sesi.

Pada init tanpa systemd, susunan yang didokumenkan membahagikan peranan: perkhidmatan sistem berjalan di bawah satu nama dan proses di sebelah pengguna berjalan di bawah akaun sasaran dengan chpst -u <user>. Periksa susunan mana yang sebenarnya digunakan oleh pemasangan anda sebelum menambah skrip permulaan yang menganggap yang lain.

Cara mengetahui anda sudah selesai

Peningkatan ialah pencetus biasa, kerana binari baharu menjangka keadaan perkhidmatan yang tidak pernah ditinggalkan oleh yang lama. Menghentikan, mendayakan semula dan memulakan dalam susunan itu membersihkannya:

sudo systemctl stop nordvpnd
sudo systemctl enable --now nordvpnd
sudo systemctl start nordvpnd
nordvpn version

Arahan terakhir itu ialah ujian penerimaan. Versi yang dicetak bermakna socket menjawab, yang memindahkan setiap kerosakan yang tinggal ke wilayah log masuk, pelan atau sambungan dan mengeluarkannya daripada artikel ini. Jika ia menjawab, berhenti membaca di sini dan pergi lihat akaun itu.

Jika socket masih tiada, baca jurnal unit untuk melihat mengapa ia berhenti, kemudian periksa bahawa /run/nordvpn wujud dan akaun perkhidmatan boleh menulis di sana. Proses yang naik dan terus mati merekodkan sebabnya dalam jurnal itu, dan satu baris lebih cepat dibaca daripada pemasangan semula dilakukan.

Artikel berkaitan