Dua pertanyaan berbeda datang bersamaan setiap kali sebuah mesin virtual menjalankan klien VPN, dan jawabannya berbeda. Yang pertama adalah apakah terowongan di dalam tamu melindungi host, dan yang kedua adalah apakah terowongan di host mencakup tamu. Mode adaptor menentukan keduanya, lebih dari perangkat lunak VPN itu sendiri. Adaptor NAT menjadikan host titik ujung yang terlihat, sedangkan adaptor bridge menempatkan tamu di jaringan dengan alamatnya sendiri.

Siapa yang sebenarnya mengakhiri sesi terenkripsi

Sesi terenkripsi milik mesin yang mengakhirinya, dan itu adalah tamu ketika klien berjalan di dalam VM. Hanya lalu lintas yang masuk ke adaptor virtual tamu yang melewati terowongan itu, dan hypervisor tidak pernah merutekan mesin lain melalui tamu atas kemauannya sendiri. Karena itu tamu dapat mempertahankan terowongan yang berfungsi sementara host menjelajah di jaringan terbuka. Kebalikannya tidak simetris, dan asimetri itulah bagian yang salah dipahami sebagian besar panduan.

Alamat siapa yang dilihat jaringan luar adalah pertanyaan yang dijawab oleh mode adaptor. Setelah itu diputuskan, cakupan berhenti menjadi soal kebijakan dan menjadi soal mekanis. Semua yang berikut berasal dari dua fakta itu.

NAT menulis ulang tamu sampai tampak seperti host

Dengan NAT, hypervisor menulis ulang setiap paket tamu ke alamat host sebelum mencapai sakelar pertama. Lalu lintas itu kemudian diserahkan ke tumpukan jaringan host sendiri, tempat ia mengikuti tabel peruteannya, termasuk rute default yang dimiliki terowongan di host. Tamu NAT karena itu tercakup oleh terowongan di host tanpa konfigurasi apa pun, yang merupakan kebalikan dari apa yang disiratkan kasus tamu ke host.

# on the host: adapter mode and NAT DNS behaviour
VBoxManage showvminfo "lab-vm" | grep -i -E "nic|nat"
VBoxManage modifyvm "lab-vm" --natdnshostresolver1 on

Tamu yang menjalankan kliennya sendiri mengakhiri terowongan itu di dalam tamu, dan lalu lintas terenkripsi lalu keluar melalui penulisan ulang yang sama, sehingga aplikasi host mempertahankan jalurnya dan alamat keluarnya sendiri. VirtualBox juga memiliki penyelesaian nama dalam mode ini, meneruskan kueri tamu melalui mesinnya sendiri kecuali --natdnshostresolver1 diaktifkan. Mengaktifkannya menyerahkan pencarian tamu ke resolver host, yang memperbaiki penyelesaian ketika pandangan host sendiri benar dan sama-sama menyerahkan resolver yang mungkin hanya ada di dalam terowongan. VM harus dimatikan sebelum pengaturan diubah, dan pengaturan itu milik adaptor bukan perangkat lunak tamu.

Bridge memberi tamu sewa dan paparannya sendiri

Bridge meneruskan frame tamu ke segmen fisik, sehingga DHCP memberinya sewa dan jaringan memperlakukannya sebagai host terpisah. Setiap tamu yang dijembatani dapat memegang terowongan independen dengan rute defaultnya sendiri, dan tabel host tidak pernah berubah. Harganya adalah paparan: tamu menjawab siaran, muncul di tabel tetangga, dan berada di bawah keamanan porta sakelar serta isolasi klien nirkabel. Terowongan di host juga tidak mencakup susunan ini, karena frame tamu tidak pernah melewati tumpukan host.

Perbedaan dari kasus NAT itu layak dikatakan terang-terangan daripada dibiarkan sebagai implikasi. Tamu yang dijembatani membutuhkan kliennya sendiri dan kredensialnya sendiri setiap kali lalu lintasnya harus memakai terowongan. Di tempat tamu harus tetap tak terlihat bagi jaringan lokal, NAT atau jaringan khusus internal dengan perutean terkendali adalah rancangan yang lebih baik.

Mengapa tamu tidak bisa menjadi gateway host

Meminjamkan terowongan tamu kepada host tidak memiliki sakelar yang didukung di kedua hypervisor besar. Host tidak memiliki rute ke dalam terowongan tamu dan tidak memiliki aturan penerjemahan yang menunjuk ke sana, sehingga lalu lintas tamu dan host tetap menjadi aliran terpisah dengan pemilik terpisah. Arah itu gagal terlepas dari mode adaptor.

Pengganti yang bisa dipakai adalah penerusan dan proksi. Penerusan lokal SSH memungkinkan host menyambung ke loopback-nya sendiri sementara tamu membawa aliran ke dalam terowongan, yang mencakup layanan TCP tanpa memasang klien kedua. Membuat lalu lintas IP host sendiri memakai terowongan tamu sebagai gantinya memerlukan router di dalam tamu ditambah rute eksplisit di host dan penerjemahan di host. Itu rancangan jaringan kecil, bukan kotak centang, dan memerlukan rencana untuk jalur kembali. Ketika tamu ada semata-mata untuk menjalankan klien, taruh klien di host dan hapus lompatan tambahan itu.

ssh -N -f -L 8080:internal-host.example:80 user@lab-vm

Resolver dan rute tidak menyeberangi batas

DNS mengikuti adaptor yang menerima opsi itu, jadi tamu tidak mewarisi resolver terowongan host dan host tidak pernah mengetahui server yang didorong ke tamu. Nilai dhcp-option DNS yang didorong berlaku bagi antarmuka yang menerimanya, dan itulah sebabnya tamu yang dijembatani tanpa klien tidak dapat menyelesaikan nama internal. Tamu NAT biasanya memakai penanganan DNS hypervisor, dan perbedaannya terlihat dalam satu perintah per lingkungan.

# on the host
VBoxManage showvminfo "lab-vm" | grep -i -E "nic|nat"
# inside a Linux guest
ip -4 route
resolvectl status
# inside a Windows guest
Get-DnsClientServerAddress

Baca resolver dan rute di dalam tamu sebelum menganggap salah satunya mengikuti host. Tambahkan resolver terowongan ke adaptor tamu sendiri ketika nama internal harus diselesaikan di sana, lalu verifikasi dengan nama yang hanya ada di balik terowongan. Catat mode adaptor, pemilik terowongan dan sumber resolver untuk setiap VM, karena ketiga fakta itu menjawab hampir setiap pertanyaan berikutnya. Hypervisor lain mengganti nama mode dan membiarkan prinsipnya utuh.

Artikel terkait