Ваша основная проблема (наличие статического IP) не связана с виртуальной машиной. Вместо использования мостового сетевого интерфейса (т. Е. Гостевая система выполняет свою собственную сеть), вы теоретически можете использовать NAT и перенаправление портов и настроить хост-систему на статический IP-адрес.
К сожалению, невозможно настроить статический адрес IPv4. В сети IPv4 каждый узел имеет свою собственную таблицу маршрутизации. Как правило, большинство узлов отправляют трафик в свою локальную сеть (начиная с 192.168., 10. или 172.16-31. *) Напрямую на целевой ПК. К сожалению, используемые в сети адреса могут быть любыми из перечисленных выше, и ваш предпочтительный адрес уже может быть занят.
Это оставляет нам глобальный адрес IPv4. Маршрутизация для них настраивается в основном Интернете, и эта маршрутизация должна быть настроена Интернет-провайдером и локальным шлюзом. Это неосуществимо и не позволяет динамическую переадресацию.
Стандарт Mobile IP , который допускает такое изменение маршрута, не получил широкого применения. Мобильный IPv4 работает, когда система управляет вашим глобальным IPv4-адресом и перенаправляет его в ваше текущее местоположение.
Сегодня вы можете достичь чего-то подобного, используя VPN: настройте VPN-сервер со статическим IP-адресом где-нибудь в Интернете и подключите к нему виртуальную машину Ubuntu Server. Затем перенаправьте рассматриваемые порты с VPN-сервера на клиент.
Если достаточно постоянного имени, которое сопоставляется с текущим IP-адресом, вы можете использовать службу dyndns . Они дают вам доменное имя, которое вы можете обновить с помощью клиентской утилиты, работающей на вашей виртуальной машине. Таким образом, вы можете указать my-ubuntu-vm.dyndns-provider.net
на текущий используемый локальный адрес.
Вместо регистрации глобального DNS-имени вы также можете использовать многоадресный DNS с avahi. После настройки ваша виртуальная машина будет доступна под именем my-ubuntu-vm.local
. К сожалению, многоадресный DNS требует дополнительного программного обеспечения. Хотя многие системы Linux и Mac OS X поддерживают его «из коробки», системы Windows - нет. На этих системах вы можете установить Bonjour от Apple (также предлагается вместе с Apple Safari).
Если dyndns не работает для вас (вам действительно нужен IP-адрес, а не имя, или время обновления слишком нестабильно), и у вас почти постоянное подключение к Интернету, я бы рекомендовал перенести систему виртуальных машин на хост, на котором есть глобальный IP-адрес. Это имеет те же недостатки, что и решение VPN (не работает, когда вы не подключены к Интернету, и вам придется платить за сервер и глобальный адрес), но сравнительно легко настроить.
Если вы хотите получить доступ к ВМ только с самого хоста, вы можете просто использовать NAT и переадресацию портов (теперь доступно в графическом интерфейсе, через Devices
-> Network Adapters
). Перенаправьте порты (например, перенаправьте HTTP-сервер клиента с порта 80 гостевого компьютера на порт 2080 хоста), а затем используйте измененный порт. Шаг за шагом:
- Перейдите на вкладку сети. Если виртуальная машина работает, выберите
Devices
-> Network Adapters
. Если это не так, щелкните правой кнопкой мыши, выберите «Настройки» (или нажмите кнопку «Настройки») и перейдите на вкладку «Сеть».
- Убедитесь, что есть только один адаптер и что он настроен на NAT. (Если вы что-то здесь измените, вам нужно перенастроить ВМ)
- Откройте вкладку «
Advanced
на вкладке «Сеть».
- Нажмите
Port Forwarding
.
- Добавьте правило. Установите порт хоста на высокий порт (например, 2080), а порт клиента - на порт, который вы хотите перенаправить (80 для HTTP, 22 для ssh).
- Введите
http://localhost:2080
в браузере вашей хост-системы, чтобы получить доступ к клиентскому HTTP-серверу.
Если вам нужны службы для работы на тех же портах, вы также можете добавить дополнительный интерфейс (помимо NAT) и установить для него только хост. Это приведет к появлению нового интерфейса в вашей хост-системе, и вы сможете использовать частные IP-адреса, резервируемые VirtualBox для этой сети, для связи с гостем. Шаг за шагом:
- Выключите ВМ.
- Щелкните правой кнопкой мыши виртуальную машину в диспетчере и выберите «
Settings
.
- Перейдите на вкладку
Network
.
- Сконфигурируйте два интерфейса: один как NAT (чтобы разрешить вашей виртуальной машине доступ в Интернет), другой как только хост (чтобы ваш хост мог общаться с гостем).
- Загрузите виртуальную машину и введите
/sbin/ifconfig
чтобы узнать ее адрес. Вы хотите тот, который начинается с 192.168.
,
- Используйте этот адрес в хост-системе.