Satu aplikasi di mesin keluar melalui VPN dan yang lain tidak, dan kedua pengguna bersumpah tidak mengubah apa pun. Perbedaannya sering kali keputusan pengikatan yang dibuat aplikasi itu sendiri: socket yang diikat ke perangkat, alamat sumber yang dipilih sebelum koneksi, atau namespace dengan tabel perutean sendiri. Masing-masing mengubah jalur mana yang berlaku, dan tidak satu pun muncul dalam pemeriksaan IP umum di browser.

Tiga pengikatan berbeda, tiga efek berbeda

Mengikat ke perangkat dan mengikat ke alamat sumber adalah operasi terkait dengan akibat berbeda. Pengikatan perangkat dapat memaksa lalu lintas keluar melalui satu antarmuka dan melewati pencarian rute normal untuk socket itu. Pengikatan alamat sumber tetap melalui pemilihan rute, tetapi sumber yang dipilih dapat cocok dengan aturan kebijakan dan mengirim paket ke tempat lain. Perbedaannya terdengar akademis sampai sebuah aturan merutekan berdasarkan sumber. Saat itu ia menentukan segalanya.

Namespace jaringan adalah kasus ketiga. Ia punya antarmuka dan tabel perutean sendiri, jadi aplikasi di dalamnya sama sekali tidak terpengaruh oleh default host. Memperlakukan ketiganya sebagai hal yang sama menghasilkan penjelasan percaya diri yang tidak bertahan pada uji pertama.

Tentukan apa yang sebenarnya diatur aplikasi

Baca konfigurasi jaringan aplikasi atau perilaku terdokumentasinya sebelum menyentuh rute. Jika ia menyediakan pilihan antarmuka, kolom alamat sumber, atau opsi namespace, pengaturan itulah yang pertama diperiksa. Jika tidak, pengikatan mungkin internal dan hanya terlihat melalui pelacakan atau diagnostiknya sendiri.

Di Linux, opsi socket seperti SO_BINDTODEVICE punya cakupan dan persyaratan izin yang terdokumentasi, dan proses tanpa hak istimewa mungkin sama sekali tidak dapat menyetelnya. Batasan itu adalah petunjuk berguna: jika opsi tidak dapat diterapkan, aplikasi kemungkinan bukan sumber perbedaannya.

Perutean kebijakan membaca sumber

Saat perutean kebijakan dikonfigurasi, aturan dapat memilih tabel berdasarkan sumber paket. Socket yang mengikat alamat sumber karena itu dapat mengikuti aturan yang tidak pernah disentuh jalur default, meskipun tidak ada antarmuka yang disebutkan secara eksplisit.

Reproduksi pencarian dengan keluarga alamat, sumber, dan namespace yang sama seperti yang digunakan aplikasi. Pencarian rute umum dari shell di namespace host menjawab pertanyaan berbeda, dan ketidaksesuaian itulah alasan paling umum rute yang berfungsi tampak rusak.

Tunnel terpisah dan proses pembantu

Tunnel terpisah per aplikasi menambah lapisan lain. Klien dapat mencocokkan paket atau proses aplikasi, dan pembantu yang membuka socket sendiri adalah subjek terpisah. Peluncur dan layanan latarnya dapat menghasilkan koneksi berbeda dengan nama terlihat yang sama.

Periksa apakah aturan tunnel terpisah mencakup proses yang benar-benar terhubung. Jika aplikasi mengikat ke antarmuka tertentu dan klien VPN mencocokkan berdasarkan paket, kedua keputusan dapat bertentangan tanpa salah satunya keliru.

Uji jalur aplikasi itu sendiri

Jalankan permintaan baru dari aplikasi setelah setiap perubahan. Browser yang menampilkan keluaran yang Anda inginkan bukan bukti setara untuk program lain yang terikat ke antarmuka lain, dan koneksi yang di-cache dapat terus memakai jalur lama jauh setelah pengaturan berubah. Tutup sesi lama sebelum menilai aturan baru. Jika tidak, uji mengukur masa lalu.

Referensi socket Linux mendokumentasikan SO_BINDTODEVICE dan persyaratannya. Baca dulu konfigurasi aplikasi itu sendiri, reproduksi pencarian dalam konteks yang sama, dan baru setelah itu putuskan apakah rute atau pengikatan perlu diubah.

Artikel terkait