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

相关推荐
网络安全Ash4 小时前
全国知名网络安全赛事西湖论剑·杭州网络安全技能大赛启动报名
网络·安全·web安全
Spiffo_Sir6 小时前
【Spiffo】排障:VsCode报错“过程试图写入的管道不存在”(网络环境正常且地址正常的情况下依然出现)
网络·ide·vscode
MAR-Sky6 小时前
集线器,交换机,路由器,mac地址和ip地址知识记录总结
网络·tcp/ip·智能路由器
柒烨带你飞6 小时前
热备份路由HSRP及配置案例
网络·智能路由器
黑客呀8 小时前
网络安全笔记
网络·安全·web安全
让世界再也没有bug8 小时前
显示视频DP、HDMI、DVI、VGA接口的区别
网络·智能硬件
wangqiaowq9 小时前
HTTP、HTTP/2 和 gRPC 是网络通信协议或基于这些协议的技术,它们之间有显著的区别
网络·网络协议·http
橙子 chen10 小时前
工具函数 - 调用http
java·大数据·网络·数据库·python·网络协议·http
一休哥助手10 小时前
深入解析桥接模式、NAT模式与仅主机模式
网络·桥接模式