- Определение и настройка проброса портов в VirtualBox
- Настройка проброса портов в VirtualBox
- Заполнение полей «Адрес хоста» и «Адрес гостя»
- Как настроить проброс портов в виртуальной машине Virtual Box
- 1. Запускаем Virtual Box
- 2. Далее:
- 3. В хостовой ОС выбираем:
- 5. Далее:
- Для того, чтобы трафик из хостовой ОС направлялся в гостевую ОС в условиях NAT, необходимо сделать так называемый проброс портов.
- 7. Теперь пора запускать операционную систему в виртуальной машине
- Как подключиться к виртуальной машине VirtualBox по SSH
- Проброс портов для SSH
- Подключение через сетевой мост
Определение и настройка проброса портов в VirtualBox
Проброс портов в виртуальную машину VirtualBox требуется, чтобы получить доступ к сетевым службам гостевой ОС из внешних источников. Этот вариант предпочтительнее, чем смена типа подключения на режим моста (bridge), поскольку пользователь может сам выбирать, какие порты открыть, а какие оставить закрытыми.
Настройка проброса портов в VirtualBox
Данная функция настраивается для каждой машины, созданной в VirtualBox, в индивидуальном порядке. При правильной настройке обращения к порту хостовой ОС будет перенаправляться к гостевой системе. Это может быть актуально, если на виртуальной машине необходимо поднять сервер или домен, доступный для обращения из сети интернет.
Если вы используете файрвол, все входящие подключения к портам должны быть в списке разрешенных.
Для реализации такой возможности тип подключения должен быть NAT, который используется в VirtualBox по умолчанию. При других типах подключения проброс портов не используется.
- Запустите VirtualBox Менеджер и зайдите в настройки своей виртуальной машины.
Переключитесь на вкладку «Сеть» и выберите вкладку с одним из четырех адаптеров, который хотите настроить.
Если адаптер выключен, включите его, установив соответствующую галочку. Тип подключения должен быть NAT.
Щелкните по «Дополнительно», чтобы развернуть скрытые настройки, и нажмите на кнопку «Проброс портов».
Откроется окно, задающее правила. Чтобы добавить новое правило, кликните по иконке с плюсом.
- Имя — любое;
- Протокол — TCP (UDP используется в редких случаях);
- Адрес хоста — IP хостовой ОС;
- Порт хоста — порт хостовой системы, который будет использоваться для входа в гостевую ОС;
- Адрес гостя — IP гостевой ОС;
- Порт гостя — порт гостевой системы, куда будут перенаправляться запросы с хостовой ОС, отправленные по порту, указанному в поле «Порт хоста».
Перенаправление работает только тогда, когда виртуальная машина запущена. При отключенной гостевой ОС все обращения к портам хост-системы будут обрабатываться ей же.
Заполнение полей «Адрес хоста» и «Адрес гостя»
При создании каждого нового правила для проброса портов, желательно заполнять ячейки «Адрес хоста» и «Адрес гостя». Если нет необходимости в конкретизации IP-адресов, то поля можно оставить пустыми.
Чтобы работать с определенными IP, в «Адрес хоста» требуется вписать адрес локальной подсети, полученный от роутера, или прямой IP хост-системы. В «Адрес гостя» необходимо прописать адрес гостевой системы.
В обоих типах операционных систем (хостовая и гостевая) IP можно узнать одинаково.
В Linux:
Терминал > ifconfig > строка inet
После выполненных настроек не забудьте проверить, будут ли работать проброшенные порты.
Как настроить проброс портов в виртуальной машине Virtual Box
В настоящее время пользователи на компьютерах нередко используют виртуальные машины, например, Virtual Box, VMWare и другие. Применение виртуальных машин оправдано, по крайней мере, тем, что в них можно устанавливать другие операционные системы (ОС), а также запускать небезопасные приложения. Иногда возникает необходимость – взаимодействовать с приложениями, работающими в виртуальной машине (точнее, работающими в операционной системе, установленной в виртуальной машине) при помощи вебтехнологий, т.е. на основе HTTP(S)-запросов. Как это сделать?
В гостевой ОС запущен некий сервер, т.е. программа, которая открыла на прослушивание порт (скажем, под номером 3000), принимает запросы от любого клиента и дает ответ. Неважно, какой конкретно это сервер – то ли Apache, то ли NodeJS, то ли вовсе нечто самодельное. Главное, чтобы программа открыла на прослушивание тот или иной порт и была способна что-то делать в ответ.
Мы хотим направлять вебзапрос из хостовой ОС (например, при помощи браузера) программе, которая запущена в гостевой ОС (функционирующей в виртуальной машине).
При настройках по умолчанию сделать это, конечно, не удастся. Как минимум, потому, что сетевой интерфейс Virtual Box функционирует в режиме NAT.
Виртуальная машина с сетевым интерфейсом в режиме NAT подключается к сети, также как реальный компьютер подключается к Internet через маршрутизатор. «Маршрутизатором» в данном случае выступает сетевой модуль VirtualBox, который обрабатывает сетевой трафик виртуальной машины. Недостаток режима NAT, как и в случае локальной сети за маршрутизатором, в том что:
Режим NAT характерен, в частности, тем, что защищает операционную систему от несанкционированного доступа извне. Т.е. при этом невозможно сделать к ней запрос, как к вебсерверу. Однако, если САМА операционная система сделала запрос, то тогда (и только тогда) политика NAT позволяет ей получить ответ. Т.е. в рамках политики NAT операционная система извне может получать только ответы на свои запросы.
Однако, иногда этот аспект мешает работе, и это как раз наш случай: ведь мы хотим направлять запросы в ОС, функционирующей в виртуальной машине, работающую под политикой NAT. Далее рассмотрим по шагам, что нужно сделать, чтобы все-таки получить возможность взаимодействия.
1. Запускаем Virtual Box
Внимание: гостевую ОС, функционирующую в виртуальной машине, пока НЕ ЗАПУСКАЕМ! Иначе невозможно будет сделать нижеидущие настройки.
2. Далее:
Файл -> Настройки -> Сеть -> Виртуальные сети хоста
Там должна быть, по крайней мере, одна сеть вида VirtualBox Host-Only Ethernet Adapter:
3. В хостовой ОС выбираем:
Центр управления сетями -> Сетевые подключения
Т.е. в сетевых подключениях также присутствует VirtualBox Host-Only Network. Скорее всего, он будет отключенным. Тогда следует подключить его. Это делается либо путем двойного клика левой кнопкой мыши, либо путем клика правой кнопкой мыши, затем Подключить .
Тем самым, мы подключим виртуальную сеть, как раз и необходимую для взаимодействия хостовой (Windows 7) и гостевой (Linux Ubuntu) операционных систем.
Отметим, что справа там видны еще VMware Network Adapter VMnet1 и VMware Network Adapter VMnet8. Эти соединения необходимы для сети интернет при работе в другой виртуальной машине — VMware, их мы сегодня касаться не будем, они не нужны для Virtual Box.
4. Нажав на кнопку настроек (для изменения выбранной сети), затем Адаптер, получим:
Видим, что IPv4-адрес назначен как 192.168.56.1 . Запомним его, он нам пригодится, так как потом именно на него будем делать запросы. Но, если есть желание, можно выбрать и какой-то другой адрес (НО: исключительно в рамках маски 255.255.255.0 ).
Перейдя на вкладку DHCP-сервер, убеждаемся, что стоит галочка у «Включить сервер». Если она вдруг отсутствует, ставим ее. DHCP-сервер нужен для автоматического назначения IP-адресов сетевым интерфейсам в виртуальной машине. Если его отключить, скорее всего, придется назначать адреса вручную.
Итак, мы убедились, что IP-адрес задан (или сами задали более подходящий, на наш взгляд, адрес), DHCP-сервер включен. Убедились также, что в сетевых подключениях хостовой ОС имеется соединение VirtualBox Host-Only Network для VirtualBox Host-Only Ethernet Adapter .
5. Далее:
Настроить -> Сеть -> Дополнительно
Видим, что часть настроек невозможна (опции имеют серый цвет):
Что же, это означает, что в предыдущий раз виртуальная машина была не выключена, а сохранена. Выхода два:
Нажимаем кнопку « Сбросить ». Затем вновь:
Настроить -> Сеть -> Дополнительно
Как видно, теперь появилась возможность настроек:
Отметим, что это – несколько другие сетевые настройки Virtual Box, не те, что присутствуют во вкладке Файл -> Настройки -> Сеть -> Виртуальные сети хоста). Зачем в Virtual Box сделаны РАЗНЫЕ сетевые настройки в РАЗНЫХ вкладках – непонятно…
Сетевой адаптер должен быть включен (должна стоять галочка; если ее почему-то нет — поставьте).
В качестве типа подключения по умолчанию должен быть установлен как раз NAT. Можете кликнуть по выбору типа подключения, там возникнет меню с дополнительными пунктами «Сетевой мост», «Внутренняя сеть», и т.д. В нашем случае они нас не интересуют, нужна именно NAT.
Для того, чтобы трафик из хостовой ОС направлялся в гостевую ОС в условиях NAT, необходимо сделать так называемый проброс портов.
6. Нажимаем кнопку « Проброс портов », затем « Добавить новое правило » (зеленоватая кнопка со знаком + ).
Там указываем интересующий нас порт, в данном случае – 3000 . Если мы хотим направлять запросы из хостовой системы с порта 3000, тогда как получать их в виртуальной машине в гостевой системе мы планируем на порт, к примеру, 3001 , стало быть, указываем это число как для порта хоста, так и для порта гостя:
Если хотим также, чтобы запросы отправлялись с хоста в виртуальную машину только при обращении по какому-то конкретному IP-адресу, то необходимо его указать в адресе хоста. Точно также, если в виртуальной машине будет несколько IP-интерфейсов и мы хотим направлять запросы только одному из них, следует указать этот адрес в поле «Адрес гостя». Отметим, что можно создать не одно правило, а несколько. Т.е. можно направлять запросы с хоста на разные адреса, по разным портам и, если заданы соответствующие правила, они попадут в виртуальную машину и будут переадресованы соответствующей программе-серверу.
В нашем случае мы не будем утруждаться с IP-адресами, поступим проще: оставим адресные поля пустыми. Это означает, что запросы, направленные с хоста на порт 3000, НЕЗАВИСИМО от IP-адреса, будут попадать в виртуальную машину на порт 3001 по ВСЕМ IP-адресам (если их там будет несколько).
Далее, нажимаем « ОК », затем еще раз « ОК ». Может появиться окно, запрашивающее Вашего согласия во внесение изменений в настройки брандмауэра Windows. Это и естественно: ведь мы, строго говоря, ослабляем политику NAT для гостевой ОС (функционирующей в виртуальной машине), разрешая входящие запросы для всех IP-адресов 3001 -му порту.
7. Теперь пора запускать операционную систему в виртуальной машине
Что же, запускаем.
8. Проверяем, каков IP-адрес у Ethernet adapter VirtualBox Host-Only Network . Для этого в хостовой ОС (т.е. в Windows 7) запускаем консоль:
Пуск -> Выполнить -> cmd
Там пишем: ipconfig . И вот что получаем:
Интересно, что в Windows команда формулируется как i p config , тогда как несколько аналогичная команда в Linux звучит как i f config . Любопытно, для чего такая несогласованность? Чтобы пользователи linux тренировали свою память, что ли? Ведь вариант из Windows – более логичен, речь-то идет об ip-адресах…
В месте, касающемся Virtual Box, можно видеть, что IP-адрес – тот же самый, что мы видели в настройках: 192.168.56.1 . Стало быть, все хорошо, на это адрес потом можно будет отправлять запросы и они должны попасть в гостевую ОС. Итак, проброс портов из хоста (основной операционной системы) в гостевую — выполнен.
Как подключиться к виртуальной машине VirtualBox по SSH
После установки серверного дистрибутива Linux на виртуальную машину VirtualBox вы можете обнаружить, что подключение по SSH не работает. Это связано с тем, что по умолчанию на VirtualBox используется подключение к интернету с помощью NAT.
При таком способе подключения у вас нет возможности подключаться к виртуальной машине из своей реальной операционной системы. В частности, вы не сможете подключиться по SSH.
В данной статье мы рассмотрим сразу два способа, как можно решить эту проблему. Первый вариант – проброс портов через NAT, а второй – использование сетевого моста. Оба этих способа сохраняют доступ к интернету на виртуальной машине.
Проброс портов для SSH
Для проброса портов вам нужно знать IP адрес, который присваивается виртуальной машине. Для этого запустите виртуальную машину и выполните на ней команду « ifconfig ». В ответ вы получите информацию о сетевых подключениях, в которой будет указан и IP адрес. В нашем случае был получен IP адрес – « 10.0.2.15 ».
Обратите внимание, если в вашей системе нет команды « ifconfig », то ее нужно будет установить отдельно. В случае Debian и Ubuntu Linux это можно сделать с помощью команды « apt-get install net-tools ».
После того как мы узнали IP адрес виртуальную машину нужно выключить и открыть ее настройки в программе VirtualBox.
В настройках виртуальной машины нужно открыть раздел « Сеть », открыть дополнительные настройки и перейти к пробросу портов.
После этого откроется окно для проброса портов. Здесь нужно нажать на кнопку « Добавить » и заполнить следующие данные:
- Имя : SSH.
- Протокол : TCP.
- Адрес хоста : оставляем пустым или указываем 127.0.0.1.
- Порт хоста : любой свободный порт на вашей основной системе, например, 2222.
- Адрес гостя : IP адрес, который был присвоен вашей виртуальной машине. В нашем случае это 10.0.2.15.
- Порт гостя : порт SSH на виртуальной машине, по умолчанию – 22.
После проброса порта закрываем все окна с помощью кнопки « ОК ».
После этого можно подключаться к виртуальной машине по SSH. Для этого можно использовать клиент OpenSSH, который доступен в Windows 10. Поскольку порт « 2222 » на основной системе был проброшен на порт « 22 » на виртуальной машине, то для подключения по SSH нам нужно выполнить следующую команду:
Где « user » — это имя пользователя, а « 2222 » — используемый порт на основной системе.
Аналогичным способом выполняется подключение с помощью PuTTY . В поле « Host Name » указываем « localhost », а в поле « Port » — « 2222 ». Более подробно об OpenSSH и PyTTY в отдельной статье о подключении по SSH.
Как видно по скриншоту вверху, данный способ отлично работает, и мы успешно подключились по SSH к виртуальной машине VirtualBox.
Подключение через сетевой мост
Также есть альтернативный способ подключения к виртуальной машине по SSH для этого нужно изменить тип подключения с « NAT » на « Сетевой мост ». В этом случае виртуальная машина будет подключена к вашей локальной сети и получит IP адрес от вашего роутера из того же диапазона, что и ваша основная система.
Для этого нужно выключить виртуальную машину и зайти в ее свойства в программе VirtualBox. В настройках нужно зайти в раздел « Сеть » и включить тип подключения « Сетевой мост ».
После этого нужно запустить виртуальную машину и выполнить на ней команду « ifconfig » для того, чтобы узнать, какой IP адрес она получила от роутера. В нашем случае был получен IP адрес « 192.168.1.214 ».
После этого к виртуальной машине можно подключаться по SSH. Для этого нужно просто использовать IP адрес, который был ей присвоен роутером. Например, для того чтобы подключиться с помощью клиента OpenSSH нужно выполнить следующую команду:
Где « user » — это имя пользователя, а « 192.168.1.214 » — это ее IP адрес.
Аналогично работает и подключение с помощью PuTTY. Вводим « 192.168.1.214 » и подключаемся по стандартному порту « 22 ».
Как и предыдущий способ, вариант с использованием сетевого моста отлично работает, при этом виртуальная машина не теряет доступа к интернету.