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

Gia*_*sio 7 networking qemu

我有一个使用以下选项启动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选项。

我尝试使用以下参数,如手册页中所述

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选项的确切含义是什么?

Gia*_*sio 6

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

-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
Run Code Online (Sandbox Code Playgroud)

在中,-netdev user您指定来宾的单个虚拟以太网的所有host-> guest端口转发。该id选项标识这种虚拟网络接口(ethernet.0在这种情况下)。

-device然后,该参数可以定义要针对该接口进行仿真的硬件(与关联netdev=ethernet.0),以便访客看到该硬件就位并打开转发的端口。