在使用qemu时,客户机(虚拟机)与主机之间通讯可通过hostfwd参数指定转发端口来实现,
-netdev user,id=n0,hostfwd=[tcp|udp]:[主机ip]:主机端口-[客户机ip]:客户机端口
这种方法可以在主机的qemu进程监听一个端口,主机可通过这个端口与客户机对应的端口通讯。
这时问题就来了,如果我要在客户机开启一系列监听端口,就必须要写一大串hostfwd参数才能实现功能,即使是一段连续的端口号也一样。
比如要在客户机对外开放ftp服务,ftp主动模式的命令端口是21,数据端口是20,就必须写两个hostfwd参数并用逗号隔开:
-netdev user,id=n0,hostfwd=::1020-:20,hostfwd=::1021-:21
若要使用ftp的被动模式,ftp设定了多少个被动数据端口,就需要写多少个hostfwd参数!虽然可以用seq+awk一类的命令快速生成,但是超长的命令行看上去也的确不太爽,希望qemu的开发者能考虑到这个问题在新版中进行完善。