QEMU网络配置简介

本文简单介绍下qemu虚拟机网络的几种配置方式。

通过QEMU的支持,常见的可以实现以下4种网络形式:

  1. 基于网桥(bridge)的虚拟网络。
  2. 基于NAT(Network Addresss Translation)的虚拟网络。
  3. QEMU内置的用户模式网络(user mode networking)。
  4. 直接分配网络设备从而直接接入物理网络(包括VT-d和SR-IOV)。

使用直接的网桥模式

在QEMU/KVM的网络使用中,网桥(bridge)模式可以让客户机和宿主机共享一个物理网络设备连接网络,客户机有自己的独立IP地址,可以直接连接与宿主机一模一样的网络,客户机可以访问外部网络,外部网络也可以直接访问客户机(就像访问普通物理主机一样)。即使宿主机只有一个网卡设备,使用bridge模式也可让多个客户机与宿主机共享网络设备。bridge模式使用非常方便,应用也非常广泛。

用网桥实现NAT模式

NAT(Network Addresss Translation,网络地址转换)属于广域网接入技术的一种,它将内网地址转化为外网的合法IP地址,它被广泛应用于各种类型的Internet接入方式和各种类型的网络之中。NAT将来自内网IP数据包的包头中的源IP地址转换为一个外网的IP地址。众所周知,IPv4的地址资源已几近枯竭,而NAT使内网的多个主机可以共用一个IP地址接入网络,这样有助于节约IP地址资源,这也是NAT最主要的作用。另外,通过NAT访问外部网络的内部主机,其内部IP对外是不可见的,这就隐藏了NAT内部网络拓扑结构和IP信息,也就能够避免内部主机受到外部网络的攻击。客观事物总是有正反两面性的,没有任何技术是十全十美的。NAT技术隐藏了内部主机细节,从而提高了安全性。但是如果NAT内的主机作为Web或数据库服务器需要接受来自外部网络的主动连接,这时NAT就表现出了局限性。不过,可以在拥有外网IP的主机上使用iptables等工具实现端口映射,从而让外网将这个外网IP的一个端口的访问被重新映射到NAT内网的某个主机的相应端口上去。

在QEMU/KVM中,默认使用IP伪装的方式实现NAT,而不是使用SNAT(Source-NAT)或DNAT(Destination-NAT)的方式。

在KVM中配置客户机的NAT网络方式,需要在宿主机中运行一个DHCP服务器给宿主机分配NAT内网的IP地址,可以使用dnsmasq工具来实现。在KVM中,DHCP服务器为客户机提供服务的基本架构如图所示。

QEMU内部的用户模式网络

在没有任何"-net"参数时,QEMU默认使用的是"-net nic-netuser"的参数,提供了一种用户模式(user-mode)的网络模拟。使用用户模式的网络的客户机可以连通宿主机及外部的网络。用户模式网络完全是由QEMU自身实现的,不依赖于其他的工具(如前面提到的bridge-utils、dnsmasq、iptables等),而且不需要root用户权限(前面介绍过的bridge模式和NAT模式在配置宿主机网络和设置iptables规则时一般都需要root用户权限)。QEMU使用Slirp 实现了一整套TCP/IP协议栈,并且使用这个协议栈实现了一套虚拟的NAT网络。

由于其使用简单、独立性好、不需root权限、客户机网络隔离性好等优势,用户模式网络是QEMU的默认网络配置。不过,用户模式网络也有以下3个缺点:

  1. 由于其在QEMU内部实现所有网络协议栈,因此其性能较差。
  2. 不支持部分网络功能(如ICMP),所以不能在客户机中使用ping命令测试外网连通性。
  3. 不能从宿主机或外部网络直接访问客户机。

参考

KVM实战:原理、进阶与性能调优
Slirp, the PPP/SLIP-on-terminal emulator

相关推荐
anddddoooo2 小时前
域内证书维权
服务器·网络·网络协议·安全·网络安全·https·ssl
Long._.L2 小时前
OpenSSL实验
网络·密码学
Dyan_csdn2 小时前
【Python项目】基于Python的Web漏洞挖掘系统
网络·python·安全·web安全
okok__TXF3 小时前
Rpc导读
网络·网络协议·rpc
&向上4 小时前
RK3588配置成为路由器
网络·智能路由器·rk3588
猫猫的小茶馆4 小时前
【网络编程】UDP协议
linux·服务器·网络·网络协议·ubuntu·udp
十月ooOO4 小时前
小米AX3000T 路由器如何开启 SSH 安装 OpenWRT 系统,不需要降级 v1.0.91 (2025)
网络·ssh·路由器·openwrt
SKYDROID云卓小助手5 小时前
无人设备遥控器之如何分享数传篇
网络·人工智能·算法·计算机视觉·电脑
r_martian6 小时前
RPC:分布式系统的通信桥梁
网络·网络协议·rpc