1

Что я хочу:

Мне нужна гостевая виртуальная машина с Ubuntu (на VirtualBox) для различных тестовых серверов веб-разработки (работающих на разных портах, например, Grunt.js работает на порте 9000).

  • Я хочу протестировать веб-приложения, работающие на этих серверах а) из гостевой системы б) изнутри хоста (под управлением Windows 7, кстати), в) с других устройств в той же сети, подключенных через WiFi (например, мобильные устройства)
    • Я хочу иметь доступ к Интернету из гостя

Сначала я запустил решение, в котором в VirtualBox были настроены адаптеры NAT и Host-only, что отлично подходило для доступа к гостю с хоста и для доступа в Интернет из гостя.

Теперь, когда я хочу, чтобы другие устройства имели доступ к виртуальной машине, это решение больше не работает. Я смог сделать это несколько лет назад с помощью сетевого адаптера, но это, похоже, не работает.

Что я сделал:

Я настроил мостовую сеть как единственный сетевой адаптер в VirtualBox и оставил настройки по умолчанию. Когда я загружаю гостя, символ WiFi в правом верхнем углу продолжает мигать, то есть стрелки не отображаются. Через некоторое время он говорит: «Отключен - вы сейчас в автономном режиме». Это вывод ifconfig:

eth0      Link encap:Ethernet  HWaddr 08:00:27:71:92:9c  
          inet6 addr: fe80::a00:27ff:fe71:929c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:233 errors:0 dropped:0 overruns:0 frame:0
          TX packets:103 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:16083 (16.0 KB)  TX bytes:22280 (22.2 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:32 errors:0 dropped:0 overruns:0 frame:0
          TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2624 (2.6 KB)  TX bytes:2624 (2.6 KB)

Как видите, нет адреса inet4. Поэтому я не могу пропинговать хост изнутри гостя и наоборот.

Я также попробовал это, т.е. я изменил MAC-адрес и запустил

sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules

sudo reboot

Ничего не изменилось.

Что еще я могу сделать, чтобы отладить это? Я подозреваю, что это проблема DHCP. Я могу легко получить IP на своем хосте и других машинах в сети, но не на гостевой.

2 ответа2

4

Это выполнимо с VirtualBox, я недавно получил ту же конфигурацию, хост Windows 7, Arch Linux guest, на ноутбуке с Wi-Fi. Как вы сказали, это когда вы предоставляете гостевой доступ к мостовой сети. Я также выбрал драйвер virtio для виртуальной карты, но сомневаюсь, что это связано с данной темой.

Гость получает IP-адрес от любого маршрутизатора, к которому подключается хост, он работает бесперебойно, и подумать об этом очень впечатляет. Я пытался добиться того же на хосте Xen и не смог. Так что это происходит от какой-то магии драйверов VirtualBox, единственное публичное описание здесь: http://www.virtualbox.org/manual/ch06.html#network_bridged.

Мостовое соединение с беспроводным интерфейсом выполняется иначе, чем мостовое соединение с проводным интерфейсом, поскольку большинство беспроводных адаптеров не поддерживают беспорядочный режим. Весь трафик должен использовать MAC-адрес беспроводного адаптера хоста, и поэтому VirtualBox должен заменить исходный MAC-адрес в заголовке Ethernet исходящего пакета, чтобы убедиться, что ответ будет отправлен на интерфейс хоста. [...] VirtualBox проверяет пакеты ARP и DHCP, чтобы узнать IP-адреса виртуальных машин.

Это расширение драйвера должно быть с открытым исходным кодом, поскольку оно не упомянуто в "Oracle VM VirtualBox Extension Pack", но найти документацию по нему довольно сложно. К сожалению, я не знаю, как ее устранить, но я бы попробовал:

  1. Посмотрите на свойства беспроводной карты хоста, проверьте, видите ли вы там содержимое виртуальной коробки (с тех пор я переустанавливал машину, поэтому не могу точно проверить, какие дополнительные элементы есть)
  2. Удалите и переустановите беспроводную карту. Скорее всего, удаляются дополнительные элементы, поэтому я предполагаю, что деактивация / повторная активация сетевого моста в свойствах виртуальной машины переустановит эту часть.

Также, если маршрутизатор принадлежит вам, вы можете посмотреть его журнал, посмотреть, получит ли он хотя бы какие-то предварительные подключения от гостя.


Изменить: Вы прокомментировали, что он работает с другим маршрутизатором / точкой доступа? В этом случае возможно, что некоторые маршрутизаторы откажутся выделять более одного IP-адреса одному и тому же MAC-адресу. Жаль, что у меня больше нет машины, чтобы посмотреть, одинаковы ли MAC-адреса для каждого IP-адреса в маршрутизаторе, но так и должно быть.

1

Стандарт IEEE 802.11 требует, чтобы AP отклоняли пакеты от неизвестных MAC-адресов; клиент должен сначала выполнить аутентификацию и сопоставление 802.11, прежде чем точка доступа сможет принимать пакеты данных от него. Таким образом, если "мостовой режим" означает, что ваша виртуальная или гостевая ОС пытается использовать второй MAC-адрес через ту же радиокарту, она должна убедиться, что второй MAC-адрес проходит проверку подлинности 802.11 и ассоциируется, в противном случае точка доступа должна игнорировать пакеты от второй MAC-адрес.

Есть ли документация о том, как VirtualBox решает эту проблему? Это должна быть известная проблема, которая либо решена (и должна быть документация о том, как она решалась), либо должна быть хорошо задокументирована, что «мостовой режим через Wi-Fi не поддерживается».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .