Di VirtualBox, bagaimana cara mengatur mesin virtual hanya host yang dapat mengakses Internet?

99

Dalam menyiapkan mesin virtual dengan VirtualBox, saya sering menginginkan karakteristik berikut

  • vm memiliki ip statis
  • host dapat mengakses vm tanpa penerusan port
  • vm dapat mengakses internet
  • Saya dapat memindahkan laptop saya dari jaringan ke jaringan (mis. Dari rumah ke kantor ke coffeeshop) tanpa khawatir tentang pengamanan atau konfigurasi ulang vm

Tak satu pun dari metode koneksi jaringan VirtualBox memenuhi persyaratan ini sendiri.

  • NAT
    Membutuhkan penerusan port jika Anda ingin terhubung ke vm dari host.

  • Host-only
    Vm tidak dapat mengakses internet, kecuali tuan rumah adalah router.

  • Bridged
    Menghadapkan vm ke jaringan; tidak portabel.

Christian Long
sumber

Jawaban:

110

Saya bisa mendapatkan pengaturan yang saya inginkan dengan mengatur dua adapter pada vm.

VirtualBox 4.2.12
Ubuntu 12.04 tamu

Di VirtualBox> Preferensi> Jaringan, atur jaringan hanya host.

Milik saya disebut vboxnet0, dikonfigurasi secara manual:
ip 192.168.56.1
netmask 255.255.255.0
no dhcp

Konfigurasi jaringan VirtualBox Konfigurasi jaringan VirtualBox

Kemudian, dalam pengaturan jaringan untuk mesin virtual, atur dua adapter:

Adaptor 1
host saja, vboxnet0

Adapter2
NAT

Boot mesin virtual dan masuk melalui konsol yang disediakan VirtualBox.

Jalankan ini untuk melihat adaptor Anda:

ls /sys/class/net

Dalam kasus saya adaptor diberi nama eth1 dan eth2 (dan lo, antarmuka loopback).

Kemudian, edit konfigurasi jaringan Anda.

sudoedit /etc/network/interfaces


# The loopback network interface
auto lo
iface lo inet loopback

# Host-only interface
auto eth1
iface eth1 inet static
        address         192.168.56.20
        netmask         255.255.255.0
        network         192.168.56.0
        broadcast       192.168.56.255

# NAT interface
auto eth2
iface eth2 inet dhcp

Perhatikan bahwa eth1tidak ada gateway default yang ditentukan. eth2akan mendapatkan gateway default dari dhcp.


Pembaruan Maret 2018

Lihat jawaban ini dari @ Hugo14453 untuk versi terbaru yang berfungsi dengan Ubuntu 17.10 dan yang lebih baru.

Christian Long
sumber
1
Pembaruan: VirtualBox 4.3 memperkenalkan layanan NAT yang sepertinya dapat meniadakan kebutuhan akan dua antarmuka. 6.4. Layanan Terjemahan Alamat Jaringan
Christian Long
4
Ini banyak membantu saya, saya menggunakan Virtualbox untuk pengembangan, dan ketika saya berada di rumah saya, semuanya bekerja dengan benar karena saya memiliki pengaturan jaringan sesuai dengan keinginan saya, mimpi buruk dimulai ketika saya pindah ke jaringan lain (keluarga, perusahaan ... ), Saya harus mengubah URL situs web, menghapus beberapa file sistem, reboot, saya tidak tahu berapa kali dan daftar berjalan. Solusi ini tidak peduli dengan jaringan Anda saat ini dan itulah sebabnya saya menyukainya ... Cukup colokkan PC Anda ke jaringan apa pun dan fokuslah pada pekerjaan Anda.
Nabil Kadimi
1
Terima kasih. Tidak mendefinisikan alamat gateway untuk antarmuka khusus host menyelesaikan masalah saya.
Florian
2
Sempurna. / etc / network / interface config adalah kunci TERIMA KASIH !!!!
Byron Whitlock
1
"Perhatikan bahwa eth1 tidak memiliki gateway default yang ditentukan. Eth2 akan mendapatkan gateway default dari dhcp." <- KOMENTAR INI ADALAH Kuncinya.
Pere Pages
16

Saya bisa menyelesaikan masalah saya dengan campuran solusi Christian Long. Saya menambahkan 2 adapter:

Adaptor 1 - NAT

Adaptor 2 - hanya host, vboxnet0

Satu-satunya perbedaan adalah di file antarmuka VM:

sudoedit /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback
# NAT
auto eth0
iface eth0 inet dhcp
# Host only
auto eth1
iface eth1 inet dhcp

Dalam konfigurasi VirtualBox Network, saya membiarkan DHCP diperiksa.

Setelah VM reboot semuanya bekerja dengan baik.

