Satu sesi SSH, satu aplikasi web, dan satu pencarian nama dapat berbagi satu koneksi VPN tanpa berebut port. Klien membangun satu aliran terenkripsi ke gateway, dan setiap percakapan aplikasi berjalan di dalamnya. Di luar, hanya transport dan port milik terowongan yang terlihat. Di dalam, setiap layanan mempertahankan portnya sendiri dan tetap membutuhkan izinnya sendiri.

Apa yang dibawa aliran luar, dan apa yang disembunyikannya

Klien membungkus setiap paket dalam transport terowongan sebelum paket itu meninggalkan mesin. Aliran luar itu memiliki satu port tujuan, yang ditetapkan saat VPN dikonfigurasi. Di dalam pembungkus, setiap paket asli mempertahankan alamat dan port layanan yang dituju. Gateway melepas pembungkus dan merutekan berdasarkan header dalam, sehingga tujuan melihat klien biasa yang datang dari jaringan.

Karena itu, tangkapan pada antarmuka WAN menunjukkan satu percakapan, bukan tiga. Port dalam baru muncul setelah dekapsulasi. Itulah sebabnya satu bukaan firewall dapat membawa SSH, HTTPS, dan DNS sekaligus.

# WAN side: one outer tuple, whatever the inner services are
tcpdump -ni wan0 'udp port 443'
# tunnel side: the inner tuples appear after decapsulation
tcpdump -ni tun0

Dokumentasi TUN/TAP membahas penyerahan ketika perangkat TUN yang dirutekan meneruskan paket IP antara kernel dan proses di ruang pengguna. Penyerahan itulah yang membuat header dalam terlihat oleh kode perutean dan firewall gateway. Dokumen itu juga menjelaskan mengapa port luar tidak mengatakan apa pun tentang layanan mana yang diizinkan.

Penerusan NAT milik listener, bukan aplikasi

Gateway yang dihosting sendiri di belakang NAT IPv4 memerlukan satu terjemahan masuk: alamat dan port publik dipetakan ke listener VPN. Tidak ada aturan yang diperlukan untuk SSH, HTTPS, atau DNS hanya karena pengguna terowongan mencapainya. Menerbitkan port tersebut akan mengekspos layanan yang sudah dilindungi terowongan. Aturan penerusan menjelaskan keterjangkauan listener, bukan izin untuk apa pun di dalam.

Sebaliknya juga berlaku. Membuka port terowongan tidak mengekspos apa pun yang lain, sehingga layanan yang hanya dapat dijangkau melalui terowongan tetap menutup permukaan publiknya. Pemisahan itulah biasanya alasan untuk menjaga layanan tetap privat.

Kebijakan dalam adalah tempat akses benar-benar diputuskan

Enkripsi melindungi jalur; enkripsi tidak mengizinkan tujuan. Rute klien memilih awalan mana yang masuk ke terowongan, kebijakan penerusan gateway memutuskan apakah paket boleh meninggalkannya, dan firewall tujuan beserta login memutuskan apakah layanan menjawab. DNS adalah kasus paling jelas: membawa kueri tidak membuat resolver menerimanya dari kumpulan klien Anda. Setiap lapisan dapat mengatakan tidak secara mandiri.

Uji setiap layanan sendiri melalui terowongan. Pencarian yang berhasil tidak mengatakan apa pun tentang port web, dan permintaan web yang berhasil tidak mengatakan apa pun tentang SSH.

dig @10.40.0.53 app.corp.example
nc -vz 10.40.0.10 8443
ssh -p 2222 [email protected]

Ketika terowongan aktif dan semuanya gagal, baca tabel rute klien lebih dulu. Ketika satu layanan gagal sementara yang lain berfungsi, kesalahan ada di tujuan itu. Kedua pengamatan itu menunjuk ke pemilik yang berbeda, dan mencampurnya membuang waktu.

WireGuard menarik garis yang sama

WireGuard menamai listener luarnya dengan ListenPort, dan aplikasi dalam tetap memakai port layanan yang dibutuhkannya. AllowedIPs adalah kumpulan awalan yang dirutekan, bukan daftar port layanan yang diizinkan. Membacanya sebagai daftar izin port menghasilkan aturan yang tidak cocok dengan apa yang dilakukan terowongan. Penamaannya berbeda; pelapisannya tidak.

Izinkan layanan dalam kebijakan input lokal saat layanan berjalan di endpoint itu sendiri, atau dalam kebijakan penerusan saat layanan berada di belakang endpoint tersebut. Perbedaan itulah yang menentukan kumpulan aturan mana yang melihat paket.

Bentuk umumnya adalah satu transport luar dengan banyak percakapan dalam. Produk yang memerlukan beberapa pertukaran luar, atau protokol IP berbeda, mengingatkan bahwa pola satu port publik menggambarkan desain ini dan bukan setiap VPN.

Artikel terkait