VirtualBox - одна из самых популярных сред виртуализации, которые используются для запуска различных операционных систем. И довольно часто случается ситуация, что вам необходимо получить доступ к какому-либо сервису гостевой системы из основной, например, веб-серверу или ssh. Но по умолчанию сетевые интерфейсы изолированы и такой возможности нет.
Для решения этой задачи можно пойти двумя путями. Мы можем пробросить необходимый порт виртуальной машины в основную систему или же выдать виртуальной машине отдельный IP адрес, что позволит обращаться к любым ее портам и использовать любые сетевые возможности. В этой небольшой статье мы рассмотрим проброс портов virtualbox двумя способами. Начнем с более простого.
Содержание статьи
Проброс портов в VirtualBox
По умолчанию для настройки сети для виртуальной машины используется технология NAT. С помощью нее вы можете просматривать интернет-сайты и выполнять различные действия в сети, но вы не будете видеть ваш основной компьютер. Для виртуальной машины создается виртуальная сеть, в которой есть только она одна, а ваша домашняя сеть и ваш компьютер ей не виден.
Но если вам нужно получить доступ к какому-либо сервису гостевой машины, то можно пробросить порт этого сервиса в основную систему. Так работают порты VirtualBox. Для этого откройте контекстное меню для машины и нажмите "Настройки":
Затем перейдите на вкладку "Сеть", а потом разверните строчку "Дополнительно":
Тут вам нужно нажать кнопку "Проброс портов":
Дальше нажмите кнопку с зеленым значком "+". Тут нужно заполнить несколько полей:
- Имя - любое имя, по которому вы сможете понять с чем имеете дело;
- Протокол - протокол, по которому работает сервис, например, tcp;
- Адрес хоста - адрес на основной машине, подключения к которому будут направляться на виртуальную машину, можно написать 127.0.0.1 или ip в локальной сети;
- Порт хоста - порт, подключения к которому нужно перенаправлять на гостя;
- Адрес гостя - на который нужно направлять подключения, оставьте пустым;
- Порт гостя - порт, на который будут перенаправлены подключения с этого порта.
Адрес хоста в локальной сети можно узнать так:
ifconfig
Еще один важный момент, что порт с которого вы перенаправляете и на который перенаправляете не должны совпадать. Странное дело, но если перенаправлять с порта 80 на 80, то работать все это не будет. Нужно использовать 8080 на 80. Тогда все в порядке. Если вы не любитель много кликать, что можно воспользоваться командной терминала:
VBoxManage modifyvm "Имя машины" --natpf1 "rulename,tcp,127.0.0.1,8080,,80"
В этом примере взяты данные из рассмотренного выше примера. Теперь на хосте и виртуальной машине откроется одна и та же страница.
Проброс портов virtualbox nat работает.
Виртуальный адаптер хоста VirtualBox
Еще один способ получить доступ к виртуальной машине извне - использовать виртуальный адаптер хоста. Тут вы можете настроить все более подробно, а также получить отдельный ip для машины, что дает больше возможностей. Сначала нужно создать виртуальный адаптер. Для этого откройте меню "Файл", затем "Настройки":
Тут нужно перейти на вкладку "Сеть", затем "Виртуальные адаптеры":
Дальше нажмите кнопку "+", чтобы в списке появился пункт vboxnet0. Тут готово, нажмите несколько раз "Ok" чтобы закрыть это окно. Дальше откройте контекстное меню вашей виртуальной машины, потом "Настроить", а затем "Сеть":
Тут вам нужно в выпадающем списке заменить "NAT" на "Виртуальный адаптер хоста". В поле имя, выберите "vboxnet0":
Теперь можете запускать виртуальную машину и смотреть ее ip адрес:
По нему гостевая система будет доступной из внешней. Внешняя система теперь тоже полностью доступна из гостевой по адресу 192.168.56.1:
Выводы
В этой небольшой статье мы рассмотрели как выполняется проброс портов VirtualBox, это может быть очень полезным, если вы часто работаете с виртуальными машинами. Если у вас остались вопросы, спрашивайте в комментариях!
Спасибо! Уже пользуюсь подобным!
Автор, расскажи еще как сделать чтобы входящие IP были реальными, а не как у хоста (для сервера видны все входящие как 10.0.2.2 или типа того, а нужно чтобы они были как есть)..
Типа этого:
От ОБЫЧНОГО пользователя, НЕ админа:
cd "C:\Program Files\Oracle\VirtualBox"
VBoxManage modifyvm "Debian Server (64-bit)" --nataliasmode1 proxyonly
VBoxManage modifyvm "Debian Server (64-bit)" --nataliasmode1 sameports
Но лучше погугли там как это правильно сделать.
Проверить можно на php:
Не вставляется код..
https://pastebin.mozilla.org/9069910
Правильно ли я понимаю, что во втором случае мы получаем виртуальный адаптер со своим виртуальным MAC, который и будет у нас отображаться во внешней интернет-сети? И реальный MAC туда уже никак не просочится? Или есть нюансы?
Нет, чтобы отображаться во внешней сети нужно настраивать сетевой мост. Реальный мак адрес и так никуда не просочится, так как он виден только до следующего роутера.
Хорошо, переформулирую. До роутера реальным МАК в этом случае просочится?
Ув. автор, покажите в статье, что в браузере нужно вводить именно адрес и порт "Откуда", а не "Куда".
Т.е. пробрасываю от 127.0.01:9081 к 10.0.2.15:81.
После проброса я все пытался достучаться именно до 10.0.2.15:81, хотя нужно было стучаться сюда 127.0.01:9081. Для начинающих это не очевидно.
я таки не понял как открить порт?