Alan Camillo
sumber
Ini berfungsi untuk saya, tetapi saya ingin para VM memiliki alamat IP statis. Begitu saya melakukan itu, Internet berhenti bekerja. Jika saya mengatur keduanya dengan DHCP, itu berfungsi dengan baik. Bagaimana cara membuat antarmuka hanya host mendapatkan IP statis?
Umar Farooq Khawaja
Hanya satu yang berhasil. Terima kasih. +1
Jorge Campos
14

Ada cara sederhana lain bahwa kita tidak perlu membuat adaptor NAT baru

  1. Pada mesin host, silakan tambahkan aturan iptables berikut. Ini akan meneruskan paket melalui host dan ke Internet:

    sudo iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT 
    
    sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    
    sudo iptables -A POSTROUTING -t nat -j MASQUERADE
    
  2. Anda juga perlu mengaktifkan penerusan IP pada host dengan mengeluarkan perintah berikut:

    sudo sysctl -w net.ipv4.ip_forward=1
    
Long Bui
sumber
Ini hanya berfungsi pada host Linux.
Derek Mahar
Kami membutuhkan layanan "dnsmasq" berjalan. Di tautan unix.stackexchange.com/a/384187/61742 kami memiliki informasi lengkap tentang apa yang disarankan oleh @Danatela. Terima kasih!
Eduardo Lucio
1
@EduardoLucio tolong beri kredit untuk Long Bui. Saya baru saja mengedit posting ini agar lebih mudah dibaca.
Danatela
@Long Bui Terima kasih atas kontribusi Anda! Naik! Naik! Naik! Naik! Naik! Naik! = D
Eduardo Lucio
12

Konfigurasi jaringan telah berubah di Ubuntu 17.10.1. Anda sekarang menggunakan konfigurasi netplan.

Saya mengikuti panduan ini di sini

Sebagai migrasi jawaban Christian, lakukan hal berikut:

Buat file konfigurasi baru di dalam / etc / netplan untuk menyimpan konfigurasi adaptor khusus host Anda.

misalnya sudo nano /etc/netplan/02-netcfg.yaml

Masukkan yang berikut ini untuk mengonfigurasi IP statis 192.168.56.12 di mana enp0s3nama adaptor khusus host Anda.

network:
    version: 2
    renderer: networkd
    ethernets:
        enp0s3:
            addresses:
                - 192.168.56.12/24
            dhcp4: no

Kemudian jalankan dua perintah berikut:

sudo netplan generate
sudo netplan apply

NAT harus bekerja tanpa konfigurasi, jalankan ifconfiguntuk melihat hasilnya:

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.56.12  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::a00:27ff:fe06:6cdd  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:06:6c:dd  txqueuelen 1000  (Ethernet)
        RX packets 252  bytes 23076 (23.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 208  bytes 30015 (30.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.3.15  netmask 255.255.255.0  broadcast 10.0.3.255
        inet6 fe80::a00:27ff:fe4d:a6b8  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:4d:a6:b8  txqueuelen 1000  (Ethernet)
        RX packets 95  bytes 94894 (94.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 85  bytes 7436 (7.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
Hugo
sumber
1
Terima kasih! Saya menambahkan bagian pembaruan ke jawaban lama saya dan menautkan ke info baru ini.
Christian Long
Saya telah mengikuti solusi Anda, tetapi ketinggalan dukungan nat untuk enp0s8. Saya telah menambahkan secara manual aktifkan dhcp4 untuk enp0s8 di netplan dan akhirnya mendapatkan enp0s3 dan enp0s8. Semoga ini bisa membantu seseorang.
Dzmitry Prakapenka
3

Saya Baru saja menambahkan 2 adapter:

Adaptor 1 host saja, vboxnet0

Adapter2 NAT

Dan itu bekerja dengan sempurna, saya dapat mengakses mesin virtual dari tuan rumah, dan saya memiliki internet di vm.

Guillermo Gonzalez
sumber
2

Ya saya punya masalah ini sangat menyakitkan! Tapi saya menyelesaikannya dengan hanya menginstal Squid Cache Proxy server pada PC fisik saya, dan dengan cara itu - PC virtualbox internet host-only saya dapat terhubung ke internet!

Saya melakukan panduan cepat 3 menit di sini - bagi siapa saja yang menginginkan cara kerjanya! http://b0zmeister.wordpress.com/allowing-host-only-virtualbox-guest-to-connect-to-the-internet/

B0zmeister
sumber
Itu bekerja baik untuk saya, terima kasih sudah berbagi. Sejauh ini, ini adalah cara paling sederhana untuk membuatnya bekerja.
laurent
Hai Laurent - tidak ada masalah - senang itu membantu! Harus suka menjalankan PC virtualbox dari jaringan yang berbeda - tetapi - dengan koneksi internet bekerja :)
B0zmeister
Tautan sudah mati sekarang. Pertimbangkan untuk memindahkan instruksi di sini.
s3v3n