第5章KVM网络管理

虚拟机是需要连网的,否则就失去了意义。虚拟机连网有很多方法,常见的有NAT方式和桥接方式两种,每一种的意义又不一样,因此,本章重点介绍这两种方式的原理以及相应的配置。
 学习目标:  
 掌握通过NAT方式与外界通信。
 掌握通过桥接方式与外界通信。






5.1NAT网络
5.1.1NAT网络的原理

NAT即为网络地址转换,在网络里主要是解决内网访问外网的通信问题的,通常设置了NAT之后,内网可以访问外网,但是外网无法访问内网。如图51所示,虚拟机连接在宿主机上,进行NAT转换之后,才能访问物理网络,而物理网络是不能访问虚拟机的。




图51NAT连网方式


KVM默认的连网方式是NAT。当安装好KVM虚拟机后,就会在宿主机上安装一个网桥virbr0,如图52所示,此网桥会把虚拟机都连接起来,处在同一个网段,并且KVM会修改iptables规则,让连接到此网桥的虚拟机访问外网时做一个网络地址转换。




图52NAT连网的宿主机内部结构


5.1.2NAT网络的图形配置方法
NAT网络的配置有两种方法,一是通过图形的方式来进行配置。二是通过配置文件的方式来进行配置。图形配置方法直观,下面介绍一下其具体的操作步骤: 





(1) 打开配置网络的界面,如图53所示,选择虚拟机管理器Edit菜单下的Connection Details选项,将弹出如图54所示的对话框,选择里面的Virtual Networks选项卡来对虚拟网络进行配置。




图53选择Connection Details选项






图54选择Virtual Networks选项卡


(2) 在Virtual Networks选项卡中,先删除KVM自己创建的NAT网络default,结果如图55所示,然后再创建自己的网络。




图55删除默认的网络default



(3) 在图55中,单击左下角的“+”按钮,新建一个虚拟网络,如图56所示,在Network Name的文本框中输入WYLNAT。




图56输入网络名字


(4) 在图56中,单击Forward按钮,将弹出如图57所示的对话框,在图中输入虚拟网络的网段地址192.168.200.0/24,并且启动DHCP,指定DHCP地址池的范围,单击Forward按钮,弹出如图58所示的对话框,不启用IPv6的网络。




图57配置IPv4网络






图58配置IPv6网络


(5) 在图58中,单击Forward按钮,弹出如图59所示的对话框,选择Forwarding to physical network,目标网卡为ens33,模式为NAT,也就意味着虚拟机如果选择WYLNAT网络后,将通过ens33网卡进行地址转换后再转发给外网。单击Finish按钮,完成网络的配置。




图59选择转换的物理网络


(6) 在如图59所示的对话框中,单击Finish按钮,可以看到一个新生成的虚拟网络WYLNAT,如图510所示。



(7) 虚拟机如果要使用WYLNAT网络,可以打开虚拟机的详情页面,如图511所示,选择网卡,在虚拟网络接口页面中,选择网络源WYLNAT。


(8) 启动虚拟机vm01clone,查看网卡的情况,发现eth0获取到WYLNAT网络提供的IP地址192.168.200.195/24,如图512所示。



(9) 从宿主机上可以通过虚拟网络WYLNAT访问到虚拟机vm01clone,如图513所示。
(10) 查看在虚拟机vm01clone是否可以访问外网中的其他主机,先查看一下外网



图510新生成的WYLNAT网络




图511虚拟机选择使用WYLNAT网络




图512使用WYLNAT网络启动后的网卡情况




图513宿主机可以访问虚拟机


中的一台Windows主机的IP地址,如图514所示,其IP地址为192.168.100.1,然后在虚拟机vm01clone中去ping这台Windows主机,发现是通的,如图515所示。




图514外网中的一台Windows主机






图515虚拟机可以访问外网


(11) 在宿主机上查看网络的情况,发现新建WYLNAT网络后,多了一个virbr0的网桥,并且virbr0中内置了一个网络接口virbr0nic,以及网桥上的另一个接口vnet0,此接口是连接虚拟机vm01clone的,如图516所示。



图516宿主机网卡信息








5.1.3NAT网络的字符配置方法

如果没有图形的情况下或者在进行自动化部署的时候,就需要了解字符界面下的配置,具体操作如下: 
(1) 查看当前的虚拟网络,如图517所示。图中显示了网络的名字(Name),状态(State)是激活的,宿主机启动时是自动(Autostart)开启网络的,此网络是永久(Persistent)有效的。



图517查看虚拟网络状态


(2) 查看WYLNAT网络中的网桥情况,如图518所示,网桥名字为virbr0,此网桥有两个接口,一个是网桥内置的接口virbr0nic,另一个是连接虚拟机vm01clone的接口vnet0。




图518查看网桥virbr0


(3) 查看路由情况,如图519所示,所有前往网段192.168.200.0/24的数据包,都从virbr0发出去。




图519查看宿主机路由表


(4) 通过配置文件新建网络,要用到配置文件,配置文件有一个模板,在/usr/share/libvirt/network/目录下,名字为default,可以复制并修改此配置文件,来创建新的网络。如图520所示,生成一个新的网络配置文件nat.xml。




图520生成新的配置文件nat.xml


(5) 修改网络配置文件nat.xml,如图521所示,一是修改网络名字为WJHNAT,二是修改网桥的名字为virbr1,三是修改网桥的IP地址为192.168.201.1,四是修改此网络提供的IP地址池,范围为192.168.201.101~192.168.201.200。




图521修改网络配置文件nat.xml


(6) 配置文件生成之后,就可以通过virsh netdefine命令定义此网络,如图522所示,定义完成后,并没有发现此网络,通过all选项才能看到,是因为此网络没有激活。




图522定义网络WJHNAT


(7) 如图523所示,通过netstart来激活此网络,发现此时状态为active了。




图523激活网络WJHNAT



(8) 图523中显示网络激活了,但是并不会随着宿主机启动而启动此网络,因此,需要通过netautostart命令来实现自动启动WJHNAT网络,如图524所示,至此WJHNAT网络配置完成了。




图524自动启动WJHNAT网络


(9) 网络WJHNAT配置完成后,如果虚拟机要使用此网络,需要在虚拟机的详情页面进行设置,如图525所示,让虚拟机使用WJHNAT网络。




图525配置虚拟机网络源


(10) 启动虚拟机后,发现虚拟机获取了WJHNAT网络的相关信息,如图526所示。




图526虚拟机获取WJHNAT的网络信息









5.2桥接
5.2.1桥接网络的原理

网桥方式连接网络就是虚拟机与宿主机接在同一个交换机上,如图527所示,此时虚拟机与宿主机以及其他的主机都是在同一个网段,相互间可以直接通信。虚拟机与宿主机之前通过网桥通信,而虚拟机与外部主机之间则通过外部的物理交换机通信。




图527网桥连网方式


默认情况下KVM是没有网桥的,因此,需要管理员对其进行配置,生成一个网桥br0,如图528所示,然后将宿主机网卡eth0、连接虚拟机的网卡vnet0、vnet1连接到网桥br0,此时,虚拟机配置的IP地址,需要与物理机的IP地址以及外部主机的IP地址在同一个网段,这样虚拟机就可以与宿主机以及外部主机之间进行通信了。




图528网桥连网的宿主机内部结构


5.2.2桥接网络的字符配置方法
(1) 在网卡的配置文件目录中,生成一个新的配置文件ifcfgbr0,如图529所示,并在其上配置好IP地址,每个选项的具体含义如表51所示。



图529网桥的配置方法




表51网桥br0配置文件选项含义




选项
含义
DEVICE
设备名称,br0为网桥的名字
NAME
连接名
ONBOOT
系统启动时启动此网桥
TYPE
设备类型,此处为网桥
BOOTPROTO
获得IP的方式,static为手工配置
IPADDR
设备IP地址
PREFIX
设备掩码
GATEWAY
设置网关地址
DNS1
设置DNS服务器1的IP地址

br0配置完成后,需要修改物理网卡的配置文件,其中BRIDGE=br0选项比较特殊,其含义是将此物理网卡桥接到br0网桥上,使得物理网卡也连接到网桥上,实现了虚拟机与宿主机之间的连接。
(2) 网桥br0与网卡ens33配置完成后,必须重启网络使其生效,如图530所示,查看网桥的信息,确认ens33是否已经连接到网桥br0上了。


图530重启网络


(3) 查看网卡ens33与网桥br0,发现现在的IP地址等信息配置在网桥br0上了,如图531所示。




图531查看IP地址


(4) 如果虚拟机vm01要使用网桥br0进行连网,必须在虚拟机vm01的详情页面中设置网络源为Bridge br0,如图532所示。




图532设置虚拟机的网络源


(5) 启动虚拟机vm01,查看网桥br0的信息,发现虚拟机vm01是采用网卡vnet0来连接网桥的,如图533所示。



图533查看网桥


(6) 虚拟机vm01启动后,可以将虚拟机vm01的IP地址设置为与宿主机同一个网段192.168.100.0/24,并测试是否可以访问到宿主机,如图534所示,发现虚拟机vm01与宿主机之间可以正常通信了。




图534测试是否可以通过桥接与宿主机通信


5.3本章实验
5.3.1实验目的

了解使用图形界面的方式来创建NAT网络。
掌握使用字符界面的方式来创建NAT网络。
掌握使用字符界面的方式来创建桥接网络。
5.3.2实验环境
在安装KVM的宿主机node1上安装虚拟机vm01与vm02。
5.3.3实验拓扑
实验拓扑图如图535所示。



图535实验拓扑图


5.3.4实验内容
如图535所示,创建NAT网络与桥接网络。
(1) 在宿主机上创建一个NAT的网络NAT1,网段地址为192.168.200.0/24,此时会生成一个新的网桥virbr1。虚拟机vm01选择此网络,将vm01重启后,查看虚拟机vm01的IP地址,并且测试是否可以访问外网,以及外网中的PC是否可以访问此虚拟机vm01。
(2) 在宿主机上创建一个网桥br0,将物理网卡ens33连接至br0。虚拟机vm02选择此网桥,将vm02重启后,查看虚拟机vm02的IP地址,并且测试是否可以访问外网以及外网是否可以访问此虚拟机vm02。
说一说: 
NAT网络与桥接网络的原理,它们分别适应什么场合?
想一想: 
实验中vm02会自动获取到IP地址吗?如果能获取到,它的IP地址是谁提供的呢?