У меня есть локальная гостевая машина Linux. На этом госте я настроил статическую конфигурацию сети, которая подходит для конкретной сети. Но иногда я не в этой сети, или даже у меня нет сети вообще. Так есть ли способ по-прежнему подключаться к гостевой машине без фактического использования сети?

1 ответ1

1

Из руководства VirtualBox:

Настройка переадресации портов с помощью NAT

Поскольку виртуальная машина подключена к частной сети, расположенной внутри VirtualBox и невидимой для хоста, сетевые службы на гостевой машине не доступны для хост-компьютера или других компьютеров в той же сети. Однако, как и физический маршрутизатор, VirtualBox может сделать выбранные сервисы доступными миру за пределами гостевой системы через переадресацию портов. Это означает, что VirtualBox прослушивает определенные порты на хосте и повторно отправляет все пакеты, поступающие туда гостю, на тот же или другой порт.

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

Вы можете настроить гостевую службу, которую вы хотите прокси, используя инструмент командной строки VBoxManage; подробности см. в разделе «VBoxManage modifyvm».

Вам нужно будет знать, какие порты в гостевой системе использует служба, и решить, какие порты использовать на хосте (часто, но не всегда, вы захотите использовать одни и те же порты на гостевой и на хостовой машине). Вы можете использовать любые порты на хосте, которые еще не используются службой. Например, чтобы настроить входящие подключения NAT к серверу ssh в гостевой системе, используйте следующую команду:

VBoxManage modifyvm "Имя VM" --natpf1 "guestsh, tcp ,, 2222,, 22"

В приведенном выше примере весь TCP-трафик, поступающий на порт 2222 на любом интерфейсе хоста, будет перенаправлен на порт 22 гостя. Имя протокола tcp является обязательным атрибутом, определяющим, какой протокол следует использовать для пересылки (также можно использовать udp). Имя guestsh носит чисто описательный характер и будет сгенерировано автоматически, если оно опущено. Число после --natpf обозначает сетевую карту, как и в других частях VBoxManage.

Чтобы снова удалить это правило пересылки, используйте следующую команду:

VBoxManage modifyvm "Имя виртуальной машины" --natpf1 удалить "guestsh"

Если по какой-либо причине гость использует статический назначенный IP-адрес, не арендованный у встроенного DHCP-сервера, при регистрации правила переадресации необходимо указать гостевой IP-адрес:

VBoxManage modifyvm "Имя виртуальной машины" --natpf1 "guestsh, tcp ,, 2222,10.0.2.19,22"

Этот пример идентичен предыдущему, за исключением того, что механизму NAT сообщается, что гость находится по адресу 10.0.2.19.

Чтобы перенаправить весь входящий трафик от определенного интерфейса хоста к гостю, укажите IP этого интерфейса хоста следующим образом:

VBoxManage modifyvm "Имя виртуальной машины" --natpf1 "guestsh, tcp, 127.0.0.1,2222,, 22"

Это перенаправляет весь TCP-трафик, поступающий на интерфейс localhost (127.0.0.1) через порт 2222, на порт 22 гостя.

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

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