Mengapa layanan VPN yang dimulai saat boot tidak dapat membaca keyring Anda
VPN saat boot tidak punya agen rahasia yang terbuka untuk dipinjam. Baca flag rahasia koneksi sebelum mereset kata sandi yang tidak pernah ditolak server.
Koneksi yang berfungsi setelah login dan gagal sebelumnya biasanya berarti upaya saat boot tidak bisa memperoleh rahasia, bukan bahwa server menolak rahasia. Kredensial itu ada; konteks yang memintanya tidak ada. Perbedaan tunggal itu menghemat reset kata sandi yang tidak perlu.
Ikuti permintaannya: sesuatu memulai koneksi sebelum sesi desktop ada, dan penyimpanan rahasia yang biasanya menjawab belum terbuka. Kedua konteks berbeda pendapat tentang siapa yang memiliki rahasia, dan profil mencatat mana di antaranya yang diharapkan menyediakannya.
Apa yang sebenarnya diminta jalur boot
Saat boot, NetworkManager dimulai sebagai layanan sistem tanpa sesi pengguna, tanpa D-Bus sesi, dan tanpa keyring yang terbuka. Profil koneksi masih bisa dinaikkan, tetapi hanya dengan rahasia yang dapat dijangkau layanan itu sendiri. Apa pun yang dimiliki agen rahasia akan menunggu sampai seseorang login dan agen itu muncul. Layanan melakukan persis apa yang dikatakan konfigurasinya; profilnya yang harus diubah.
Kegagalan itu tertulis di dalam koneksi, bukan tersembunyi di keyring.
Membaca flag rahasia pada koneksi
Tanyakan kepada koneksi apa yang diharapkannya, bukan apa yang diingat desktop. Kolom flag menjawab pertanyaan itu secara langsung, dan ia bertahan melewati reboot di berkas profil pada disk.
Mulai dari daftar profil, lalu pastikan koneksi mana yang diatur untuk naik sendiri. Setelah itu buang satu koneksi dan baca flag kata sandinya:
nmcli -f NAME,UUID,TYPE,AUTOCONNECT connection show nmcli connection show "Work VPN" | grep -i -E "password|secret|key" journalctl -b -u NetworkManager --grep "secret"
Perintah pertama memastikan profil mana yang ada dan apakah salah satunya diatur untuk koneksi otomatis, yang merupakan cara upaya tanpa pengawasan dimulai. Perintah kedua menyingkap nilai flag, dan yang ketiga memperlihatkan layanan mengeluh bahwa tidak ada agen yang menjawab rahasia tertentu. Baris log yang menyebut rahasia sebagai milik agen adalah seluruh diagnosis dalam satu kalimat.
| Flag value | Where the secret lives | Behaviour before login |
|---|---|---|
| 0 | Stored in the connection profile | Available to the system service |
| 1 | Owned by a secret agent | Blocks until the agent is unlocked |
| 2 | Never stored | Prompts on every activation |
| 4 | Not required | Never requested at all |
Mengapa memindahkan koneksi ke cakupan sistem mengubah jawabannya
Koneksi milik pengguna diaktifkan di bawah agen pengguna itu, karena itulah ia bekerja sempurna begitu desktop menyala. Memindahkannya ke cakupan sistem menghapus agen dari jalur, sehingga profil yang sama berperilaku berbeda tanpa satu baris konfigurasi VPN pun berubah.
Pemindahan itu adalah rancangan yang sah, dan ia membawa syarat: rahasia harus dapat dijangkau layanan sistem. Menyimpannya di profil, menyediakannya melalui kredensial bercakupan sistem, atau menerima prompt interaktif pada saat yang tepat semuanya jawaban yang sah. Membiarkan flag 1 dan berharap bukan.
Kunci privat dengan frasa sandinya sendiri menambah lapisan kedua. Bahkan kata sandi akun yang tersimpan tidak akan membuka kunci yang meminta frasa sandi, jadi periksa rahasia mana yang sebenarnya diminta tahap yang gagal sebelum mengubah apa pun.
Apa yang tidak boleh dilakukan, dan apa yang harus dilakukan
Membuat setiap berkas kredensial dapat dibaca semua orang, atau mematikan autentikasi agar tidak perlu prompt, menukar ketidaknyamanan saat start dengan paparan permanen. Keduanya juga menyembunyikan ketergantungan alih-alih menyelesaikannya, dan pembaruan image berikutnya memunculkan kegagalan yang sama.
Gunakan mekanisme yang didokumentasikan distribusi Anda untuk aktivasi tanpa pengawasan pada tahap itu, lalu pastikan flag profil cocok dengannya. Periksa hasilnya dari boot bersih, bukan dari shell yang sudah memiliki agen. Catat pemilik koneksi, sumber rahasia, dan tahap yang harus berfungsi, agar perubahan autostart di kemudian hari tidak diam-diam memunculkan lagi ketergantungan pada seseorang yang membuka desktop lebih dulu. Dokumentasi adalah pembeda antara layanan yang sudah diperbaiki dan yang rusak lagi kuartal berikutnya.
Uji dari boot bersih yang terkendali, bukan dari percobaan ulang manual setelah login. Percobaan ulang berhasil karena alasan yang sama dengan kegagalan upaya saat boot, dan itulah tepatnya bukti yang dihancurkan oleh uji cepat.