如何替换 qemu-system -redir 命令参数?

How to replace `qemu-system -redir` command argument?

我有一个使用这些选项启动 qemu 的脚本:

qemu-system-x86_64 [...] -net nic,model=rtl8139 -net user,hostfwd=tcp::5555-:1522 -net dump,file=/tmp/vm0.pcap -redir tcp:9999::9 -redir tcp:17010::17010 -redir tcp:17013::17013

我想更新脚本以使用现代 qemu 选项。

我已尝试使用以下参数,如 manual page

中所述

qemu-system-x86_64 [...] -net nic,model=rtl8139 -net dump,file=/tmp/vm0.pcap -net user,id=tcp1522,hostfwd=tcp::5555-:1522 -netdev user,id=tcp9,hostfwd=tcp::9999-:9 -netdev user,id=tcp17010,hostfwd=tcp::17010-:17010 -netdev user,id=tcp17013,hostfwd=tcp::17013-:17013

但是来宾无法再访问网络,主机无法通过转发端口访问它。

已弃用的 -redir 选项的确切等价物是什么?

在 @PeterMaydell 的评论和更多阅读之后,我了解了选项 -device-netdev 在 qemu 中的关系。

我的脚本中使用的旧 -redir 选项的正确翻译是:

-netdev user,id=ethernet.0,hostfwd=tcp::5555-:1522,hostfwd=tcp::9999-:9,hostfwd=tcp::17010-:17010,hostfwd=tcp::17013-:17013
-device rtl8139,netdev=ethernet.0

-netdev user 中,您为来宾的单个虚拟以太网指定所有主机->来宾端口转发。 id 选项标识此类虚拟网络接口(在本例中为 ethernet.0)。

然后 -device 参数可以定义要为该接口模拟的硬件(与 netdev=ethernet.0 相关),以便来宾看到该硬件并打开转发端口。