четверг, 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"

8 комментариев:

  1. Спасибо!
    Способ отлично сработал.

    Имею Хостовую ОС - 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. Во! Спасибо за быстрый отклик, буду пробовать!

    Андрей

    ОтветитьУдалить
  5. Так, благодаря Вашей помощи, потихоньку пробиваюсь к результату. Спасибо.

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

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

    Андрей

    ОтветитьУдалить
  6. Диагноз подтвердился. После ввода пароля открывается страница без указания порта 8080 в адресе. Если теперь порт поставить в явном виде, то в дальнейшем он продолжает сам появляться - можно немного поработать. Это не работает для поиска - там порт опять теряется.

    ОтветитьУдалить
  7. А можно поподробнее про настройку в Ubuntu Server?
    Я настраиваю 2 адаптера - NAT и внутренний Realek, который установлен на компьютере. пробовала ставить адаптер виртуального хоста - VirtualBox Adapter, не увидела результата в виде еще одного интерфейса.
    проблема заключается в том, что хостовая и виртуальная машины находятся в разных подсетях. виртуальная машина не пингуется из хостовой.

    ОтветитьУдалить