Вопрос или проблема
Я знаю, как настроить проброс портов на основе NAT с помощью графического интерфейса VirtualBox (как в примере ниже).
Как я могу сделать то же самое через командную строку?
Если машина выключена, вы можете использовать команду modifyvm
:
VBoxManage modifyvm "Имя ВМ" --natpf1 "guestssh,tcp,,2222,,22"
Если она включена, используйте controlvm
.
В VirtualBox 6+ --natpf1
не поддерживается. Ответ @Lyndsy Simon содержит лишь одно изменение (--natpf1
просто заменяется на natpf1
). Измененная команда выглядит следующим образом:
VBoxManage controlvm "Имя ВМ" natpf1 "guestssh,tcp,,2222,,22"
Очевидно, я вношу изменения в работающую ВМ, поэтому я использовал controlvm
. Если ВМ выключена, используйте вместо этого modifyvm
.
Теперь, с VirtualBox 7+, командная строка снова изменилась. Она выглядит так:
VBoxManage modifyvm "Имя ВМ" --nat-pf1="guestssh,tcp,,2222,,22"
-
--natpf<номер сетевого интерфейса>
используется с modifyvm для выключенной или выключенной ВМ.VBoxManage modifyvm <uuid|имя_вм> --natpf<1-N> [<имя_правила>],tcp|udp,[<hostip>],<hostport>,[<guestip>],<guestport>
-
natpf<номер сетевого интерфейса>
используется с controlvm для работающей ВМ.VBoxManage controlvm <uuid|имя_вм> natpf<1-N> [<имя_правила>],tcp|udp,[<hostip>],<hostport>,[<guestip>],<guestport>
<1-N>
обозначает номер контроллера сетевого интерфейса, который варьируется от 1 до N. Для VirtualBox, N может быть до 8. — [архивная веб-страница]
Виртуальные сетевые адаптеры
Каждая ВМ VirtualBox может использовать до восьми виртуальных сетевых адаптеров, каждый из которых в свою очередь называется контроллером сетевого интерфейса (NIC). Четыре виртуальных сетевых адаптера могут быть настроены в графическом интерфейсе VirtualBox. Все виртуальные сетевые адаптеры (до 8) могут быть настроены с помощью команды VBoxManage modifyvm. VBoxManage — это инструмент управления командной строкой VirtualBox, который можно использовать для настройки всех параметров VirtualBox, включая параметры сети VirtualBox. Параметры сетевого адаптера VirtualBox можна получить в настройках виртуальной машины (выберите вашу ВМ, нажмите «Настройки» и перейдите в раздел «Сеть» в окне настроек ВМ).
Ответ или решение
Настройка переадресации портов в VirtualBox через командную строку
VirtualBox предоставляет мощный инструмент для работы с виртуальными машинами, и возможность настройки переадресации портов — одна из его наиболее полезных функций. Если вы привыкли настраивать переадресацию через графический интерфейс, это можно сделать и с помощью командной строки. В данной статье мы рассмотрим, как это сделать с учетом различных версий VirtualBox.
Определение переадресации портов
Переадресация портов позволяет вам перенаправлять запросы на определенный порт вашей хост-машины на порт виртуальной машины. Это особенно полезно для работы с сервисами, которые должны быть доступны через сеть, например, SSH.
Общие команды для настройки переадресации портов
Действия для отключенной виртуальной машины
Если ваша виртуальная машина отключена, вы можете использовать команду modifyvm
. Пример команды:
VBoxManage modifyvm "Имя VM" --nat-pf1="имяправила,tcp,,2222,,22"
В этом примере:
Имя VM
— имя вашей виртуальной машины.имяправила
— имя правила переадресации (например,guestssh
).tcp
— протокол, который вы хотите использовать (можно использовать такжеudp
).2222
— порт на вашей хост-машине.22
— порт на гостевой машине.
Действия для работающей виртуальной машины
Если ваша виртуальная машина включена, вам нужно использовать команду controlvm
. Пример команды:
VBoxManage controlvm "Имя VM" natpf1 "имяправила,tcp,,2222,,22"
Изменения в версиях VirtualBox
С каждой новой версией VirtualBox команда переадресации портов подверглась изменениям:
-
Для VirtualBox 6+:**
Здесь просто убрали--
, и команда будет выглядеть так:VBoxManage controlvm "Имя VM" natpf1 "имяправила,tcp,,2222,,22"
-
Для VirtualBox 7+:
Команда изменилась снова, и вам нужно использовать следующий синтаксис для отключенной виртуальной машины:VBoxManage modifyvm "Имя VM" --nat-pf1="имяправила,tcp,,2222,,22"
Общая структура команд
-
Для отключенных виртуальных машин:
VBoxManage modifyvm "имя_или_uuid_машины" --natpf<NIC номер> ["правило"],tcp|udp,[хостip],[хостпорт],[гостевойip],[гостевойпорт]
-
Для работающих виртуальных машин:
VBoxManage controlvm "имя_или_uuid_машины" natpf<NIC номер> ["правило"],tcp|udp,[хостip],[хостпорт],[гостевойip],[гостевойпорт]
Особое внимание обратите на значение <NIC номер>
, которое должно быть в диапазоне от 1 до N (где N может быть до 8 для VirtualBox).
Заключение
Переадресация портов в VirtualBox через командную строку — это удобный способ управления сетевыми настройками вашей виртуальной машины. Используя команды modifyvm
для отключенных и controlvm
для работающих машин, вы можете легко настроить доступ к необходимым сервисам. Настоятельно рекомендуется использовать актуальные версии VirtualBox для получения всех новых возможностей и улучшений производительности.
Полезные ссылки
Следуя этим рекомендациям, вы сможете эффективно настроить переадресацию портов в VirtualBox, что облегчит доступ к вашим виртуальным машинам и их сервисам.