Это продолжение моего предыдущего вопроса. Основываясь на отзывах Даниэля Б и Делтика, я перешел с VirtualBox на QEMU, который может обрабатывать 64-разрядных гостей на виртуальной машине в качестве хоста (в моем случае Hyper-V) - сценарий, называемый вложенной виртуализацией.

После установки QEMU и прочтения некоторой документации я успешно преобразовал данный образ OVA в (родной для QEMU) формат QCOW2. Я заметил, что результирующее изображение намного больше исходного (6.4G против 1.3G), но, возможно, это нормально. Затем я узнал, как запустить виртуальную машину, используя QEMU, и попытался сделать именно это:

qemu -nographic -hda <IMAGE_NAME>.qcow2 &

Затем я понял (и позже подтвердил дальнейшее чтение документации QEMU), что схема сети по умолчанию подразумевает отсутствие моста между хостом и гостевыми ОС. Моя попытка включить мост, как показано ниже, не удалась (на основе этого сообщения в блоге):

qemu -nographic -net bridge:br0 -hda <IMAGE_NAME>.qcow2 &

Я не решаюсь использовать метод, основанный на использовании bridge-utils , описанный здесь , так как он может испортить сеть для хост-ОС. Кроме того, основываясь на этом документе , я попытался перенаправить порты (см. Ниже), но у меня это тоже не сработало. Если интерфейс TAP является решением, то как мне применить его к моей ситуации.

Моя ситуация заключается в том, что гостевая виртуальная машина запускает веб-приложение, к которому можно получить доступ в локальном режиме, перейдя по URL-адресу http://192.168.xx.yy/<APPLICATION_NAME> . По сути, мне нужно представить приложение (работающее в режиме вложенной виртуализации) всему миру. Итак, мой вопрос имеет два аспекта:

1) Каков оптимальный (и, надеюсь, самый простой) способ включить сетевое мостовое соединение в моей ситуации;

2) мне и, если да, как именно я могу перенаправить порты, чтобы позволить пользователям получать доступ к приложению по адресу https://<FQDN of the host VM>/<APPLICATION_NAME> , предпочтительно через нестандартные порты?

1 ответ1

1

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


Преодоление предпосылок

Виртуальная машина, подключенная к мосту, должна иметь возможность получать собственный IP-адрес, а также использовать собственный уникальный MAC-адрес. Вам необходимо узнать у своего хостинг-провайдера, какие ограничения MAC-адресов и IP-адресов есть у вашей виртуальной машины Hyper-V.

MAC-адреса

В частности, если ваш хостинг-провайдер предотвращает подделку MAC-адресов (часто это делается для предотвращения перехвата сетей других виртуальных машин), вы не сможете использовать мосты без специальной поддержки вашего хостинг-провайдера.

IP-адреса

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

Альтернатива: NAT

Если вы не можете выполнить оба предварительных условия для моста, вы можете настроить NAT и затем перенаправить порты, которые вам нужны, от вложенной виртуальной машины через единственный сетевой маршрут хоста.

Это немного беспорядок, чтобы портировать вперед, но определенно выполнимо. Я успешно использовал инструкции libvirt раньше.


Строим мост

Существует несколько способов построить мост, но поскольку вы работаете в Debian, я дам вам пример конфигурации /etc/network/interfaces которая реализует мостовое соединение при загрузке:

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
        address 192.168.0.111
        netmask 255.255.255.0
        gateway 192.168.0.1
        metric 0
        bridge_ports eth0
        bridge_stp on
        bridge_fd 0
        bridge_maxwait 0
        dns-nameservers 8.8.8.8 8.8.4.4
iface br0 inet6 dhcp

В приведенной выше конфигурации предполагается, что подчиненным интерфейсом является eth0 а вашим хостом - 192.168.0.111 в подсети 192.168.0.0/24 .

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

Я предполагаю, что у вас есть частная / фиксированная IP-сеть, потому что в своем вопросе вы написали « 192.168.xx.yy », поэтому все, что осталось сделать, чтобы сделать вашу вложенную виртуальную машину доступной для внешнего мира, - это подключить открытую / плавающую IP-адрес для этого частного / фиксированного IP-адреса.

Опять же, если у вас есть только один IP-адрес и / или один MAC-адрес для работы, вам, возможно, придется согласиться на NAT и переадресацию портов. В противном случае вы сможете сформировать эту сетевую конфигурацию так, чтобы она соответствовала вашей сети и настраивала мостовые соединения так, как вы хотели.

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