Показаны сообщения с ярлыком virtualbox. Показать все сообщения
Показаны сообщения с ярлыком virtualbox. Показать все сообщения

воскресенье, 24 марта 2013 г.

NAT для VirtualBox с возможностью прямого доступа к виртуальным машинам с хоста

Когда создавал новую виртуальную машину в Virtualbox (Ubuntu 12.04 LTS) решил спрятать его за NAT в виртуальной сети, но таким образом чтобы иметь возможность достучаться до него напрямую через SSH.
Для этой цели поднял виртуальный сетевой интерфейс, настроил NAT, настроил раздачу айпи и обработку DNS-запросов создаваемой виртуальной сети:

  1. Устанавливаем пакет uml-utilities с утилитой для создания интерфейса tap0
    $ sudo apt-get install uml-utilities
    В файл «/etc/network/interfaces» добавляем описание нового интерфейса
    auto tap0
    iface tap0 inet static
            address 10.0.55.1
            netmask 255.255.255.0
     pre-up /usr/sbin/tunctl -t tap0
     post-down /usr/sbin/tunctl -d tap0
    Поднимаем новый интерфейс
    $ sudo ifup tap0
  2. Теперь настраиваем NAT. Для этой цели используем идущее с системой средство настройки брандмауэра ufw. Редактируем файл «/etc/ufw/before.rules» и добавляем в самом начале строки
    *nat
    :POSTROUTING ACCEPT [0:0]
    -F POSTROUTING
    -A POSTROUTING -s 10.0.55.0/24 -j MASQUERADE
    COMMIT
    Редактируем файл «/etc/default/ufw» и меняем следующие параметры
    DEFAULT_INPUT_POLICY="ACCEPT"
    DEFAULT_OUTPUT_POLICY="ACCEPT"
    DEFAULT_FORWARD_POLICY="ACCEPT"
    Запускаем ufw
    $ sudo ufw enable
  3. Чтобы каждый раз вручную не прописывать айпишники днс-сервера вновь созданным виртуальным машинам устанавливаем dnsmasq
    $ sudo apt-get install dnsmasq
    В файл конфигурации «/etc/dnsmasq.conf» добавляем следующие строки
    # Слушаем порты только на указанном интерфейсе
    bind-interfaces
    # Слушаем на созданном нами интерфейсе
    interface=tap0
    # Не слушаем на локальном интерфейсе. Там как правило слушает запущенный Netwok Manager процесс dnsmasq
    except-interface=lo
    # Диапазон раздаваемых по DHCP адресов виртуальным машинам.
    dhcp-range=10.0.55.10,10.0.55.200,72h
    # Домен создаваемой сети
    domain=virtual
    Запускаем dnsmasq с новыми настройками
    $ sudo service dnsmasq stop
    $ sudo service dnsmasq start

суббота, 13 декабря 2008 г.

Доступ к гостевой машине в Virtualbox

Сетевое соединение гостевой машины в VirtualBox по умолчанию настраивается через NAT. Одним из плюсом является простая настройка. Но в то же время невозможно соединиться с открытыми портами на гостевой машине, что бывает необходимо в экспериментах с сетевыми сервисами.
Решение заключается в пробросе (туннелировании) порта в виртуальное окружение.

Делается это следующим образом

  1. Порт, который будем пробрасывать «внутрь»
    $ VBoxManage setextradata "GuestMachineName" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort" 2222
  2. С каким портом гостевой машины надо соединяться
    $ VBoxManage setextradata "GuestMachineName" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort" 22
  3. По какому протоколу
    $ VBoxManage setextradata "GuestMachineName" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol" TCP
  4. Выключаем и снова включаем гостевую машину.
  5. Попытаемся соединиться
    $ ssh -p 2222 user@localhost
Можно проверить введённые параметры
$ VBoxManage getextradata "GuestMachineName" enumerate
или удалить уже заданный параметр, задав ему пустое значение
$ VBoxManage setextradata "GuestMachineName" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort"