Profil yang berfungsi selama bertahun-tahun tiba-tiba menolak menyala, dan pesannya menyebut direktif yang tidak diingat siapa pun pernah ditambahkan: key-method. Hasil pencarian berikutnya menyarankan menambahkan key-method 2 demi kompatibilitas, yang merupakan saran dari era lain. Parser yang menolak baris itu adalah parser terkini, dan sama sekali tidak punya opsi tersebut. Menghapus baris itu memperbaiki penyalaan, dan tidak mengubah apa pun tentang cara kedua peer melindungi sesi.

Celah antara apa yang dimuat profil dan apa yang sebenarnya dilakukan protokol itulah seluruh topik di sini, dan itu menjelaskan beberapa suntingan lain yang dilakukan orang pada saat yang sama. Itu juga menjelaskan mengapa suntingan tersebut cenderung datang dalam satu berkas paket.

Gejalanya adalah galat parsing, bukan kegagalan jabat tangan

Opsi dibaca sebelum paket apa pun dikirim. Profil dengan direktif tak dikenal gagal pada tahap itu, sehingga prosesnya tidak pernah mencapai jaringan dan tidak pernah menghasilkan galat jabat tangan. Kata-katanya biasanya menyebut opsi dan berkasnya, yang menjadikan ini salah satu kegagalan paling mudah ditelusuri. Tidak ada paket, rute, atau firewall yang terlibat di dalamnya.

openvpn --config /etc/openvpn/client/office.ovpn --verb 3 --log /tmp/parse.log
grep -n 'Options error' /tmp/parse.log

Jika pesannya menyebut direktif itu, diagnosisnya selesai: berkasnya memuat sesuatu yang tidak diterima build ini. Jika pesannya justru menyebut jalur berkas, masalahnya adalah include atau kunci yang hilang, yang merupakan bagian lain dari tahap penyalaan yang sama.

Yang tidak boleh Anda simpulkan adalah bahwa klien atau server membutuhkan mode protokol yang lebih lama. Kegagalan parsing adalah masalah kosakata antara berkas Anda dan biner, dan biner dalam kasus ini hanya menjatuhkan satu kata dari kosakatanya.

Direktif dan format pengiriman adalah dua hal berbeda

Opsi key-method lama memilih bagaimana pertukaran kunci TLS dibingkai, dan pertukaran modern adalah metode multipaket yang dahulu diminta opsi itu. Opsi itu hilang karena tidak lagi memilih apa pun; format yang disebutnya menjadi satu-satunya. Karena itu menghapus baris tersebut membuat sesi memakai pembingkaian yang sama seperti sebelumnya. Suntingan teks tidak dapat mengubahnya ke arah mana pun.

Itulah sebabnya menghadirkan kembali biner lama untuk “memulihkan” metode 2 adalah perbaikan yang salah. Itu tidak memulihkan apa pun kecuali parser lama dengan nilai bawaan lama, dan itu membuat Anda kehilangan perbaikan yang datang sesudahnya. Penalaran yang sama berlaku untuk melemahkan pemeriksaan sertifikat atau daftar cipher dengan harapan koneksi kembali.

Pemeriksaan yang berguna adalah versi dan konfigurasi yang diparse, bukan keberadaan kata itu di dalam berkas:

openvpn --version | head -n 1
grep -rn 'key-method' /etc/openvpn/ 2>/dev/null

Apa yang harus dihapus, dan dari berkas mana

Sunting berkas yang benar-benar dibaca proses yang berjalan, dan hanya berkas itu. Pada sistem terpaket, biasanya itu profil di direktori klien atau server yang disebut unit, bukan salinan di direktori rumah Anda yang disimpan sebagai rujukan. Profil yang dihasilkan juga dapat dibangun ulang dari templat, jadi perubahan yang hanya dilakukan pada salinan yang digunakan akan kembali setelah proses penyediaan berikutnya.

Hapus baris usang dan biarkan endpoint, sertifikat, kebijakan cipher, serta pengaturan kanal kendali apa adanya. Itu adalah opsi yang didukung yang dibutuhkan proses, dan tidak terlibat dalam galat parsing. Jika profil yang sama memuat direktif lain yang tidak Anda kenali, periksa satu per satu terhadap versi yang Anda jalankan daripada menghapus sekelompok direktif sampai prosesnya menyala.

Lalu nyalakan instans yang dimaksud dan baca keluaran penyalaannya. Penyalaan bersih dengan listener yang hadir adalah konfirmasi bahwa tahap ini selesai; uji klien sesudahnya menjawab pertanyaan yang berbeda.

Profil yang ditolak dan klien yang ditolak terlihat serupa

Dua kegagalan menghasilkan utas dukungan yang mirip dan membutuhkan bukti yang berbeda. Server yang menolak konfigurasinya sendiri tidak pernah menyala, sehingga tidak ada klien yang dapat terhubung ke sana. Server yang menyala dengan baik dan menolak satu klien sedang berjalan, dan lognya memuat alasannya: masalah sertifikat, opsi yang didorong dan tidak diterima klien, ketidakcocokan cipher.

Opsi yang dihapus bukan diagnosis untuk kasus kedua, dan menjangkaunya membuang jam yang sama dua kali. Jika log klien menunjukkan penolakan server, bacalah penolakan itu; jika menunjukkan galat lokal, profil klien itulah berkas yang perlu diperiksa. Menjangkau direktif yang sudah tidak ada menunda kedua penyelidikan dengan jumlah yang sama.

Pertanyaan kompatibilitas yang tidak pernah dijawab baris itu

Profil yang beredar dengan direktif ini biasanya membawa cerita tentang platform tertentu, dan cerita itu bertahan lebih lama daripada alasan teknisnya. Klien seluler atau desktop tetap membutuhkan profil lengkap yang didukung: rantai sertifikat tepercaya, cipher data yang diterima kedua ujung, mode kanal kendali yang diimplementasikan kedua ujung, dan tidak ada direktif yang ditolak build klien. Tidak satu pun dari itu ditentukan oleh ada atau tidaknya baris key-method lama.

Kompresi adalah pertanyaan kebijakan terpisah dengan bentuk yang sama. Menghapus baris key-method tidak mengatakan apa pun tentang apakah direktif kompresi didukung atau dapat diterima dalam penerapan Anda, dan kedua keputusan itu harus diambil secara independen. Menghapus beberapa pengaturan yang berkaitan dengan keamanan sekaligus sampai sesuatu terhubung adalah cara sebuah profil yang berfungsi menjadi profil yang tidak terjelaskan.

Simpan catatan singkat tentang apa yang Anda hapus dan mengapa: opsinya, versi yang menolaknya, dan perintah yang menunjukkan galatnya. Orang berikutnya yang mewarisi profil itu akan memerlukan tepat ketiga fakta tersebut, dan menuliskannya sekarang lebih murah daripada merekonstruksinya nanti.

Artikel terkait