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, это может быть очень полезным, если вы часто работаете с виртуальными машинами. Если у вас остались вопросы, спрашивайте в комментариях!
Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали















Спасибо! Уже пользуюсь подобным!
Автор, расскажи еще как сделать чтобы входящие 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. Для начинающих это не очевидно.
я таки не понял как открить порт?