OpenConnect vpnc-script: file mana yang dijalankan?
Helper yang memasang rute dan DNS terpisah dari klien tunnel. Temukan jalur yang dipakai klien yang sedang berjalan sebelum menggantinya dengan salinan dari forum.
OpenConnect dapat menyelesaikan jabat tangan tunnel dan tetap meninggalkan Anda tanpa rute ke subnet privat, karena klien dan helper yang mengubah keadaan jaringan lokal adalah dua program berbeda. Autentikasi membuktikan bahwa gateway menerima sesi; itu tidak membuktikan apa pun tentang antarmuka, rute, atau setelan resolver mana yang dipasang sesudahnya. Sebagian besar laporan yang membingungkan berasal dari mengganti helper dengan salinan dari jawaban lama, yang mengubah perilaku setiap koneksi di mesin. Temukan helper yang benar-benar dipanggil klien yang sedang berjalan sebelum mengubah bagian mana pun darinya.
Dua program, dua tanggung jawab
Klien memiliki transportasi, autentikasi, dan perangkat tunnel. Helper terpisah memiliki apa yang terjadi pada sistem lokal setelah tunnel ada: pengalamatan pada antarmuka, rute ke subnet yang diumumkan gateway, dan konfigurasi resolver. dokumentasi helper OpenConnect menjelaskan pemisahan itu dan lingkungan yang diterima helper. Perbedaan ini penting saat kegagalan, karena kata sandi yang ditolak dan rute yang hilang bukan insiden yang sama meskipun desktop menampilkan satu dialog untuk keduanya.
Mengingat pemisahan itu juga menjelaskan mengapa koneksi dapat melaporkan keberhasilan sementara nama privat masih gagal diselesaikan. Tunnel tetap naik dalam kedua kasus, dan hanya tahap integrasi lokal yang berbeda.
Temukan helper yang dipakai klien yang sedang berjalan
Jalur ditetapkan saat paket dibangun dan dapat ditimpa pada setiap pemanggilan, jadi berkas yang Anda ingat dari distribusi lain mungkin tidak ada hubungannya dengan koneksi ini. Tanyakan pada proses yang berjalan, bukan pada dokumentasi yang kebetulan terbuka.
openconnect --version
ps -o args= -C openconnect
dpkg -L openconnect | grep -i script
ls -l /etc/vpnc/ 2>/dev/null
Jika baris proses membawa argumen --script , berkas itu menang atas bawaan hasil kompilasi. Jalur lama seperti /etc/vpnc/vpnc-script dapat ada dan tetap tidak terpakai, karena itu menghapus atau menyuntingnya tidak mengubah apa pun pada build terbaru. Periksa juga tanggal modifikasi, sebab helper yang bertahun-tahun tidak disentuh siapa pun adalah tanda kuat bahwa bawaan dari paket yang melakukan pekerjaan.
Integrasi NetworkManager adalah pemilik ketiga, dengan helper dan setelan profilnya sendiri. Menumpuk skrip rute atau resolver kedua di atas integrasi itu menggandakan rute dan meninggalkan resolver yang diklaim dikelola oleh dua program. Pilih satu pemilik per koneksi dan nonaktifkan yang lain sebelum menguji.
Baca operasi pertama yang gagal, bukan peringatan terakhir
Konfigurasi antarmuka, pemasangan rute, pemilihan resolver, dan pembersihan keadaan usang adalah langkah terpisah, dan peringatan yang dicetak terakhir sering merupakan keluhan pembersihan dan bukan kegagalan yang memutus koneksi. Bacalah ke atas sampai operasi spesifik pertama yang gagal. Kesalahan helper yang menyebut berkas atau alamat bernilai lebih dari sepuluh baris kebisingan pembongkaran.
Bandingkan hasil lokal yang dimaksudkan dengan yang teramati: perangkat tunnel ada, rute ke alamat privat yang dikenal melewatinya, dan resolver menjawab untuk nama privat. Helper yang berhasil pada dua hal pertama dan gagal pada yang ketiga menunjuk kebijakan resolver dan bukan perutean. Helper yang sama sekali tidak mengonfigurasi perangkatnya mungkin tidak pernah dijalankan, dan itu pertanyaan izin, bukan jaringan. Pastikan bit eksekusi dan akun layanan sebelum menulis ulang logika apa pun.
Verifikasi sambung, sambung ulang, dan putus
Penyiapan hanyalah separuh kontrak, karena helper yang sama harus memulihkan atau menghapus keadaan yang dimilikinya saat tunnel ditutup. Helper yang menambahkan rute dan tidak pernah menghapusnya meninggalkan mesin dengan jalur usang yang hidup lebih lama daripada sesi.
ip -brief address show tun0
ip route get 10.24.8.15
resolvectl status tun0
journalctl -u NetworkManager -b --no-pager | grep -i -E 'vpnc|script'
Jalankan tiga baris pertama saat tersambung, putuskan, lalu jalankan lagi dan pastikan rute serta entri resolver sudah hilang. Baris keempat memperlihatkan apakah helper dipanggil sama sekali dan jalur eksekusi mana yang dipakai layanan. Simpan pasangan keluaran itu di tiket, karena justru perbandingan sebelum dan sesudah yang membuat bug pembersihan tampak jelas.
Pertahankan helper dalam paket dan dapat dieksekusi oleh akun layanan, karena skrip yang berjalan di shell Anda tetap dapat ditolak di bawah kebijakan layanan yang dibatasi. Ketika penyesuaian benar-benar diperlukan, dokumentasikan tujuan dan pemiliknya serta bandingkan dengan versi paket pada setiap pembaruan. Fork helper yang tidak dijelaskan adalah salah satu dari sedikit hal yang dapat membuat koneksi yang berfungsi gagal setahun kemudian.