Vraag Hoe installeer ik in VirtualBox alleen-host virtuele machines die toegang hebben tot internet?


Bij het opzetten van virtuele machines met VirtualBox, wil ik vaak de volgende kenmerken

  • vm heeft een statische ip
  • host heeft toegang tot vm zonder port forwarding
  • vm heeft toegang tot internet
  • Ik kan mijn laptop van netwerk naar netwerk verplaatsen (bijvoorbeeld van huis naar kantoor naar coffeeshop) zonder me zorgen te maken over het beveiligen of opnieuw configureren van de vm

Geen van de netwerkverbindingsmethoden van VirtualBox stelt deze eisen alleen.

  • NAT
    Vereist port forwarding als u verbinding wilt maken met de vm van de host.

  • Host-only
    De vm heeft geen toegang tot internet, tenzij de host een router is.

  • bridged
    Toont de vm aan het netwerk; niet draagbaar.


87
2018-05-11 06:00


oorsprong




antwoorden:


Ik kan de gewenste configuratie krijgen door twee adapters op de vm in te stellen.

VirtualBox 4.2.12
Ubuntu 12.04 gast

In VirtualBox> Voorkeuren> Netwerk, stel een host-only netwerk in.

Mine heet vboxnet0, het is handmatig geconfigureerd:
ip 192.168.56.1
netmask 255.255.255.0
geen dhcp

VirtualBox network configuration VirtualBox network configuration

Stel vervolgens in de netwerkinstellingen voor de virtuele machine twee adapters in:

Adapter 1
alleen host, vboxnet0

adapter2
NAT

Start de virtuele machine op en log in via de console die VirtualBox biedt.

Voer dit uit om uw adapters te bekijken:

ls /sys/class/net

In mijn geval kregen de adapters de naam eth1 en eth2 (en zie, de loopback-interface).

Bewerk vervolgens uw netwerkconfiguratie.

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

Let daar op eth1 heeft geen standaardgateway opgegeven. eth2 krijgt een standaardgateway van dhcp.


Update maart 2018

Zien dit antwoord van @ Hugo14453 voor een bijgewerkte versie die werkt met Ubuntu 17.10 en nieuwer.


103
2018-05-11 06:00



Om de gast nu vanuit je host te bereiken, moest je een route en een naam in / etc / hosts op de hostcomputer toevoegen? Je host heeft geen interface op het 192.168.56.0-net, toch? - Mojo
Dit heeft me enorm geholpen, ik gebruik Virtualbox voor ontwikkeling en als ik thuis ben, werkt alles correct omdat ik de netwerkconfiguratie naar mijn smaak heb, de nachtmerrie begint wanneer ik naar een ander netwerk ga (familie, bedrijven ... ), Ik moet de URL's van websites wijzigen, enkele systeembestanden verwijderen, opnieuw opstarten Ik weet niet hoe vaak en de lijst gaat door. Deze oplossing trekt zich niets aan van uw huidige netwerk en daarom vind ik het leuk ... Sluit uw pc gewoon aan op elk netwerk en concentreer u op uw werk. - Nabil Kadimi
Bedankt. Het niet definiëren van een gateway-adres voor de host-only interface loste mijn problemen op. - Florian
Perfect. / etc / network / interfaces config was sleutel BEDANKT !!!! - Byron Whitlock
"Merk op dat eth1 geen standaardgateway heeft opgegeven, eth2 krijgt een standaardgateway van dhcp." <- DEZE OPMERKING IS DE SLEUTEL. - Pere Pages


Ik zou mijn probleem kunnen oplossen met een mix van Christian Long-oplossingen. Ik heb twee adapters toegevoegd:

Adapter 1 - NAT

Adapter 2 - alleen host, vboxnet0

Het enige verschil was in het interfacebestand van 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

In VirtualBox Network config liet ik DHCP aangevinkt.

Na een VM-reboot werkte alles goed.


15
2017-12-09 16:02



Dit werkt voor mij, maar ik wil dat de VM's statische IP-adressen hebben. Zodra ik dat doe, stopt internet met werken. Als ik zowel met DHCP installeer, werkt het prima. Hoe zorg ik ervoor dat de host-only interface een statische IP krijgt? - Umar Farooq Khawaja
Slechts één die werkte. Bedankt. 1 - Jorge Campos


Er is een andere eenvoudige manier waarop we geen nieuwe NAT-adapter hoeven te maken

  1. Voeg op de hostcomputer de volgende iptables-regels toe. Hiermee worden pakketten doorgestuurd via de host en op 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. U moet ook IP-doorsturen inschakelen op de host door de volgende opdracht te geven:

    sudo sysctl -w net.ipv4.ip_forward=1
    

13
2017-08-03 03:33



Dit werkt alleen op een Linux-host. - Derek Mahar
We hebben de "dnsmasq" -service nodig. In de link unix.stackexchange.com/a/384187/61742 we hebben volledige informatie over wat werd voorgesteld door @Danatela. Bedankt! - Eduardo Lucio
@EduardoLucio geef credits aan Long Bui. Ik heb zojuist dit bericht bewerkt om het leesbaarder te maken. - Danatela
@Long Bui Bedankt voor uw bijdrage! Up! Up! Up! Up! Up! Up! = D - Eduardo Lucio


Netwerkconfiguratie is gewijzigd in Ubuntu 17.10.1. U gebruikt nu de netplan-config.

Ik volgde deze gids hier

Als een migratie van Christian's antwoord, doe je het volgende:

Maak een nieuw configuratiebestand in / etc / netplan om je alleen-host adapterconfiguratie te behouden.

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

Voer het volgende in om een ​​statisch IP-adres te configureren van 192.168.56.12 waar enp0s3 is de naam van uw host-only adapter.

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

Voer vervolgens de volgende twee opdrachten uit:

sudo netplan generate
sudo netplan apply

NAT zou moeten werken zonder configuratie, uitvoeren ifconfigom het resultaat te zien:

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

7
2018-03-09 18:09



Bedankt! Ik heb een update-sectie toegevoegd aan mijn oude antwoord en gekoppeld aan deze nieuwe info. - Christian Long


Ik heb net 2 adapters toegevoegd:

Adapter 1 alleen host, vboxnet0

adapter2 NAT

En het werkt perfect, ik heb toegang tot de virtuele machine van de host en ik heb internet op de vm.


2
2018-02-25 00:52





Ja, ik had dit probleem, het was een totale pijn! Maar ik loste het op door simpelweg Squid Cache Proxy-server op mijn fysieke pc te installeren, en op die manier - mijn virtuele internet-pc's met host konden verbinding maken met internet!

Ik heb hier een korte handleiding van 3 minuten gemaakt - voor iedereen die wil hoe het werkt! http://b0zmeister.wordpress.com/allowing-host-only-virtualbox-guest-to-connect-to-the-internet/


1
2017-08-10 13:57



Dat werkte prima voor me, bedankt voor het delen. Het is veruit de eenvoudigste manier om alles te laten werken. - this.lau_
Hoi Laurent - geen problemen - blij dat het hielp! Je moet ervan houden om de virtualbox-pc's van een ander netwerk te houden - maar - met een internetverbinding die werkt :) - B0zmeister
De link is nu dood. Overweeg hier de instructies te verplaatsen. - s3v3n