порт хоста пересылает qemu через libvirt в сети в пользовательском режиме

У меня проблемы с редактированием 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 и сетью в пользовательском режиме?

Документация здесь не очень полезна, потому что она не говорит, как переопределить уже существующие определения устройств.

3
задан 3 January 2018 в 14:43
1 ответ

недостающая часть вашей конфигурации описана здесь: 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>
2
ответ дан 3 December 2019 в 06:55

Теги

Похожие вопросы