Я создал образ 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
.