Dua klien berjalan bersamaan, masing-masing yakin memiliki rute default, dan gejalanya datang sebagai sesuatu yang aneh: satu aplikasi tamu berfungsi, yang lain ter-resolve ke tempat yang salah. VPN di dalam tamu dan VPN di host dapat hidup berdampingan, tetapi hanya ketika jalur luar dan kebijakan dalam sepakat tentang siapa membawa apa. Menjalankan keduanya tidak dengan sendirinya membentuk rantai. Catat lampirannya lebih dulu, lalu ubah satu hal setiap kali.

Catat lampiran tamu lebih dulu

Tamu mencapai server VPN-nya melalui jalur apa pun yang diberikan hypervisor: NAT di belakang host, jembatan ke segmen fisik, atau jaringan khusus host dengan perutean ditambahkan di atasnya. Setiap lampiran mengubah apa yang dapat dilihat tamu dan apa yang dapat dilakukan host terhadap lalu lintasnya. Di bawah NAT paket tamu tampak berasal dari host, sehingga terowongan host sendiri dapat membawanya tanpa tamu mengetahui apa pun. Di bawah jembatan tamu memiliki kehadirannya sendiri di segmen dan gateway default-nya sendiri.

Catat lampiran sebelum menyentuh konfigurasi apa pun, bersama dengan klien mana yang seharusnya membawa aplikasi mana. Kalimat itu menyelesaikan sebagian besar kasus ini, karena kedua klien biasanya dibangun di atas asumsi yang berbeda. Tamu yang diharapkan memakai terowongan host tidak boleh juga memiliki rute default pesaing sendiri.

Telusuri titik akhir tamu ke luar

VPN tamu membutuhkan jalur yang dapat dipakai ke servernya sendiri sebelum hal lain bisa bekerja. Ketika terowongan host aktif dan tamu berada di belakang NAT, handshake tamu keluar melalui terowongan host, yang entah itu desain atau kecelakaan yang tidak didokumentasikan siapa pun. Ketika terowongan host putus dan tamu bergantung padanya, tamu kehilangan konektivitas tanpa satu pun perubahan di sisinya. Menelusuri titik akhir ke luar memberi tahu Anda mana dari keduanya yang benar-benar Anda miliki.

Rute lebar dalam konteks mana pun menangkap lalu lintas yang diharapkan klien lain. Rute 0.0.0.0/0 di dalam tamu dan klien host dengan terowongan penuh sama-sama mengklaim segalanya, dan yang berlaku terakhir menang. Tumpang tindih antara jaringan virtual tamu, LAN lokal, dan jaringan jarak jauh menghasilkan efek yang sama untuk prefiks privat, dengan kegagalan yang menyerupai masalah autentikasi; perilaku penerjemahan alamat sama dengan yang dijelaskan untuk jaringan kontainer.

Bandingkan catatan sebelum dan sesudah

Ambil garis dasar dengan terowongan host mati, atau dalam keadaan terkendali apa pun yang diizinkan kebijakan Anda, lalu catat rute dan resolver tamu. Setelah itu terapkan konfigurasi gabungan dan bandingkan kedua catatan, dengan persyaratan privasi tetap utuh. Jika garis dasar langsung tidak sesuai, tuliskan batasan itu dalam catatan alih-alih melewati perbandingan.

ip route get 10.20.30.41
ip rule show
resolvectl status --no-pager | head -12

Kueri rute menyebutkan antarmuka dan alamat sumber yang akan membawa tujuan tertentu, dan itulah baris paling berguna dalam penyelidikan ini. Daftar aturan menunjukkan apakah perutean kebijakan mengirim sebagian tujuan melalui tabel kedua. Keluaran resolver menunjukkan apakah DNS mengikuti terowongan tamu atau tetap di jalur host. Jalankan tiga perintah yang sama sebelum dan sesudah perubahan, dan selisihnya akan menyebut pelakunya.

Jaga kepemilikan tetap jelas di antara restart

Pembatasan akses lokal klien host dapat memblokir lalu lintas ke NAT virtual atau jembatan, dan pembatasan itu sering disalahartikan sebagai masalah kredensial tamu. Bacalah perilaku klien yang didokumentasikan alih-alih menonaktifkan pembatasan agar sebuah pengujian lolos. Setelah koreksi yang didukung, uji ulang aplikasi tamu dan kebijakan kegagalan yang Anda butuhkan. Host yang berhasil terhubung kembali tidak membuktikan apa pun tentang rute atau resolver tamu.

Putuskan sisi mana yang memiliki rute default dan tuliskan itu di runbook. Restart tamu atau pergantian jaringan di host yang diam-diam membalik kepemilikan menghasilkan laporan bug tentang VPN yang tidak pernah bersalah. Pengaturan itu seharusnya bertahan melewati reboot tanpa ada yang mengingat mengapa ia berhasil.

Artikel terkait