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

相关推荐
稳联技术老娜8 小时前
DeviceNet主站怎么连接西门子PLC,Profinet网关配置手册(那智机器人)
服务器·网络·数据库
志栋智能10 小时前
AI驱动无代码:降低巡检超自动化的门槛
大数据·运维·网络·人工智能·自动化
专业机床数据采集10 小时前
C# 精雕数控 数据采集 Demo|实时读取精雕机床坐标、主轴、负载、加工工时全量参数
网络·网络协议·tcp/ip·mes·精雕数控数据采集
AOwhisky10 小时前
Ceph系列第六期:Ceph 文件系统(CephFS)精讲
linux·运维·网络·笔记·ceph
我爱C编程10 小时前
基于ECC簇内分组密钥管理算法的无线传感器网络matlab性能仿真
网络·matlab·ecc·密钥管理·无线传感器网络·簇内分组
Sagittarius_A*12 小时前
H3CSE 高性能园区网:园区网安全体系详解
网络·计算机网络·安全·h3cse
安全检测中14 小时前
探讨一个OSPF中NSSA类型的问题
网络
luj_176814 小时前
R语言生态优势与学习曲线分析
c语言·开发语言·网络·经验分享·算法
库拉大叔15 小时前
GPT-5.5 新手快速上手与实战指南
网络·人工智能·gpt
AI科技星15 小时前
万有引力G与真空介电常数ε0全维度完整关系式汇编(基于v=c螺旋时空理论)
c语言·开发语言·前端·javascript·网络·汇编·electron