Как запустить клиент-серверное приложение на виртуальных машинах, работающих на разных компьютерах?
Здравствуйте, у меня есть два ноутбука под управлением Ubuntu 16.04 и Ubuntu 14.04. У каждого из них есть виртуальная машина под управлением Solaris 11. Я хочу запустить серверную программу на одной виртуальной машине и клиентскую программу на другой виртуальной машине с другим ноутбуком. Возможно ли это сделать?
Я попробовал Google, но все, что я нашел, было информацией о подключении виртуальных машин на одном компьютере. Пожалуйста, предложите, как это можно сделать.
Спасибо
Изменить: я пытаюсь сделать это на виртуальной коробке и с помощью моего домашнего Wi-Fi.
1 ответ
У вас есть два варианта с точки зрения сети:
Много NAT. По умолчанию я предполагаю, что ваши виртуальные машины настроены на использование режима NAT в любом имеющемся у вас решении для виртуализации, что немного усложняет задачу. Выполнимо, но сложно.
"Соедините" виртуальные машины с реальной сетью, в которой также находятся хост-системы, что устраняет головные боли NAT. Это более простой вариант.
Вариант 1: сеть виртуальных машин в режиме NAT
ПРИМЕЧАНИЕ: я никогда не делал так, чтобы это работало надежно, я всегда использовал мостовой режим, который гораздо надежнее.
VMware и VBox настроены для разрешения NAT и перенаправления портов. Это все хорошо и здорово, но есть некоторые головные боли, которые это приносит.
VMWare
Вы не можете легко настроить переадресацию портов NAT, если у вас нет VMware Workstation Pro. Это связано с тем, что редактор виртуальной сети для переадресации портов NAT не поставляется с Workstation Player или более ранними версиями программного обеспечения VMware Player.
Предполагая, что у вас есть диспетчер / редактор виртуальных сетей, выполните следующие действия в системе с виртуальной машиной, которая будет "сервером":
(1) Откройте диспетчер виртуальных сетей / редактор и выберите один адаптер с "NAT" в списке "Внешнее подключение". Это будет выглядеть примерно так:
(2) Выберите "Настройки NAT", и вы получите следующее окно:
(3) В области "Переадресация портов" нажмите "Добавить". Вы получаете окно, подобное этому:
Установите информацию следующим образом:
Порт хоста: Вероятно, это тот же порт, который сервер прослушивает в ВМ, но может быть и другим, если хотите.
Тип: TCP или UDP зависит от вашего сервера и от того, как он слушает. Можно с уверенностью предположить, что здесь используется TCP, однако большинство вещей с активным соединением - это TCP.
IP-адрес: IP-адрес виртуальной машины. Вы можете получить это с
ip -4 addr list
изнутри виртуальной машины в командной строке.Порт виртуальной машины: порт, который будет прослушивать приложение сервера.
Описание: описание того, для чего предназначен этот порт.
Возможно, вам придется временно отключить виртуальную машину и перезапустить службы VMware с помощью sudo systemctl restart vmware
поэтому он перезагружает все правила переадресации / соединения портов.
(4) Запустите виртуальную машину с сервером на ней. От виртуальной машины клиента убедитесь, что вы указываете клиенту подключаться к IP-адресу компьютера, на котором запущена виртуальная машина сервера (поэтому, если ноутбук с виртуальной машиной сервера имеет IP-адрес 192.168.250.20, приложение виртуальной машины клиента должно попробуйте подключиться к 192.168.250.20.)
Обратите внимание, что это не будет работать во всех случаях, и я настоятельно рекомендую вместо этого использовать режим моста.
VirtualBox
Я никогда не получал переадресацию сетевых портов VBox NAT. Если вы используете VBox, я настоятельно рекомендую вам использовать мостовой режим вместо NAT. (Хотя это явно не отвечает для VBox, я попытался протестировать эти Port Forwards от VBox и не смог заставить его работать вообще).
Не то чтобы я не пытался, но 16 апреля VirtualBox не смог подключиться к чему-либо исходящему и никогда не настраивал виртуальные сетевые интерфейсы для возможностей NAT; Тогда я предположил, что он не может работать правильно без Bridged, но я не могу понять, почему он никогда не увеличивал пропускную способность NAT.
Вариант 2: сеть виртуальных машин: мостовой режим
Вам нужно будет запустить виртуальные машины в "мостовом" режиме, а затем использовать IP-адреса из вашей собственной сети LAN/Wifi, которые назначены виртуальным машинам (в результате "мостового соединения", позволяющего виртуальным машинам подключаться и выглядеть так, как будто они в реальной сети хост-компьютеров).
Во-первых, настройте виртуальные машины в обеих системах для использования режима "Мостовая сеть". То, как это показано, будет отличаться от решения для виртуальной машины к решению для виртуальной машины, но оно всегда будет называться "мостовым" или аналогичным (по крайней мере, в VMware или VBox). Убедитесь, что устройство, к которому вы подключены, является вашей предпочтительной сетевой картой (Wi-Fi или Ethernet), чтобы вы правильно выходили в нужную сеть с виртуальной машиной для получения IP-адреса.
Во-вторых, перезагрузите виртуальные машины, если они уже подключены. Это должно дать им новый IP-адрес из той же сети, что и хост-машины. (Это должно быть в том же диапазоне подсети даже).
В-третьих, укажите клиенту одной виртуальной машины IP-адрес сервера другой виртуальной машины. Поскольку сеть является мостовой, она должна просто подключиться. Возможно, вам придется настроить виртуальные машины на гостях, чтобы убедиться, что это разрешает соединения.
Это должно быть именно тогда, для виртуальных машин, и они должны иметь возможность соединяться без проблем.