Saya memiliki masalah yang sama persis , dan melihat ke resolusi, jadi saya senang menjelaskan masalah dan solusi secara rinci.
Tanpa Melibatkan VPN
Penting untuk memahami konfigurasi yang diperlukan untuk memenuhi persyaratan Anda tanpa melibatkan VPN. Juga, informasi ini mengasumsikan bahwa tidak ada firewall perangkat lunak yang mengganggu, baik pada host maupun tamu.
Tanpa VPN, ini biasanya diselesaikan dengan membuat dua adapter jaringan dalam konfigurasi mesin virtual.
Adaptor pertama harus disetel ke NAT
mode, yang memungkinkan tamu mengakses sumber daya jaringan (termasuk Internet) melalui antarmuka jaringan host.
Adaptor kedua harus diatur ke Host-only
, yang memungkinkan komunikasi dua arah antara tuan rumah dan tamu.
Adaptor ini sedikit lebih rumit untuk diatur daripada yang pertama, karena memerlukan modifikasi preferensi jaringan global VirtualBox untuk mengkonfigurasi adaptor khusus host (catatan: ini memerlukan hak istimewa Administrator).
Di VirtualBox, buka File -> Preferences -> Network
. Klik Host-only Networks
tab dan klik +
ikon kecil untuk menambahkan adaptor baru. Anda akan diminta untuk meningkatkan izin VirtualBox.
Mengisi Adapter
tab adalah wajib; seharusnya terlihat seperti ini (abaikan adaptor yang berlabel #2
; itu digunakan untuk sesuatu yang tidak terkait):
Nilai pada DHCP
tab server bersifat opsional. Jika Anda bermaksud melakukan hard-code alamat IP untuk adaptor ini dalam konfigurasi jaringan tamu, maka nilai-nilai ini tidak perlu. Sebaliknya, jika Anda bermaksud menggunakan DHCP, nilainya mungkin terlihat seperti ini:
Langkah terakhir berkaitan dengan mengkonfigurasi VirtualBox adalah kembali ke konfigurasi jaringan VM dan menambahkan adaptor kedua, yang merujuk pada adaptor khusus host yang baru saja kita buat:
Sekarang, dalam sistem operasi tamu, jaringan harus dikonfigurasikan untuk memanfaatkan kedua antarmuka jaringan ini.
Pada Debian atau Ubuntu GNU / Linux, konfigurasinya semudah memodifikasi /etc/network/interfaces
agar terlihat seperti ini:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
# The secondary network interface
auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0
(purist mungkin lebih suka menggunakan /etc/network/interfaces.d
direktori saja, tapi itu di luar cakupan penjelasan ini)
Mulai ulang layanan jaringan tamu, atau lebih sederhana, mulai ulang seluruh VM tamu, dan semuanya harus "hanya berfungsi".
Pada titik ini, seseorang harus dapat melakukan ping ke VM tamu 192.168.56.101
dan menerima balasan (asalkan firewall perangkat lunak tidak mengganggu).
Demikian juga, seseorang harus dapat melakukan ping host 10.0.2.2
. Alamat IP ini tampaknya "dikodekan" ke dalam implementasi NAT VirtualBox, atau setidaknya ditentukan melalui beberapa petunjuk konfigurasi yang tidak jelas, dan ada sedikit informasi yang tersedia mengenai asal-usulnya. Tapi, sayangnya, "itu hanya berhasil".
Dengan konfigurasi ini, ketiga kondisi yang dijabarkan dalam pertanyaan Anda terpenuhi.
Masukkan: VPN
Tapi, ini intinya. Memperkenalkan VPN menyebabkan masalah penghentian (baik, tergantung pada VPN spesifik dan konfigurasinya).
VPN modern mampu Split Tunneling , yang diperlukan untuk konfigurasi VirtualBox yang disebutkan di atas agar berfungsi sesuai dengan tiga persyaratan Anda. Untuk alasan keamanan (baik), split tunneling sering dinonaktifkan, dan justru inilah masalah dalam kasus Anda (dan milik saya).
Ketika Anda terhubung ke VPN, klien VPN (Cisco AnyConnect Secure Mobility Client, 3.1.02026, dalam kasus saya) memeriksa tabel perutean komputer host, mengingatnya, dan kemudian mengasahnya dengan nilai-nilai yang biasanya berasal dari beberapa terpusat- lokasi terkelola (yaitu, bahkan dengan hak istimewa Administrator lokal, tidak mungkin untuk menimpa pengaturan).
Anda dapat memeriksa sendiri tabel perutean dengan membuka command.exe
(pada Windows):
C:\>route print
Sebelum menghubungkan ke VPN, tabel perutean berisi entri penting yang memungkinkan konfigurasi VirtualBox ini berfungsi dengan benar. Menghubungkan ke VPN menyebabkan entri-entri ini dihapus, yang mencegah komunikasi antara tuan rumah dan tamu.
(Ada banyak entri lain, yang telah saya hilangkan di sini, karena tidak relevan dengan akar penyebab perilaku ini.)
Sebelum menghubungkan ke VPN:
192.168.56.0 255.255.255.0 On-link 192.168.56.1 266
192.168.56.1 255.255.255.255 On-link 192.168.56.1 266
192.168.56.255 255.255.255.255 On-link 192.168.56.1 266
224.0.0.0 240.0.0.0 On-link 192.168.56.1 266
255.255.255.255 255.255.255.255 On-link 192.168.56.1 266
Setelah terhubung ke VPN:
192.168.56.1 255.255.255.255 On-link 192.168.56.1 266
224.0.0.0 240.0.0.0 On-link 192.168.56.1 266
255.255.255.255 255.255.255.255 On-link 192.168.56.1 266
Klien VPN menghapus baris berikut:
192.168.56.0 255.255.255.0 On-link 192.168.56.1 266
192.168.56.255 255.255.255.255 On-link 192.168.56.1 266
Tanpa dua entri terakhir itu, tuan rumah dan tamu tidak dapat berkomunikasi, dan ini justru perilaku yang dimaksudkan ketika pemisahan terowongan dinonaktifkan dalam konfigurasi VPN.
Biasanya, kedua perintah ini akan mengembalikan rute tersebut:
C:\>route ADD 192.168.56.0 MASK 255.255.255.0 192.168.56.1 METRIC 266
C:\>route ADD 192.168.56.255 MASK 255.255.255.255 192.168.56.1 METRIC 266
Tetapi klien VPN tetap waspada: ia memotong upaya untuk memodifikasi tabel routing. Klien saya tampaknya mengizinkan entri kedua, tetapi bukan yang pertama. (Dan itu dapat membuka keduanya secara berkala; saya tidak menguji untuk itu.)
Jika VPN spesifik Anda dan konfigurasi yang menyertainya memungkinkan untuk tunnel split diaktifkan, biasanya dinyalakan seperti ini:
Setelah memutuskan sambungan dari VPN, klien VPN yang berperilaku baik akan mengembalikan tabel perutean yang ada sebelum menghubungkan. Klien VPN saya tampaknya melakukan ini dengan andal, yang bermanfaat karena itu berarti VM tamu tidak perlu dihidupkan ulang ketika saya terhubung ke, atau memutuskan sambungan dari, VPN. Dalam kasus seperti itu, adaptor sekunder VM direset, tetapi memperoleh kembali alamat IP-nya secara otomatis dan transparan, memulihkan komunikasi antara tuan rumah dan tamu dengan segera. Lebih baik lagi, NFS mount antara host dan guest (Saya menggunakan mount CIFS) tetap terhubung di seluruh operasi koneksi VPN / putuskan.
Jika VPN Anda memungkinkan tunneling terbagi, mungkin ini adalah masalah sederhana untuk mengaktifkannya, dalam hal ini, saya ingin mendengar dari Anda apakah "semuanya hanya berfungsi" atau tidak.