У меня проблемы с редактированием host-xml в libvirt, чтобы qemu пересылал TCP-соединения гостю. Этот вопрос связан с сообщением в блоге , в котором рекомендуется добавить -redir
в командную строку Qemu. Но это недавно перестало работать.
ошибка: внутренняя ошибка: qemu неожиданно закрыл монитор: qemu-system-x86_64: -redir tcp: 5564 :: 3389: Параметр -redir устарело. Пожалуйста, используйте вместо этого '-netdev user, hostfwd = ...'.
Это, однако, не работает из коробки, т.е. я получаю открытый порт на хосте, но он не проходит через клиент.
Я отредактировал свой XML следующим образом:
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
.
.
.
</devices>
<qemu:commandline>
<qemu:arg value='-net'/>
<qemu:arg value='user,hostfwd=tcp::22222-:22,hostfwd=tcp::8000-:8000'/>
</qemu:commandline>
</domain>
Мой тест заключался в том, чтобы затем запустить nc -l -p 8000
на клиенте и telnet localhost 8000
на хосте. Telnet указывает на открытое TCP-соединение, но клиент ничего не получает.
Я думаю, это потому, что libvirt уже включил пользователя -net, ...
option, и почему-то мой недавно определенный параметр не обрабатывается должным образом. ps aux | grep qemu
показывает следующее:
qemu-system-x86_64 -enable-kvm -name guest = mygestsname, debug-themes = on -S -object secret, id = masterKey0, format = raw, file = ~ /. id = hostnet0 . Я попытался использовать то же имя в своей пользовательской командной строке, но это не удалось:
ошибка: внутренняя ошибка: процесс завершился при подключении к монитору: qemu-system-x86_64: -chardev pty, id = charserial0: устройство char перенаправлено на / dev / pts / 23 (метка charserial0)
qemu-system-x86_64: -device virtio-net-pci, netdev = hostnet0, id = net0, mac = 52: 54: 00: aa: aa: 0a, bus = pci.0, addr = 0x3 : Свойство virtio-net-device.netdev не может принимать значение hostnet0, оно используется
Для сетевых настроек, не относящихся к пользовательскому режиму, уже существует несколько вопросов . Но мне нужно работать с сетью в пользовательском режиме.
Как мне правильно перенаправить порты, используя libvirt с qemu и сетью в пользовательском режиме?
Документация здесь не очень полезна, потому что она не говорит, как переопределить уже существующие определения устройств.
недостающая часть вашей конфигурации описана здесь: https://www.linux-kvm.org/page/Networking . Вам нужно добавить еще один netdev с новым адресом, например:
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
.
.
.
</devices>
<qemu:commandline>
<qemu:arg value='-netdev'/>
<qemu:arg value='user,id=mynet.0,net=10.0.10.0/24,hostfwd=tcp::22222-:22,hostfwd=tcp::8000-:8000'/>
<qemu:arg value='-device'/>
<qemu:arg value='e1000,netdev=mynet.0'/>
</qemu:commandline>
</domain>