Dua soalan berbeza datang bersama setiap kali mesin maya menjalankan klien VPN, dan jawapannya berbeza. Yang pertama ialah sama ada terowong di dalam tetamu melindungi hos, dan yang kedua ialah sama ada terowong pada hos meliputi tetamu. Mod penyesuai menentukan kedua-duanya, lebih daripada perisian VPN itu sendiri. Penyesuai NAT menjadikan hos titik hujung yang kelihatan, manakala penyesuai jambatan meletakkan tetamu pada rangkaian dengan alamatnya sendiri.

Siapa sebenarnya menamatkan sesi penyulitan

Sesi yang disulitkan milik mesin yang menamatkannya, dan itu ialah tetamu apabila klien berjalan di dalam VM. Hanya trafik yang masuk ke penyesuai maya tetamu melalui terowong itu, dan hypervisor tidak pernah menghalakan mesin lain melalui tetamu atas kehendaknya sendiri. Itulah sebabnya tetamu boleh mengekalkan terowong yang berfungsi sementara hos melayari rangkaian terbuka. Sebaliknya tidak simetri, dan asimetri itulah bahagian yang salah difahami oleh kebanyakan panduan.

Alamat siapa yang dilihat oleh rangkaian luar ialah soalan yang dijawab oleh mod penyesuai. Setelah itu diputuskan, liputan berhenti menjadi soal dasar dan menjadi mekanikal. Semua yang berikut berasal daripada dua fakta itu.

NAT menulis semula tetamu sehingga kelihatan seperti hos

Dengan NAT, hypervisor menulis semula setiap paket tetamu ke alamat hos sebelum ia sampai ke suis pertama. Trafik itu kemudian diserahkan kepada tindanan rangkaian hos sendiri, di mana ia mengikut jadual penghalaannya, termasuk laluan lalai yang dimiliki oleh terowong pada hos. Tetamu NAT oleh itu diliputi oleh terowong pada hos tanpa sebarang konfigurasi, yang merupakan kebalikan daripada apa yang dicadangkan oleh kes tetamu ke hos.

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

Tetamu yang menjalankan kliennya sendiri menamatkan terowong itu di dalam tetamu, dan trafik yang disulitkan kemudian keluar melalui penulisan semula yang sama, jadi aplikasi hos mengekalkan laluannya dan alamat keluarnya sendiri. VirtualBox juga memiliki penyelesaian nama dalam mod ini, menyalurkan pertanyaan tetamu melalui enjinnya sendiri kecuali --natdnshostresolver1 diaktifkan. Mengaktifkannya menyerahkan carian tetamu kepada penyelesai hos, yang membetulkan penyelesaian apabila pandangan hos sendiri betul dan sama-sama menyerahkan penyelesai yang mungkin wujud hanya di dalam terowong. VM mesti dimatikan sebelum tetapan diubah, dan tetapan itu milik penyesuai bukan perisian tetamu.

Jambatan memberi tetamu pajakannya dan pendedahannya sendiri

Jambatan menyalurkan bingkai tetamu ke segmen fizikal, jadi DHCP memberinya pajakan dan rangkaian melayaninya sebagai hos berasingan. Setiap tetamu berjambatan boleh memegang terowong bebas dengan laluan lalainya sendiri, dan jadual hos tidak pernah berubah. Harganya ialah pendedahan: tetamu menjawab siaran, muncul dalam jadual jiran, dan tertakluk kepada keselamatan port suis serta pengasingan klien wayarles. Terowong pada hos juga tidak meliputi susunan ini, kerana bingkai tetamu tidak pernah melalui tindanan hos.

Perbezaan daripada kes NAT itu wajar dikatakan terang-terang daripada dibiarkan sebagai implikasi. Tetamu berjambatan memerlukan kliennya sendiri dan kelayakannya sendiri setiap kali trafiknya perlu menggunakan terowong. Di tempat tetamu mesti kekal tidak kelihatan kepada rangkaian tempatan, NAT atau rangkaian dalaman sahaja dengan penghalaan terkawal ialah reka bentuk yang lebih baik.

Mengapa tetamu tidak boleh menjadi gateway hos

Meminjamkan terowong tetamu kepada hos tiada suis yang disokong dalam mana-mana dua hypervisor besar. Hos tiada laluan ke dalam terowong tetamu dan tiada peraturan terjemahan yang menunjuk ke sana, jadi trafik tetamu dan hos kekal sebagai aliran berasingan dengan pemilik berasingan. Arah itu gagal tanpa mengira mod penyesuai.

Pengganti yang boleh digunakan ialah pemajuan dan proksi. Pemajuan setempat SSH membolehkan hos menyambung ke gelung baliknya sendiri sementara tetamu membawa aliran ke dalam terowong, yang meliputi perkhidmatan TCP tanpa memasang klien kedua. Menjadikan trafik IP hos sendiri menggunakan terowong tetamu sebaliknya memerlukan penghala di dalam tetamu serta laluan eksplisit pada hos dan terjemahan pada hos. Itu reka bentuk rangkaian kecil dan bukan kotak semak, dan ia memerlukan pelan untuk laluan balik. Apabila tetamu wujud semata-mata untuk menjalankan klien, letakkan klien pada hos dan hapuskan lompatan tambahan itu.

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

Penyelesai dan laluan tidak melintasi sempadan

DNS mengikut penyesuai yang menerima pilihan itu, jadi tetamu tidak mewarisi penyelesai terowong hos dan hos tidak pernah mengetahui pelayan yang ditolak kepada tetamu. Nilai dhcp-option DNS yang ditolak terpakai kepada antara muka yang menerimanya, dan itulah sebabnya tetamu berjambatan tanpa klien tidak dapat menyelesaikan nama dalaman. Tetamu NAT biasanya menggunakan pengendalian DNS hypervisor, dan perbezaannya kelihatan dalam satu arahan bagi setiap persekitaran.

# 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 penyelesai dan laluan di dalam tetamu sebelum menganggap salah satunya mengikut hos. Tambahkan penyelesai terowong pada penyesuai tetamu sendiri apabila nama dalaman perlu diselesaikan di situ, kemudian sahkan dengan nama yang hanya wujud di sebalik terowong. Catat mod penyesuai, pemilik terowong dan sumber penyelesai bagi setiap VM, kerana tiga fakta itu menjawab hampir setiap soalan kemudian. Hypervisor lain menukar nama mod dan membiarkan prinsipnya utuh.

Artikel berkaitan