Как разрешить гостевой ОС доступ в Интернет в QEMU?

Как разрешить гостевой ОС доступ в Интернет в QEMU?

Я создал образ Windows XP и загружаю его с помощью qemu. При использовании "сетевого режима пользователя" через -net user, моя гостевая ОС (windows xp) получает назначенный IP 10.0.2.15 и я могу пинговать 10.0.2.2, так что драйверы Windows установлены правильно.

К сожалению, я не могу получить доступ ни к чему другому. Я прочитал руководства и обнаружил, что «сеть в пользовательском режиме» не перенаправляет соединения в интернет, и мне приходится использовать либо устройство TAP, либо устройство Bridge.

Я не знаком с этими устройствами, а инструкции очень запутанные и сложные.

В одном из руководств мне предложили использовать qemu-bridge-helper. Я настроил /etc/qemu/bridge.conf, чтобы разрешить устройство моста br0, и создал устройство br0 через brctl addbr br0.

Я следовал инструкциям и загрузил свой WinXP следующим образом:

qemu-system-x86_64 --enable-kvm -m 2048 \
  -drive file=winxp.img,if=virtio \
  -net nic,model=virtio \
  -net bridge,br=br0

Образ загружается нормально, но я не получаю IP-адрес. Причина в том, что Windows настроен на использование DHCP, но "br0" не предоставляет DHCP-адрес, так как это просто интерфейс моста (каким-то образом связанный с tap0, но я не уверен, что это значит).

У меня вопрос - как мне настроить "br0" для выдачи адресов winxp через DHCP? Нужно ли мне запускать сервер dhcp на интерфейсе tap0? Как связаны br0, tap0 и eth0? (eth0 - мой статический IP-интерфейс, единственный интернет-интерфейс.)

Мой второй вопрос: есть ли более простой способ настроить все это так, чтобы разрешить гостевой ОС простой доступ в Интернет?

решение1

Мой второй вопрос: есть ли более простой способ настроить все это так, чтобы разрешить гостевой ОС простой доступ в Интернет?

Вам не нужно (или, по крайней мере, не нужно) вручную настраивать что-либо для простого доступа в Интернет; QEMU автоматически справляется с этим. У него есть некоторые ограничения, такие как отсутствие поддержки протокола ICMP (используемого ping), отсутствие видимости для внешней сети и невозможность общаться с другими виртуальными машинами, работающими таким же образом, но он хорошо подходит для простого использования. СмотритеАрка ВикиЧтобы получить больше информации.

решение2

После вашей команды brctl addbr br0вам необходимо подключить новый мост к реальному сетевому интерфейсу, например eth0, который подключен к Интернету. Используйте для этого следующую команду brctl addif br0 eth0.

Связанный контент