Проброс портов хоста (Ubuntu) в гостя (Windows) в VirtualBox

// Март 4th, 2011 // Веб-разработка, Виртуализация

Как и многие веб-разработчики, мы вынуждены тестировать наш веб-сервис в разнообразных броузерах и средах. И всё бы было хорошо, но, нам также приходится тестировать его в Internet Explorer 6, что доставляет нам много принеприятнейших минут. Не буду говорить всё, что я думаю по поводу этого броузера, а то к сути статьи я перейду не скоро. Итак Internet Explorer 6 живет в своей виртуальной машине (Windows XP), а веб-сервис в хосте (Ubuntu), и стоит задача по проброске порта веб-сервера(Nginx) из хоста в виртуалку.

Начал гугление этого вопроса я конечно же с хабра. Но http://vboxsvr у меня почему-то не заработал. Тогда я нашел другой вариант.

Проброс портов

Итак, что нужно сделать:

1. Заставляем Nginx/Apache слушать все интерфейсы:

server {
...
listen 0.0.0.0:80;
...
}

Перезагружаем nginx:

sudo service nginx restart

2. Необходимо настроить сеть гостя. Выбираем «Виртуальный адаптер хоста». Должно получиться что-то типа этого:

3. Смотрим, какой IP адрес у нас получает гостевой компьютер в хостовой системе.

host> ifconfig

Прописываем название хоста в файл C:\windows\system32\srivers\etc\hosts в госте.

192.168.56.1     site.ru

ТеперьВсё, теперь хостовый сервис должен открыться в гостевом броузере!

Доступ в интернет из гостя

Но есть небольшая проблема. При такой настройке в гостевой машине не работает остальной интернет. Для того, чтобы он заработал, надо добавить в настройки гостя в VirtualBox второй сетевой адаптер типа NAT.

После этого в гостевой машине появится новое сетевое подключение, и Интернет заработает.

Теперь в госте работает и сервис хоста и Интернет!

Share

Спасибо!


Если вам помогла статья, или вы хотите поддержать мои исследования и блог - вот лучший способ сделать это:


7 Responses to “Проброс портов хоста (Ubuntu) в гостя (Windows) в VirtualBox”

  1. Всеволод:

    А можно подробней о 1) пункте «Заставляем Nginx/Apache слушать все интерфейсы»… Какой файл надо редактировать?

    И еще вопросик: У меня в ВиртуалБоксе не активны почему-то Сетевые адаптеры.. :( Интернет в виртуалке есть, но 2-й адаптер добавить не могу

    • google.com Андрей Токарчук:

      Конечно.
      1) Это достигается директивой «Listen 0.0.0.0:80» в конфиге Apache. (httpd.conf или что скорее всего файл с vhost вашего сайта).
      2) Неактивны закладки «Адаптер 2…4» в настрофках виртуальнйо машины?

      • Всеволод:

        С адаптерами разобрался. Они были не активны из-за того, что система (виртуалка) была запущена. Настраивать надо на выключенной системе..
        А вот прописать «Listen 0.0.0.0:80″ в файле httpd.conf не помогает, так как Апач не стартует — пишет ошибка… Может как-то по другому прописать надо?..

        • google.com Андрей Токарчук:

          Конечно на выключенной :-) Как именно апач ругается, может у вас 80 порт кем-то другим занят?

          • Всеволод:

            «(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
            no listening sockets available, shutting down» — похоже, что да — занят порт! Как проверить, чем занят?

  2. Всеволод:

    У меня походу все виртуальные хосты (сайты) на 80-м порте.. Но мне не получился их менять, так как я работаю на фирме (мы пользуемся Сабвершином), и у нас у всех должны быть одинаковые конфиги… Может есть альтернатива какая?

    • google.com Андрей Токарчук:

      1. Добавить свой конфиг в svn:igonre чтобы он не закоммитился
      2. А в чём проблема-то, один веб-сервер может обслуживать несколько сайтов. Если второй стартуете — присвойте ему другой порт, и вызывайте по нему.
      Listen 0.0.0.0:81 например.

Комментировать