Я иногда использую python -m SimpleHTTPServer
один лайнер для обслуживания файлов с моей виртуальной машины для загрузки на мой хост. Сегодня я попытался использовать его внутри виртуального бокса vm, который находится в настройках сети NAT - я набрал этот python one liner в консоли, затем я проверил, какой ip мой vm имеет в knetworkmanager (я использую debian с kde на моем гостевом компьютере), затем на хосте i пытался подключиться к этому ip через порт 8000, но не могу подключиться ...
Мои гости часто приостанавливаются, сохраняются и т. Д. Может быть, IP должен измениться, но что-то пошло не так, потому что гость был сохранен, а затем восстановлен? Есть идеи, что с этим делать?
Я использую гостевой debian linux и хост debian linux.
Чтобы получить перенаправление порта, попробуйте следующее
VBoxManage setextradata "NAME_OF_VM" "VBoxInternal/Devices/e1000/0/LUN#0/Config/pythonhttp/HostPort" 8080
VBoxManage setextradata "NAME_OF_VM" "VBoxInternal/Devices/e1000/0/LUN#0/Config/pythonhttp/GuestPort" 8000
VBoxManage setextradata "NAME_OF_VM" "VBoxInternal/Devices/e1000/0/LUN#0/Config/pythonhttp/Protocol" TCP
Эта конфигурация работает для виртуальных сетевых карт Intel. Для PCnet попробуйте pcnet
вместо того e1000
. И я предполагаю, что порт на виртуальной машине - 8000. Не забудьте изменить NAME_OF_VM
на имя вашей виртуальной машины!
После этого вы можете получить доступ к веб-серверу в хост-системе через http://localhost:8080/
который будет перенаправлен на виртуальную машину с портом 8000.
Вы можете проверить конфигурацию с помощью VBoxManage getextradata "NAME_OF_VM" enumerate
. Чтобы удалить конфигурацию, введите команду без значений.
VBoxManage setextradata "NAME_OF_VM" "VBoxInternal/Devices/e1000/0/LUN#0/Config/pythonhttp/HostPort"
VBoxManage setextradata "NAME_OF_VM" "VBoxInternal/Devices/e1000/0/LUN#0/Config/pythonhttp/GuestPort"
VBoxManage setextradata "NAME_OF_VM" "VBoxInternal/Devices/e1000/0/LUN#0/Config/pythonhttp/Protocol"
Если ваши виртуальные машины подключены к NAT, у них есть виртуальный IP-адрес в частной сети (диапазон IP-адресов RFC1918), поэтому они не маршрутизируемы и недоступны извне.
Чтобы сделать машину с NAT доступной извне, вы должны реализовать ПЕРЕНАПРАВЛЕНИЕ ПОРТА на виртуальном шлюзе, сопоставив запрос на данном порте, который будет перенаправлен на виртуальный IP-адрес на данном или другом порту.
Это не проблема, связанная с виртуализацией, так работает NAT. Таким образом, применимо любое руководство по теме, которое вы найдете в Интернете.