Dua Lompatan VPN Berurutan: Siapa Sebenarnya yang Melihat Trafik Anda?
Lompatan serial mendekripsi dan mengenkripsi ulang di gateway pertama; lompatan bersarang hanya melepas lapisan luar. Telusuri kedua desain dan lihat operator mana yang membaca apa.
Setiap profil klien menyebut satu server, jadi dari posisi pengguna ada satu terowongan dan satu tempat perlindungan berakhir. Apa yang terjadi setelah gateway pertama itu adalah keputusan desain yang tidak pernah dilihat klien, dan kedua desain umum berperilaku sangat berbeda saat diperiksa. Dalam rantai serial, gateway pertama mendekripsi lalu mengenkripsi ulang. Dalam rantai bersarang, ia melepas lapisan luar dan meneruskan terowongan dalam yang tidak dapat dibukanya. Jumlah lompatan sama pada keduanya, karena itu perbedaannya harus digambar, bukan dihitung.
Mulailah dari klien dan sebutkan kedua ujungnya
Mulailah dari tempat pengguna memulai, di profil koneksi. Profil itu memuat satu alamat jarak jauh, satu metode autentikasi dan, bila desainnya mendukung, daftar rute. Beri label terowongan luar dari klien ke gateway A dan berikan contoh alamat: alamat terowongan klien 10.77.0.2, alamat A 10.77.0.1, dan titik akhir publik A 198.51.100.10, diambil dari rentang dokumentasi TEST-NET-2 agar tidak ada yang di contoh bertabrakan dengan host nyata.
Tidak ada yang menyebut gateway B di profil itu, dan itu bukan cacat. Lompatan kedua milik A, dan satu-satunya kewajiban klien adalah mengirim trafik ke A dan menerima apa yang kembali. Apakah A mengakhiri terowongan, meneruskannya, atau membuka yang baru adalah pertanyaan yang dijawab sisa penelusuran ini, dan itulah yang menentukan apa yang dapat dibaca A.
Serial: A mendekripsi, lalu mengenkripsi ulang
Dalam desain serial, A mengakhiri trafik dua kali. Ia melepas perlindungan dari klien, memperoleh paket IP aplikasi, lalu mengirim paket itu melalui terowongan kedua yang dibuat A menuju B. Di antara kedua operasi itu, paket berada di jalur penerusan A sebagai paket IP biasa yang dialamatkan ke tujuan privat.
Itu menghasilkan dua konsekuensi yang layak dikatakan terus terang. A dapat menerapkan kebijakan pada paket dalam, berupa rute, aturan filter, dan pencatatan sumber serta tujuan, dan A harus menyimpan dua set kredensial: satu sebagai server bagi klien dan satu sebagai klien B. Perlindungan ada setiap saat, tetapi objek yang dilindungi berganti identitas di A.
Dari situ tidak berarti A membaca teks polos aplikasi. Ketika klien dan layanan menjalankan TLS dan memverifikasi sertifikat satu sama lain, A melihat aliran catatan TLS, bukan permintaan yang dapat dibaca. Memastikan di mana perlindungan itu berakhir memerlukan pandangan ke rantai sertifikat layanan, bukan ke diagram terowongan.
Bersarang: A hanya melepas lapisan luar
Dalam desain bersarang, klien lebih dulu membangun terowongan dalam ke B lalu membawa terowongan itu di dalam yang luar menuju A. A melepas tajuk luar, menemukan terowongan dalam dan meneruskannya tanpa memegang kuncinya, sehingga perlindungan dalam tetap berakhir di B.
Uplink klien lalu membawa dua lapisan, sedangkan jalur antara A dan B membawa satu. A melihat alamat luar terowongan dalam, yang cukup untuk mengetahui ada trafik dan kira-kira ke mana arahnya, dan tidak cukup untuk membaca muatannya. Itulah seluruh perbedaan dari kasus serial, dan tidak ada penghitung lompatan yang menunjukkannya. Yang masih bisa dilakukan A adalah menolak meneruskan apa yang tidak dapat dibacanya, dan itu selalu tersedia bagi operator gateway tersebut.
Penyarangan membebani sifat itu. Setiap lapisan menambah beban tajuk, jadi perencanaan MTU dan MSS menjadi wajib, bukan sekadar rapi, dan jalur yang berfungsi dengan satu lapisan dapat diam-diam membuang paket besar dengan dua. Setiap lapisan juga perlu perilaku sambung ulang dan keepalive sendiri, dan kegagalan di satu lapisan tampak seperti gangguan sebagian melalui lapisan lain.
Gambarkan para pengamat, bukan hanya terowongannya
Terowongan adalah bagian mudah dari gambar. Para pengamat adalah inti desainnya, jadi tulis satu baris per titik pandang dan isi apa yang benar-benar dapat dibaca masing-masing.
| Vantage point | Serial chain | Nested chain |
|---|---|---|
| Client's access network | Outer tunnel only | Outer tunnel only |
| Operator of A | Inner IP packet between A and B | Outer addresses of the inner tunnel, not its payload |
| Path between A and B | Second tunnel | Second tunnel |
| Operator of B | Inner packet re-originated by A | Payload after the inner layer is removed |
| Service edge | Traffic from the exit address | Traffic from the exit address |
Dua baris terus dicampuradukkan: operator A dan penyedia terowongan klien. Keduanya bisa satu entitas, dan nama gateway yang terpisah tidak membuatnya independen. Kepemilikan independen memerlukan kendali administratif terpisah, kredensial terpisah dan pencatatan terpisah.
Metadata bertahan di kedua desain. Waktu, ukuran paket dan jumlah koneksi tetap dapat diamati di setiap lompatan, jadi dua lompatan menaikkan biaya korelasi, bukan menghilangkan sinyalnya. Desain yang menjanjikan ketaknampakan harus diperiksa terhadap daftar itu sebelum ada yang bergantung padanya.
Telusuri jalur kegagalan sebelum memilih
Rusaklah sesuatu dengan sengaja dari klien, dalam urutan yang akan ditemui pengguna. Mulailah dari antarmuka dan MTU-nya, karena penyarangan gagal pada ukuran paket jauh sebelum gagal pada autentikasi.
ip -4 addr show dev tun0
ip link show dev tun0 | grep mtu
ping -M do -s 1380 -c 2 10.77.1.1
Lalu pastikan titik akhir perlindungan alih-alih menganggapnya. Mintalah sertifikat layanan dari dalam terowongan mana pun yang aktif, dan bandingkan rantai yang dilihat klien dengan rantai yang benar-benar disajikan layanan. Gateway yang menandatangani ulang atau menyadap mengubah sertifikat itu, dan pemeriksaannya menjadi terlihat dalam satu perintah.
openssl s_client -connect intranet.example.com:443 -brief < /dev/null
Akhiri dengan matriks sambung ulang: terowongan klien putus, terowongan B putus, jalur antara A dan B berubah. Catat apa yang kembali dan apa yang tidak, dan apakah koneksi dalam pernah jatuh ke rute di luar pembawanya yang dimaksud. Catat alamat yang dipakai setiap uji, karena mengulanginya di jaringan akses lain menjawab pertanyaan lain. Ulangi juga uji MTU setelah setiap sambung ulang, karena jalur yang berubah dapat menurunkan ukuran yang dapat dipakai tanpa satu baris konfigurasi pun bergerak.
Pilih serial ketika A harus menerapkan kebijakan pada paket dalam, atau ketika klien tidak dapat menjalankan dua terowongan bertumpuk. Pilih penyarangan ketika muatan dalam harus tetap tak terbaca di A. Tuliskan pilihan itu bersama pengamat dan angka MTU-nya, dan orang berikutnya tidak perlu menggambar ulang seluruh gambar untuk menjawab satu pertanyaan.