Alamat peer berubah di tengah sesi: apa yang dilakukan float di OpenVPN
float memungkinkan peer yang terautentikasi mengubah alamat luarnya di tengah sesi. Ia tidak menemukan endpoint, tidak membuka kembali tautan mati, dan tidak melewati pemeriksaan identitas.
Laptop berpindah dari Wi-Fi kantor ke hotspot ponsel, terowongan bertahan beberapa detik lagi, lalu lalu lintas berhenti sementara antarmuka masih mengklaim terhubung. Di server, daftar status terus menampilkan alamat publik lama. Inilah situasi yang menjadi alasan float ada, dan sekaligus situasi ketika orang berharap jauh lebih banyak daripada yang dilakukannya. Memahami batasnya dengan tepat mengubah kemacetan yang membingungkan menjadi perubahan konfigurasi satu baris atau penyelidikan yang sama sekali berbeda.
Apa yang dilonggarkan float, dan apa yang tidak pernah dilonggarkan
Biasanya sesi terus berbicara dengan alamat dan port luar tempat ia dimulai, dan paket yang datang dari mana pun selain itu diabaikan. Opsi float menghapus ikatan ketat itu setelah peer sudah membuktikan dirinya, sehingga pemetaan sumber yang berubah dapat melanjutkan sesi yang sama alih-alih dibuang. Tidak ada yang berubah pada pemeriksaan kriptografis: kunci, sertifikat, dan perlindungan HMAC apa pun tetap persis seperti yang dikonfigurasi.
Ini keputusan per paket, bukan kebijakan tentang siapa yang boleh terhubung. Mesin tak dikenal yang mengirim paket dari alamat baru belum membuktikan apa pun, dan paketnya dibuang seperti lalu lintas tak terautentikasi lainnya. Hanya lalu lintas yang lolos autentikasi sesi itu sendiri yang dapat memindahkan alamat peer yang tercatat, dan itulah sebabnya float aman dibiarkan aktif di lingkungan tempat klien berpindah-pindah.
Ia juga tidak mengatakan apa pun tentang terowongan dalam. Alamat luar yang berpindah tidak menetapkan ulang alamat terowongan, tidak mengubah kumpulan, dan tidak memberi peer akses ke sesuatu yang baru. Di dalam terowongan, identitas yang sama dan rute yang didorong sama berlaku sebelum dan sesudah perpindahan. Perpindahan juga tidak menegosiasi ulang kanal data, jadi cipher dan kunci yang dinegosiasikan terus berlanjut.
Paket yang memindahkan sesi harus terautentikasi
Mulai sesi dengan cara biasa terhadap remote yang dikonfigurasi, dan float menangani apa yang terjadi saat pemetaan berubah. Operator seluler yang menomori ulang di tengah aliran, gateway NAT yang menulis ulang pemetaan portnya, atau laptop yang mengganti uplink semuanya menghasilkan bentuk yang sama: paket terautentikasi dari tuple baru, yang tiba pada sesi yang masih percaya pada yang lama.
Ketika ditanya apakah float berfungsi, bukti yang berguna adalah jabat tangan yang selesai diikuti perubahan sumber yang diterima, bukan baris log tentang alamat saja. Korelasikan alamat luar lama dan baru dengan sesi yang tetap hidup, lalu pastikan lalu lintas benar-benar berlanjut melalui terowongan.
Jika sesi mati alih-alih berpindah, paket yang tiba dari alamat baru mungkin gagal autentikasi atau tidak pernah tiba sama sekali. Kedua kasus terlihat identik dari sisi klien. Di server, tangkapan pada antarmuka publik memberi tahu Anda mana yang Anda hadapi sebelum Anda menyentuh konfigurasi apa pun.
Penemuan adalah mekanisme yang sepenuhnya terpisah
float tidak menyelesaikan nama dengan pengatur waktu dan tidak melacak catatan DNS dinamis. Jika nama host server mulai diselesaikan ke alamat baru, klien yang menganggur tidak punya alasan untuk menyadarinya dan tidak punya paket dari endpoint baru untuk diautentikasi. Masalah itu milik logika penyambungan ulang, perilaku percobaan ulang klien itu sendiri, dan DNS, bukan float.
Menambahkan opsi sekali lagi tidak dapat mengimbangi tidak adanya rute ke alamat baru. Ia juga tidak membantu ketika peer diam, karena peer yang diam tidak pernah mengirim paket terautentikasi yang akan memindahkan apa pun.
Firewall di bawahnya juga punya suara. Aturan yang hanya mengizinkan endpoint luar lama memblokir alamat yang berubah sebelum OpenVPN sempat melihatnya, dan tidak ada konfigurasi sisi klien yang memperbaikinya. Tinjau siklus hidup alamat yang diizinkan sebagai tugas tersendiri; memperlebar aturan ke sumber mana pun menukar masalah kecil dengan masalah besar.
Ketika NetworkManager memiliki profil
Profil baris perintah dan koneksi yang diimpor adalah konfigurasi terpisah, dan menyunting yang satu tidak menyentuh yang lain. Sebelum menganggap opsi tidak didukung, pastikan jenis plugin apa yang benar-benar digunakan profil tersimpan dan di mana nilainya berada. UUID profil adalah pengenal yang penting ketika Anda memeriksa atau mengubah apa pun.
Periksa koneksi tersimpan, bukan berkas impor aslinya. Baris yang bertahan di berkas .ovpn tidak membuktikan apa pun jika manajer aktif tidak pernah menerapkannya, dan editor tanpa kotak centang untuk opsi tertentu juga tidak membuktikan apa pun tentang kemampuan protokol.
Jangan menambal plugin terpaket untuk menambahkan perilaku, apalagi dengan diff yang ditulis untuk versi historis komponen yang tidak terkait. Jika integrasi yang terpasang benar-benar tidak dapat menyatakan pengaturan itu, langkah yang benar adalah profil yang didukung atau jalur klien lain yang disetujui pemilik penerapan.
Buktikan transisinya alih-alih mengasumsikannya
Jalankan uji seperti kegagalan terjadi. Hubungkan, verifikasi lalu lintas melalui terowongan, paksa alamat luar berubah, lalu periksa tiga hal: sesi masih ada, alamat peer tercatat telah berpindah, dan permintaan nyata masih mencapai tujuannya. Apa pun yang kurang dari ketiganya adalah jawaban parsial.
Jaga akses pemulihan tetap tersedia selama menguji, karena eksperimen perpindahan punya kebiasaan meninggalkan mesin yang Anda pakai dalam keadaan terdampar. Konsol serial atau rute di luar pita mengubah uji yang gagal menjadi pemulihan lima menit alih-alih kunjungan ke lokasi.
Terakhir, jelaskan hanya kasus yang Anda uji. Perubahan alamat yang berhasil selama sesi bukan bukti bahwa migrasi DNS, implementasi klien lain, atau profil yang dibangun ulang akan berperilaku sama. Dokumentasi link-options menyatakan cakupan opsi itu dengan tepat; log uji Anda harus menyatakan bagian mana dari cakupan itu yang benar-benar Anda liput.