Вопрос или проблема
Когда я пробую интерфейс TAP в QEMU, виртуальная машина зависает, не знаю почему. Но с -netdev user
она не зависает, но не может подключиться к виртуальной машине вовсе.
Я тестировал, используя ESXi
и Centos 7
, обе виртуальные машины зависают при использовании интерфейса Tap
. Виртуальная машина Centos 7
запускается нормально, но при перезагрузке eth0
виртуальная машина зависает и не восстанавливается. ESXi
зависает во время загрузки при использовании интерфейса Tap
.
Я использовал openVPN для создания интерфейса Tap на Windows 10, переименовал интерфейс в Ethernet7 и использовал следующую команду при запуске виртуальной машины Qemu
.
-netdev tap,ifname=Ethernet7,script=no,downscript=no,id=hostnet0 -device e1000,netdev=hostnet0,id=net0,mac=DE:AD:BE:EF:16:B6
Я скачал последнюю версию Qemu для Windows с qemu.org
Обновление: Интерфейс TAP не работал из-за того, что интерфейс Tap в Windows 10 использовал старый драйвер 2014 года. Я создал новый интерфейс (с помощью hdwwiz.exe
) и у меня была возможность выбрать драйвер 2019 года вместо старого. Интерфейс TAP работает нормально и не зависает виртуальную машину.
User mode
сетевое подключение также работает нормально, если вам не нужен интерфейс TAP.
qemu-system-x86_64 -boot d -hda centos.img -m 2048 -smp cpus=2,cores=2 -netdev user,id=n1,hostfwd=tcp::2222-:22 -device e1000,netdev=n1
В Centos
мне пришлось запустить команду dhclient eth0
, так как он не получает автоматически назначенный DHCP IP. После выполнения команды виртуальная машина получает IP-адрес 10.0.2.15
, и затем я могу подключиться к ней по SSH, используя ssh -p 2222 root@localhost
.
Для ESXi мне пришлось включить SSHD в настройках ESXi и использовать localhost для подключения. ICMP не работает для обоих в User mode
сетевом подключении.
qemu-system-x86_64 -boot d -hda esxi.img -m 4096 -cpu Westmere -machine q35 -smp cpus=2,cores=2 -accel tcg -netdev user,id=n1,hostfwd=tcp::2223-:22,hostfwd=tcp::9443-:443,hostfwd=tcp::8085-:80 -device e1000,netdev=n1
Обновление: Интерфейс TAP не работал из-за того, что интерфейс Tap в Windows 10 использовал старый драйвер 2014 года. Я создал новый интерфейс (с помощью hdwwiz.exe) и у меня была возможность выбрать драйвер 2019 года вместо старого. Интерфейс TAP работает нормально и не зависает виртуальную машину.
Как вы получили возможность выбрать драйвер 2019 года? У меня написано, что это уже самая новая версия.
Ответ или решение
Тема: Заморозка виртуальной машины QEMU при использовании TAP интерфейса на Windows
При работе с виртуальными машинами в QEMU на платформе Windows пользователи могут сталкиваться с различными проблемами, среди которых одна из наиболее распространенных – это зависание виртуальной машины (ВМ) при использовании TAP интерфейса. Давайте разберем эту проблему более подробно, включая шаги для диагностики и возможные решения.
Проблема
Вы описали, что при использовании TAP интерфейса ваша виртуальная машина на CentOS 7 и ESXi зависает. При этом использование опции -netdev user
работает, однако в этом режиме нельзя подключиться к виртуальной машине. Это приводит к необходимости разобраться, почему TAP интерфейс вызывает зависания и как этого избежать.
Причины
-
Драйвер TAP интерфейса: Ваша первоначальная проблема была связана с тем, что TAP интерфейс использовал устаревший драйвер, выпущенный в 2014 году. Такие старые драйверы могут содержать ошибки или несовместимости, которые приводят к зависанию системы при попытке инициализировать или перезапустить сетевой интерфейс.
-
Конфликты между сетевыми адаптерами: В Windows может возникнуть конфликт между несколькими сетевыми адаптерами, особенно если они использованы одновременно.
-
Некорректные параметры запуска QEMU: Неправильные настройки при запуске QEMU могут также приводить к проблемам с сетью и, как следствие, к зависаниям.
Решения
1. Обновление драйвера TAP интерфейса
Первый и, возможно, самый критический шаг к решению проблемы – это обновление драйвера TAP интерфейса.
- Шаги для обновления драйвера:
- Откройте меню «Запуск» и введите
hdwwiz.exe
, чтобы запустить «Мастера добавления оборудования». - Выберите «Установить аппаратное обеспечение вручную».
- Найдите ваш TAP интерфейс и выберите его.
- Выберите опцию установки драйвера и найдите более новую версию, которую можно использовать (например, драйверы, выпущенные в 2019 году).
- Откройте меню «Запуск» и введите
Если Windows сообщает, что драйвер уже является последним, возможно, стоит поискать актуальные драйвера вручную на сайте разработчика или в специализированных источниках.
2. Настройка параметров QEMU
Убедитесь, что при запуске QEMU вы используете правильные параметры. Ваши текущие параметры запуска выглядят корректно, но вы можете попробовать уменьшить количество конфигурационных опций для начала.
Пример минимального запуска:
qemu-system-x86_64 -m 2048 -netdev tap,id=hostnet0,ifname=Ethernet7,script=no,downscript=no -device e1000,netdev=hostnet0
3. Проверка сетевых конфликтов
Проанализируйте все сетевые адаптеры, установленные на вашем Windows, и убедитесь, что нет конфликтов между ними. Отключите все ненужные адаптеры и проверьте, продолжает ли зависать ВМ.
Заключение
Множество факторов могут приводить к зависанию виртуальной машины при использовании TAP интерфейса в QEMU на Windows. Основное решение заключается в обновлении драйвера TAP интерфейса до актуальной версии, что уже сработало в вашем случае. Соблюдение корректной настройки параметров QEMU и внимания к конфликтам сетевых адаптеров также может помочь предотвратить подобные проблемы в будущем. Если у вас возникнут дополнительные вопросы по настройке или использованию QEMU, не стесняйтесь обращаться за помощью.
Если вам нужна дополнительная информация или уточнения по какому-либо из пунктов, пожалуйста, дайте знать!