Пример, мне необходимо было получить доступ к гостевой 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
