VirtualBox проброс портов с хостовой системы в режиме NAT.

VirtualBox проброс портов с хостовой системы в режиме NAT.

Сообщение RinatKaa » Сб авг 29, 2009 23:31

Часто бывает необходимо воспользоваться сервисами поднятыми в гостевой системе в режиме работы сетевой подсистемы VirtualBox NAT.

Пример, мне необходимо было получить доступ к гостевой FreeBSD по SSH из под хостовой Ubuntu.

Варианты реализации:
1. Командная строка.
2. Правка конфигурационного файла виртуальной машины.

Примечание:
Виртуальную машину нужно будет перегрузить после внесения изменений.
Руководство вообще рекомендует отключить, внести изменения, и заново запустить.

Важно понимать на какой тип интерфейса необходимо осуществить проброс порта.
В OSE вариантов немного, а точнее два Intel и PCNet.
От этого будет зависеть команда для PCNet путь будет содержать:

Код: Выделить всё
../pcnet/номер_интерфейса/..


для Intel:

Код: Выделить всё
../e1000/номер_интерфейса/..

Нумерация интерфейсов PCNet и Intel ведется отдельно и начинается с 0.

Вот вырезка Руководства для VirtualBox OSE, для ввода с командной строки (сетевой интерфейс PCNet):

Код: Выделить всё
ubuntu-laptop:~$ VBoxManage setextradata "Название_Виртуальной машины" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP
ubuntu-laptop:~$ VBoxManage setextradata "Название_Виртуальной машины" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22
ubuntu-laptop:~$ VBoxManage setextradata "Название_Виртуальной машины" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 2222


Результатом вводимых команд станут появившиеся строки в конфигурационном файле виртуальной машины. (~user-home/.VirtualBox/Machines/Название_Виртуальной_машины/Название_Виртуальной_машины.xml). Здесь, для примера, показана конфигурация для сетевой карты Intel.
Код: Выделить всё
      <ExtraDataItem name="VBoxInternal/Devices/e1000/0/LUN#0/Config/guestssh/Protocol" value="TCP"/>
      <ExtraDataItem name="VBoxInternal/Devices/e1000/0/LUN#0/Config/guestssh/GuestPort" value="22"/>
      <ExtraDataItem name="VBoxInternal/Devices/e1000/0/LUN#0/Config/guestssh/HostPort" value="2222"/>


После запуска виртуальной машины, в хостовой системе можно обнаружить:
Код: Выделить всё
ubuntu-laptop:~$ netstat -nl | grep 2222
tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN     


Отключение виртуальной машины приведет к исчезновению этой записи, что и правильно.

Стоит отметить, что в пути ключа присутствует слово 'guestssh'. Это слово может быть любым и относится именно к этому пробросу порта.
Допустим, что мне еще понадобился проброс порта для telnet (TCP, 23) с TCP-порта 2223 хостовой системы.

Просто добавляем строки в конфигурацию виртуальной машины и перезапускаем ее:
Код: Выделить всё
      <ExtraDataItem name="VBoxInternal/Devices/e1000/0/LUN#0/Config/guesttelnet/Protocol" value="TCP"/>
      <ExtraDataItem name="VBoxInternal/Devices/e1000/0/LUN#0/Config/guesttelnet/GuestPort" value="23"/>
      <ExtraDataItem name="VBoxInternal/Devices/e1000/0/LUN#0/Config/guesttelnet/HostPort" value="2223"/>


В хостовой системе появится еще одна запись для 'прослушиваемых' портов:
Код: Выделить всё
ubuntu-laptop:~$ netstat -nl | grep "222[23]"
tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:2223            0.0.0.0:*               LISTEN     

RinatKaa
 
Сообщения: 12
Зарегистрирован: Пн мар 16, 2009 19:44

Вернуться в VMware

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0