В VirtualBox как настроить виртуальные машины только для хоста, которые могут выходить в Интернет?

При настройке виртуальных машин с VirtualBox я часто хочу, чтобы следующие характеристики

  • vm имеет статический ip
  • хост может обращаться к vm без переадресации портов
  • vm может получить доступ к Интернету
  • Я могу перемещать свой ноутбук из сети в сеть (например, из дома в офис и в кафе), не беспокоясь о защите или перенастройке vm

Ни один из VirtualBox Методы сетевого подключения удовлетворяют этим требованиям самостоятельно.

  • NAT
    Требуется переадресация портов, если вы хотите подключиться к виртуальной машине с хоста.

  • Только для хоста
    VM не может получить доступ к Интернету, если хост не является маршрутизатором.

  • Bridged
    Выставляет VM в сети; не переносимый.

99
задан 11 May 2013 в 10:00

6 ответов

Я могу получить нужную настройку, настроив два адаптера на виртуальной машине.

VirtualBox 4.2.12
Ubuntu 12.04 guest

В VirtualBox> Настройки> Сеть настройте сеть только для хоста.

Шахта называется vboxnet0, она настраивается вручную:
ip 192.168.56.1
маска сети 255.255.255.0
no dhcp

VirtualBox network configuration VirtualBox network configuration

Затем в настройках сети для виртуальной машины установите два адаптера:

Адаптер 1
только хост, vboxnet0 [ 1121]

Adapter2
NAT

Загрузите виртуальную машину и войдите в систему через консоль VirtualBox.

Запустите это, чтобы увидеть ваши адаптеры:

ls /sys/class/net

В моем случае адаптеры были названы eth1 и eth2 (и вот, интерфейс обратной связи).

Затем отредактируйте конфигурацию вашей сети.

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

Обратите внимание, что для eth1 не указан шлюз по умолчанию. eth2 получит шлюз по умолчанию от dhcp.


Обновление за март 2018 года

См. этот ответ из @ Hugo14453 для получения обновленной версии, которая работает с Ubuntu 17.10 и новее.

0
ответ дан 11 May 2013 в 10:00

Я мог бы решить мою проблему с помощью решения Кристиана Лонга. Я добавил 2 адаптера:

Адаптер 1 - NAT

Адаптер 2 - только хост, vboxnet0

Единственное отличие было в файле интерфейсов ВМ:

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
[ 115] В конфигурации сети VirtualBox я оставил проверенный DHCP.

После перезагрузки виртуальной машины все работало нормально.

0
ответ дан 11 May 2013 в 10:00

Я только что добавил 2 адаптера:

Адаптер 1 только для хоста, vboxnet0

Адаптер 2 NAT

И он отлично работает, я могу получить доступ к виртуальной машине с хоста, а у меня интернет на вм.

0
ответ дан 11 May 2013 в 10:00

Конфигурация сети изменилась в Ubuntu 17.10.1. Теперь вы используете конфигурацию netplan.

Я следовал этому руководству здесь

В качестве миграции ответа Кристиана сделайте следующее:

Создайте новый файл конфигурации в / etc / netplan для хранения ваша конфигурация адаптера только для хоста.

Например, sudo nano /etc/netplan/02-netcfg.yaml

Введите следующее, чтобы настроить статический IP-адрес 192.168.56.12, где enp0s3 - это имя вашего адаптера только для хоста.

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

Затем выполните следующие две команды:

sudo netplan generate
sudo netplan apply

NAT должен работать без конфигурации, запустите ifconfig, чтобы увидеть результат:

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
0
ответ дан 11 May 2013 в 10:00

Да, у меня была эта проблема, это была полная боль! Но я решил эту проблему, просто установив прокси-сервер Squid Cache на свой физический ПК, и таким образом - мои виртуальные ПК с виртуальной коробкой только для хоста могли подключаться к Интернету! кто хочет это как работает! http://b0zmeister.wordpress.com/allowing-host-only-virtualbox-guest-to-connect-to-the-internet/

0
ответ дан 11 May 2013 в 10:00

Существует еще один простой способ, при котором нам не нужно создавать новый адаптер NAT.

  1. На хост-машине добавьте следующие правила iptables. Это будет пересылать пакеты через хост и в Интернет:

    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. Вам также необходимо включить переадресацию IP на хосте, введя следующую команду:

    sudo sysctl -w net.ipv4.ip_forward=1
    
0
ответ дан 11 May 2013 в 10:00

Другие вопросы по тегам:

Похожие вопросы: