[QEMU]网络仿真

QEMU可以模拟多个网卡(例如PC目标上的PCI或ISA卡),并可以将它们连接到主机上的网络后端或模拟集线器。各种主机网络后端既可用于将来宾的 NIC 连接到真实网络(例如,通过使用 TAP 设备或非特权用户模式网络堆栈),也可以用于在另一个 QEMU 进程中运行的其他来宾实例(例如,通过使用套接字主机网络后端)。
使用 TAP 网络接口
这是将QEMU连接到真实网络的标准方法。QEMU 在主机上添加一个虚拟网络设备(称为 ),然后可以将其配置为真正的以太网卡。tapN
Linux 主机
例如,您可以下载存档并将脚本复制到中并进行正确配置,以便以 root 身份执行 中包含的命令。您必须验证主机内核是否支持 TAP 网络接口:设备必须存在。linux-test-xxx.tar.gz
qemu-ifup
/etc
sudo
ifconfig
qemu-ifup
/dev/net/tun
请参阅调用以包含使用 TAP 网络接口的命令行示例。
视窗主机
有一个用于Windows 2000 / XP系统的虚拟以太网驱动程序,称为TAP-Win32。但它不包含在Windows的标准QEMU中,因此您需要单独获取它。它是OpenVPN软件包的一部分,因此请从以下位置下载OpenVPN:https://openvpn.net/。
使用用户模式网络堆栈
通过使用该选项(如果未指定任何选项,则为默认配置),QEMU 使用完全用户模式的网络堆栈(无需 root 权限即可使用虚拟网络)。虚拟网络配置如下:-net user
-net
guest (10.0.2.15) <------> Firewall/DHCP server <-----> Internet | (10.0.2.2) | ----> DNS server (10.0.2.3) | ----> SMB server (10.0.2.4)
QEMU VM 的行为就像在防火墙后面一样,防火墙会阻止所有传入连接。您可以使用 DHCP 客户端在 QEMU VM 中自动配置网络。DHCP 服务器从 10.0.2.15 开始为主机分配地址。
为了检查用户模式网络是否正常工作,您可以 ping 通地址 10.0.2.2,并验证您是否从 QEMU 虚拟 DHCP 服务器获得了 10.0.2.x 范围内的地址。
请注意,ICMP 流量通常不适用于用户模式网络。即。但是,ICMP 回显到本地路由器 (10.0.2.2) 应该可以正常工作。如果您在Linux上使用QEMU>= 3.0,它可以使用非特权ICMP ping套接字来允许Internet。主机管理员必须设置ping_group_range才能授予对这些套接字的访问权限。要允许 PING 的 GID 100(通常是用户组),请执行以下操作:ping
ping
echo 100 100 > /proc/sys/net/ipv4/ping_group_range
使用内置的 TFTP 服务器时,路由器也是 TFTP 服务器。
使用该选项时,TCP 或 UDP 连接可以从主机重定向到来宾。例如,它允许重定向X11,telnet或SSH连接。'-netdev user,hostfwd=...'
枢纽
QEMU可以模拟多个集线器。可以将集线器视为多个网络设备之间的虚拟连接。例如,这些设备可以是 QEMU 虚拟以太网卡或虚拟主机以太网设备(TAP 设备)。可以使用 或 选项将来宾 NIC 或主机网络后端连接到此类中心。旧版选项还将给定设备连接到 ID 为 0 的模拟中心(即默认中心),除非您在此处指定 netdev。-netdev hubport
-nic hubport
-net
-net nic,netdev=xxx
在 QEMU 实例之间连接模拟网络
使用 (or 或 ) 选项,可以创建跨多个 QEMU 实例的模拟网络。请参阅调
https://www.qemu.org/docs/master/system/invocation.html#sec-005finvocation
用中的选项说明,了解基本示例。-netdev socket
-nic socket
-net socket
-netdev socket