воскресенье, 13 июня 2010 г.

VirtualBox: Linux Host + Apache & Windows Guest

1. На машине с Linux установлен Apache с несколькими виртуальными хостами (например, test и job). Т.е. можно в браузере набрать http://test/ и вам будет показано содержимое соответствующей папки (или запущен скрипт, лежащий в этой папке).
2. Windows установлена в виртуальную машину VirtualBox и нужно из нее просматривать виртуальные хосты Linux-машины, так же набирая в браузере http://test/

Сразу оговорюсь, что для одновременного доступа из Windows в интернет и на Linux-машину, придется позабавиться с настройкой сетевого моста в Linux (тип сетевого интерфейса в VirtualBox нужно выбирать "Bridged interface / Сетевой мост"), но я в такие дебри вдаваться не буду и обойдемся раздельным доступом из Windows: или в интернет (тип интерфейса NAT) или на Linux-машину, благо VirtualBox не так давно научился переключать тип сетевого адаптера "на лету".

А теперь решаем задачку.
  • В VirtualBox нужно выбрать тип сетевого интерфейса "Host-only networking / Виртуальный адаптер хоста". 
  • Заходим в главном окне VirtualBox в "Файл -- Настройки", закладка "Сеть". Видим список виртуальных адаптеров, выбираем наш и жмем на кнопке редактирования. Настраиваем IP адрес хоста по вкусу (по-умолчанию 192.168.56.1), на вкладке "DHCP сервер" активируем его и так же настраиваем по вкусу.
  • Уже в виртуальной машине в Windows открываем файл ПАПКА_WINDOWS\system32\drivers\etc\hosts в любом текстовом редакторе и добавляем туда строчку (для нашего примера, вы ставите свои значения):
    192.168.56.1 test job
  • После этого, возможно, понадобится перезапуск браузера и ваши виртуальные хосты станут доступны из Windows.

Обновление
И наконец, самое веселое: если выставить после этого тип сетевого интерфейса VirtualBox в NAT (для выхода в интернет из виртуальной машины), доступ к виртуальным хостам остаётся! Ведь виртуальный сетевой адаптер в Linux продолжает функционировать и имеет всё тот же IP-адрес. Хотя всё же я предпочту не пускать Windows в интернет, мало ли что :)