Поскольку я работаю в нескольких местах, у меня возникают проблемы с моими серверами разработки. Поскольку я работаю в разных сетях, я не хочу настраивать сетевые параметры моих виртуальных машин каждый раз, когда я меняю сеть. Иногда сеть требует от меня использования DHCP. (публичные библиотеки и тому подобное)

Также мне приходится часто менять сетевой адаптер, я предпочитаю Ethernet, но иногда мне приходится работать по беспроводной сети.

Так много разных сетей и даже разных адаптеров.

Требования

  • интернет-соединение
  • Доступ к хост-машине с гостевой машины
  • Доступ к гостевой машине с хост-машины

Я ищу конфигурацию, поэтому мне не нужно менять настройки сети (виртуальных машин). Потому что мне пришлось поменять сеть (адаптер)

Спекуляции

хост-машина: Ubuntu, гостевая машина Virtualbox: debian. беспроводной интерфейс: wlp2s0 eth адаптер: eth1

Попытка № 1

Просто используйте NAT.

  • Добавлен адаптер NAT в Virtualbox: (10.0.2.0/24, DHCP включен)
  • Добавлен NAT-адаптер для гостевой машины.
  • Настройте гостевой интерфейс:
    • авто eth1
    • allow-hotplug eth1
    • iface eth1 inet static
    • адрес 10.0.2.5
    • маска сети 255.255.255.0
    • шлюз 10.0.2.2
    • сеть 10.0.2.0
    • трансляция 10.0.2.255

С этой конфигурацией работает следующее:

  • интернет-соединение
  • Доступ к хост-машине с гостевой машины

При такой конфигурации не работает следующее:

  • Доступ к гостевой машине с хост-машины

Кажется, это ограничение при использовании NAT.

Попытка № 2

NAT в сочетании с мостовым соединением:

  • NAT-адаптер Virtualbox (10.0.2.0/24, DHCP включен)
  • Мостовой адаптер Virtualbox (192.168.56.1/24, DHCP включен)

Поскольку иногда мне приходится переключаться с беспроводного на Ethernet, я также пытался настроить мостовой адаптер для обоих сетевых адаптеров на хост-машине.

IP хост-машины: 192.168.56.101 IP-адрес гостевой машины: 192.168.56.100

С этой конфигурацией работает следующее:

  • интернет-соединение
  • Доступ к хост-машине с гостевой машины

При такой конфигурации не работает следующее:

  • Доступ к гостевой машине с хост-машины

Этот пример имеет проблему, потому что для мостового соединения IP хост-машины должен быть установлен в диапазоне IP-адресов мостового адаптера. Иногда я не могу, потому что мне нужно использовать DHCP.

Учитывая детали моих попыток, вы, ребята, можете посоветовать мне альтернативную конфигурацию для достижения моих целей?

2 ответа2

0

Я боролся с этой проблемой до нескольких дней назад. Чтобы это исправить, для простой настройки потребуется использовать два гостевых адаптера.

  1. NAT: Это позволит осуществлять связь от гостя к внешним сетям, а также от гостя к хосту. Чтобы просмотреть IP-адрес, используемый для связи с хостом, просмотрите IP-адрес хоста в выводе ifconfig /ipconfig на гостевой машине. Это шлюз для сети NAT. Это не будет отображаться в ifconfig на хосте, поскольку VirtualBox создает сеть NAT для каждой из виртуальных машин.

  2. Только для хоста: это позволит установить связь между хостом и гостем. По умолчанию VirtualBox назначает гостевые IP-адреса, используя DHCP, но вы можете назначить статический IP-адрес для гостя, используя IP ниже 192.168.56.100.

Вы также можете настроить третий дополнительный внутренний адаптер, если у вас более одного гостя, и вы хотите общаться между гостями. Вот вопрос, который я задал на прошлой неделе в отношении этой проблемы: * Редактировать * Сделать виртуальный хост только для двунаправленной сети

0

ОК, есть два способа сделать это.

1) Используйте сеть VirtualBox NAT на клиенте. Это не обеспечивает прямой маршрут от вашего хост-компьютера, но вы можете установить предпочтения для переадресации портов. Это было бы неудобно, но если бы хостом была Windows или Mac, то это то, что я, вероятно, сделал бы, в основном потому, что я не уверен в возможностях брандмауэра / натинга / маршрутизации в этих системах (уверен, что Mac не будет это не проблема, но Windows мне неизвестна)

2) Используйте VirtualBox Host Only Network. Из вашего описания, это может быть лучше. Помните, что вам нужно будет изменить скрипт брандмауэра, чтобы он указывал на любое подключенное устройство .... Вот подробности.

На главном компьютере сначала настройте сеть только для хоста в настройках vbox. В диспетчере нажмите «Файл», затем «Настройки», а затем выберите «Сеть». Перейдите к Host Only, а затем добавьте один, если необходимо. Вот как выглядит моя: Вкладка сети hostonly 1

Hostonly tab2

Далее на хосте настройте интерфейс vboxnet0. Это автоматически происходит для меня, устанавливая мой хост-компьютер на адрес .1 в подсети. Вот вывод ifconfig на моем хосте, ссылающийся на мой ethernet и адрес vboxnet0.

Информация ifconfig на хост-машине

На вашей гостевой машине установите в сети какой-либо адрес в вашей подсети (даже с включенным DHCP-сервером, это упрощает получение шлюза / DNS-сервера) и установите сервер имен обычным способом (например, отредактируйте /etc/network/interfaces и установите статический адрес / маску / шлюз там, затем отредактируйте /etc/resolv.conf и установите там сервер имен).

На этом этапе ваш хост-компьютер и ваш гостевой компьютер должны иметь возможность общаться между собой без проблем. Вы можете поместить соответствующие записи в /etc/hosts чтобы вам не приходилось вводить IP-адреса везде ...

Последний шаг - запустить интернет для гостей. Это простой вопрос превращения хоста в маршрутизатор. Поскольку интерфейс vboxnet0 не запускается до тех пор, пока vbox не будет запущен и запущен, вы не хотите делать это во время загрузки хоста.

Простой сценарий брандмауэра, позволяющий гостевой виртуальной машине получать доступ к миру, а хост-машина может по-прежнему иметь доступ к миру и гостевой сети vboxonly. Имейте в виду, что этот сценарий может быть НАМНОГО более безопасным. Как таковой, он будет принимать некоторый клиент в любой сети, к которой подключен хост, используя ваш хост-компьютер в качестве шлюза для гостевой виртуальной машины.

#!/bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables=`which iptables`

$iptables -F

/sbin/iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE

$iptables -A FORWARD -i enp2s0 -o vboxnet0 -j ACCEPT
$iptables -A FORWARD -i vboxnet0 -o enp2s0 -j ACCEPT

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .