qemu中-net用户和-net nic之间的区别

job*_*bin 11 virtualization networking qemu

我正在尝试使用自定义IP地址启动虚拟机qemu-system-x86_64.参考qemu-system-x86_64教程,我发现了这个:

-net nic [,vlan = n] [,macaddr = mac] [,model = type] [,name = name] [,addr = addr] [,vectors = v]创建一个新的网络接口卡并将其连接到VLAN n(默认为n = 0).默认情况下,NIC在PC目标上是e1000.-netdev用户,id = id [,选项] [,选项] [,...]

-net user[,option][,option][,...]
    Use the user mode network stack which requires no administrator privilege to run. 
Run Code Online (Sandbox Code Playgroud)

我无法理解这两个选项之间的区别.

  • 什么是用户模式网络堆栈?
  • 为什么我需要它?
  • nicuser参数有什么区别?

6EQ*_*UJ5 14

要先回答您的上一个问题,您需要两个选项:

qemu <other options> -net nic[,options] -net user[,options]
Run Code Online (Sandbox Code Playgroud)
  • nic选项启用来宾中的网卡.
  • 用户选项设置一个虚拟的NAT'ted子网,由qemu启动的DHCP服务器向您的guest虚拟机发出(通常)10.0.2.15并将主机放在10.0.2.2上.

使用此配置,您的guest虚拟机可以访问Internet,也可以连接到主机上的服务10.0.2.2

如果要访问guest虚拟机上的服务,则需要使用hostfwd

qemu <other options> -net user,hostfwd=tcp::60022-:22
Run Code Online (Sandbox Code Playgroud)

这将允许您执行以下操作以从主机访问guest虚拟机上的ssh:

ssh -p60022 user@localhost
Run Code Online (Sandbox Code Playgroud)

-net nic的选项可用于更改正在使用的qemu平台的默认网卡类型.例如,如果您的guest虚拟机运行较旧的操作系统,您可能更喜欢使用-net nic,model=ne2k_pci默认值e1000.

要使用自定义IP地址,您需要遵循构成桥接并连接主机和来宾的教程.-net user如果您只想运行一个guest来在不同的操作系统中完成某些工作,那么该选项会简单得多.