четверг, 1 октября 2009 г.

Настройка сети в VirtualBox

Задача: прозрачный сетевой доступ к Интернету из гостевых ОС а также сетевой доступ к гостевым ОС из хостовой ОС (доступ по ssh, ftp, mysql, etc).
В VmWare это легко решается путем установки bridged network для виртуальной машины, однако в VirtualBox возникают проблемы со второй частью. В документации предлагается использовать mode NAT для виртуальных машин с пробрасыванием входных портов что мне категорически не нравится. Bridged networking в VirtualBox "садится" на реальный сетевой адаптер и перехватывает пакеты, в этом случае ip адрес на гостевой ОС должен быть из подсети локальной сети (насколько я понимаю), что в моем случае проблематично, ибо делалось на рабочем компьютере.

После нескольких экспериментов сделал так:
Хостовая ОС - Win XP, гостевые - Win Xp и Ubuntu Server.
1. В хостовой ОС установил дополнительный сетевой адаптер "Microsoft Loopback adapter".
2. Выставил ему IP типа 192.168.1.1 с маской 255.255.255.0
3. Добавил в route table запись такого вида: "route -p add 192.168.1.0 mask 255.255.255.0 192.168.1.1"
4. Для гостевых ОС выставил 2 сетевых адаптера - первый использует mode NAT и дает прозрачный доступ к инету, второй использует bridged networking через "Microsoft Loopback adapter".
5. В гостевой Win XP просто выставил получение адреса по DHCP для первого адаптера, а для второго - адрес 192.168.1.101 и gateway 192.168.1.1. После этого все заработало (для входных соединений в гостевой Win XP еще нужно настроить firewall)
6. В гостевой Убунте аналогично настроил два адаптера (второй с ip 192.168.1.102), но дополнительно в Убунте пришлось удалить из route table запись: "route del default gw 192.168.1.1" - после этого заработал инет.

Возможно такое решение не самое оптимальное, однако оно работает

Upd Запись "default" из route table в п.6 после перезапуска восстанавливатся, поэтому нужно в /etc/network/interfaces прописать "up route del default gw 192.168.1.1"

7 comments:

  1. АнонимныйNov 1, 2009 07:18 AM
    Спасибо!
    Способ отлично сработал.

    Имею Хостовую ОС - XP prof. Первичная задача - чтобы увидеть с хоста сервер IIS запущенный на госте (2003 server) достигнута.

    Хостовая ОС имеет у меня статический IP. IIS, развернутый на ней, доступен через Интернет. Теперь я хочу, чтобы также доступен был IIS, запущенный на гостевой ОС. Как этого добиться?

    Андрей
    ОтветитьУдалить
  2. 2 Анонимный:
    Я этого не делал, но можно попробовать следующее:
    1. IIS на гостевой Windows поднять на интерфейсе, который работает через NAT
    2. В хостовой ОС в самом VirtualBox "пробросить" какой-нибудь порт типа 8080 на 80 порт гостевой. Процедура описана в хелпе в разделе "Configuring port forwarding with NAT" (правда там используется какие-то неочевидные названия гостевых ОС)
    По идее должно сработать
    ОтветитьУдалить
  3. 2 Анонимный Дополнение:
    на обеих Windows нужно настроить firewall-ы
    и внешний http доступ к гостевой ОС будет понятно работать через http://<static IP>:8080
    ОтветитьУдалить
  4. АнонимныйNov 1, 2009 09:49 AM
    Во! Спасибо за быстрый отклик, буду пробовать!

    Андрей
    ОтветитьУдалить
  5. АнонимныйNov 4, 2009 01:29 AM
    Так, благодаря Вашей помощи, потихоньку пробиваюсь к результату. Спасибо.

    У меня собственно на виртуалке установлен WSS в его стандартном пока виде. Хочу его увидеть из внешнего Интернета. Стучусь на адрес http://77.232.20.31. Браузер дает сообщение об ошибке ("Соединение было сброшено" или "Firefox не может установить соединение с сервером 77.232.20.31."). При попытке выйти на адрес http://77.232.20.31:8080 сервер запрашивает пароль, как полагается, но далее он повторяет фразу что "не может установить". Очевидно, что указание порта ":8080" является принципиальным. Не представляю только, как этот порт использовать всегда - получается, что после ввода пароля запрос на сервер опять идет без указания порта.

    Спасибо за Ваше терпение. Надеюсь не утомил Вас вопросами?

    Андрей
    ОтветитьУдалить
  6. АнонимныйNov 7, 2009 05:04 AM
    Диагноз подтвердился. После ввода пароля открывается страница без указания порта 8080 в адресе. Если теперь порт поставить в явном виде, то в дальнейшем он продолжает сам появляться - можно немного поработать. Это не работает для поиска - там порт опять теряется.
    ОтветитьУдалить
  7. ТатьянаAug 31, 2011 12:16 AM
    А можно поподробнее про настройку в Ubuntu Server?
    Я настраиваю 2 адаптера - NAT и внутренний Realek, который установлен на компьютере. пробовала ставить адаптер виртуального хоста - VirtualBox Adapter, не увидела результата в виде еще одного интерфейса.
    проблема заключается в том, что хостовая и виртуальная машины находятся в разных подсетях. виртуальная машина не пингуется из хостовой.
    ОтветитьУдалить