вівторок, 4 грудня 2007 р.

VirtualBox + сеть (через NAT) + apache httpd


Стоит простая задача - потратив минимум усилий, получить к виртуальной тачке доступ через сеть. В данном случае рассматривается доступ к apache, который крутится на виртуальной машине.

Рецепт претендует на минимализм, т.е. более-менее сложные вещи (создание туннеля, например).
Этот материал родился он после прочтения на мой взгляд, довольно бедной практикой оригинальной документации. Особенно после того, что многое пришлось просто додумывать.



Перед тем как кидать в меня какашками, прошу прочитать Предупреждения для обнадёжившихся.


Скажу вам, что настройка сети в VirtualBox довольно не "unix-like", в отличии от того-же qemu, но в конфигурации "по умолчанию" более безопасна, чем qemu с точки зрения сетевой безопасности (особенно - когда в qemu винда ставится, голая, дырявая, без антивируса, вобщем - "кушать подано, червячки!" 8-) ).

Похоже, что для описаного мной метода доступа не нужно собирать ядро с поддержкой карточки от AMD. Это хорошо :)



Вот примерное описание того, как я пробросил порт к http серверу apache, который работал на гостевой машине

Запустите VirtualBox, выбрав Вашу виртуальную машину, зайдите в окно "Свойства", далее -выберите в разделе конфигурации сети пункт "присоединён к NAT". Затем не забудьте сохранить эти настройки.



Выполните в консоли следующие команды:


user@host $ VBoxManage setextradata "gentoo_generator" \
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/Protocol" TCP

user@host $ VBoxManage setextradata "gentoo_generator" \
quot;VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/GuestPort" 80

user@host $ VBoxManage setextradata "gentoo_generator" \
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/HostPort" 6969



Где:

gentoo_generator

это название моей виртуальной машины.

VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/Protocol

строка с фигнёй всякой, в которой для нас важа только та часть, в которой написано "guesthttp", её Вы можете заменить чем-угодно, на свой вкус (в пределах разумного). Хотя - лучше использовать осмысленные вразумительные названия. Т.е - для ftp - guestftp, ssh - guestssh, и т.д.




На что система должна ответить в таком духе:




gor@grog ~ $ VBoxManage setextradata "gentoo_generator" \
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/Protocol" TCP


VirtualBox Command Line Management Interface Version 1.5.2_OSE
(C) 2005-2007 innotek GmbH
All rights reserved.


gor@grog ~ $ VBoxManage setextradata "gentoo_generator" \
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/GuestPort" 80


VirtualBox Command Line Management Interface Version 1.5.2_OSE
(C) 2005-2007 innotek GmbH
All rights reserved.


gor@grog ~ $ VBoxManage setextradata "gentoo_generator" \
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/HostPort" 6969


VirtualBox Command Line Management Interface Version 1.5.2_OSE
(C) 2005-2007 innotek GmbH
All rights reserved.


Т.е. - безполезный пиар-флуд и больше ничего интересного. Главное в этом логе - это отсутствие ошибок.

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

Далее просто запускаете Ваш любимый браузер, в котором указываете URL, ведущий к апачу на нашем виртуальном компе, в данном случае - http://localhost:6969




gor@grog ~ $ lynx localhost:6969


или


gor@grog ~ $ firefox http://localhost:6969


После этого вы должны увидеть начальную страницу, которую выдаёт ваш http-server. Если всё так, тогда радуемся, если нет так - тогда проверяем, что нигде не ошиблись в своих действиях. Если-же где-то ошибся я, или ещё чё-нить в таком роде, то обсуждаем данную проблему со мной в комментариях к данной статье.

Как у нас говорят: Гуртом і батька легше бити.





Предупреждения для обнадёжившихся:


  • Этот метод не даст доступа к вашей машине ни с какого другого компьютера, кроме Вашего.

  • Доступ к проброшенному порту имеет только тот пользователь, который загрузил виртуальную машину и выполнил вышеуказанные команды (к этому заключению дойдено методом Научного Тыка).





Читать далее