NAT网络普遍存在于我们身边,比如现代家庭网络、手机3/4G网络等,它是局域网组网的主要形式之一。在私有云的虚拟化和容器服务中,它也是最为基础的网络形式,在libvirt/QEMU组合中的默认结构如图6-9。
图6-9 NAT网络示意图
为了在libvirt中使用NAT网络,我们首先需要在libvirt中定义一个名为default的NAT网络的配置。
定义并启动之后,libvirt会创建虚拟网桥virbr0、添加NAT规则并在虚拟网桥上启动DHCP服务。添加的NAT规则(SNAT或者MASQUERADE皆可,主要区别是前者在SNAT期间内核将一直记录连接信息,网口关闭后连接虽然失效但信息仍然存在,当接口重启后连接继续生效;而后者的连接信息将随着网口的关闭而丢失,除非虚拟机再次发起连接)会将来自virbr0的流量传递至物理网口eth0,DHCP服务则由轻量级的dnsmasq提供,如下所示。
(www.xing528.com)
然后在虚拟机设备段中添加如下定义,即可通过DHCP获得地址并以NAT方式访问外部网络。
相关链接
几种forward mode的区别
目前libvirt网络定义中的forward mode有8种模式可选,分别是“passthrough”“hostdev”“vepa”“private”“bridge”“nat”“route”“isolated”,读者常用且可能容易混淆的是后三者。“nat”和“route”模式都需要防火墙规则定义流量路径,其区别是当虚拟机与外部通信时,前者的IP封包会进行SNAT和DNAT处理,后者则没有;“isolated”模式中的虚拟机只能互相访问。
资料来源:https://wiki.libvirt.org/page/Virtual Networking
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。