<p>项目六构建KVM虚拟机网络与服务构建KVM虚拟机网络服务《云网络技术项目教程》构建KVM虚拟机网络服务【知识目标】(1)掌握常用的负载均衡技术。(2)掌握南北向和东西向流量的区别。(3)掌握防火墙与安全组的区别。(1)能够配置DHCP服务为虚拟机分配IP地址。(2)能够配置负载均衡服务提高网络的可用性。(3)能够配置虚拟防火墙和安全组加固虚拟网络。【技能目标】【网络拓扑】任务6-2的网络拓扑如图6-56所示。图6-56任务6-2网络拓扑必备知识1.常用的负载均衡技术(1)Nginx服务Nginx是一个高性能的开源反向代理服务器,同时也可以作为负载均衡器使用。Nginx支持基于轮询、最小连接数、IP哈希等多种负载均衡算法,并可以通过简单的配置实现负载均衡功能。Nginx除了负载均衡功能外,还可以作为Web服务器、反向代理服务器和缓存服务器使用,具有较强的灵活性和可扩展性。(2)LVS(LinuxVirtualServer)服务LVS是一个基于Linux内核的负载均衡解决方案,它通过网络地址转换(NAT)、直接路由(DR)、IP隧道等技术来实现负载均衡。LVS可以将来自客户端的请求分发到后端的多个服务器上,并支持传输层和应用层的负载均衡。LVS适合用于构建高性能的负载均衡集群,但需要一定的Linux系统和网络知识来配置和管理。(3)HAProxy服务HAProxy是一款高性能的、开源的负载均衡器和代理服务器软件,提供各类服务的性能优化和安全保障。HAProxy支持多种负载均衡算法,包括轮询、加权轮询、最少连接数等,并具有灵活的配置选项和丰富的监控功能。是构建高性能负载均衡架构的重要组件之一。(4)F5负载均衡F5是一款商业的应用交付控制器,提供高级的负载均衡、安全防护等功能。可以实现丰富的负载均衡策略和定制化配置,适用于大型企业和复杂的网络环境。必备知识2.南北向和东西向流量(1)南北向流量指进出数据中心或进出网络边界的流量,例如用户通过互联网访问数据中心中的应用程序或服务产生的流量,以及数据中心中的应用程序或服务向外部发送的流量,都属于南北向流量。在虚拟化环境中,南北向流量指虚拟机、容器与外部网络的通信流量。(2)东西向流量指数据中心内部或云平台内部虚拟机、容器之间相互通信产生的流量。这样的通信可能发生在同一台物理服务器上,也可能发生在不同的物理服务器之间。必备知识3.防火墙和安全组防火墙通常用于管理南北向流量,通过设置规则允许或拒绝外部网络与内部网络之间的通信。在云环境中,云服务提供商通常会提供边界防火墙功能,用于管理进出云平台的流量。安全组在虚拟化环境中通常用于管理东西向流量,可以控制虚拟机、容器之间的通信。安全组提供了针对内部通信的微观级别的访问控制,基于实例级别设置不同的安全规则,实现了细粒度的流量控制。防火墙应用对象是虚拟路由,保护路由上连接的子网。如在虚拟路由上定义多条Iptables规则允许外部网络通过ssh协议访问租户网络的22端口,但不可以使用telnet协议访问租户网络的23端口。安全组保护的是虚拟机实例,可以在宿主机上配置ebtables规则控制进出虚拟机的虚拟网卡流量,例如只允许web服务器访问本机的3306数据库端口,而禁止其它流量。必备知识4.ebtables工具ebtables是一个在Linux系统上运行的工具,用于在数据链路层对以太网帧进行过滤和操作。ebtables提供了一组规则和命令,允许您根据源MAC地址、目标MAC地址、协议类型等条件对网络流量进行过滤,以下是ebtables的一些主要特性和用途。(1)过滤功能ebtables允许设置过滤规则,根据源MAC地址、目标MAC地址、协议类型等条件来限制网络流量,Filter是ebtables默认的表格,它有三条链,如果网桥自身做了可以上网的主机,可以在input和output链上指明网桥过滤规则,一般仅作为网桥进行数据转发时,在forward链上进行配置。使用ebtables--help可以查看具体选项和参数。(2)网桥管理ebtables可以用于管理Linux系统上的网桥设备。它支持添加和删除网桥、配置网桥参数,以及设置网桥之间的流量转发规则等。(3)虚拟化环境中的网络隔离在虚拟化环境中,ebtables可以用于隔离虚拟机之间的网络流量,提供额外的网络安全层。(4)NAT转换ebtables支持对以太网帧进行NAT转换,可以实现类似于iptables的网络地址转换功能。(5)监控和日志记录ebtables可以用于捕获特定类型的网络流量,并将其记录到日志文件中,以便进一步分析和监控网络活动。配置DHCP服务为虚拟机分配IP地址1.配置服务器网络环境首先使用CentOS8.ova模板机创建两台名称为node1、node2的服务器,在node1上再添加一块网卡。三台服务器的网卡及IP地址配置如表6-2所示。</p>
讯享网
表6-2网卡地址及所属网络服务器名称网卡名称
连接到网络网络模式IP地址node1ens160VMnet1仅主机ens192lan1区段自定义网络不配置IP地址ens256VMnet8nat不配置IP地址node2ens160VMnet1仅主机ens192lan1区段自定义网络不配置IP地址其中node1、node2的ens160网卡用于登录管理主机,在node1的ens192与node2的ens192网卡用于跨主机的网络通信,node1的ens256用于内部网络与外部网络互联,node2上的虚拟机访问外部网络流量需要经过node1服务器的ens256网卡。配置完成后,查看node1服务器的网卡和IP地址配置,如图6-57所示。图6-57任务6-2node1网卡及IP地址配置查看node2服务器的网卡和IP地址配置,如图6-58所示。图6-58任务6-2node2网卡及IP地址配置配置DHCP服务为虚拟机分配IP地址2.配置计算节点node2虚拟机和网络(1)创建3台虚拟机安装任务6-1创建KVM虚拟机的方法,在node2服务器上,创建3台虚拟机,名称分别为vm1、vm2、vm3,创建完成后,进入vm1虚拟机的控制台,如图6-59所示。图6-59任务6-2登录KVM虚拟机vm1登录vm2虚拟机的控制台,如图6-60所示。图6-60任务6-2登录KVM虚拟机vm2登录vm3虚拟机的控制台,如图6-61所示。图6-61任务6-2登录KVM虚拟机vm3以上安装vm2和vm3虚拟机时,也可以采用克隆的方式完成,使用virt-manager界面或者命令行的方式都能实现,但启动后需要对网卡和计算机名等信息进行修改。(2)虚拟机网卡连接虚拟网桥br1①创建虚拟网桥br1在node2服务器的网络配置目录,建立文件ifcfg-br1,在文件中输入以下内容。TYPE=BridgeNAME=br1DEVICE=br1ONBOOT=yes以上配置创建了网桥br1。②创建ens192网卡子接口ens192.10在网络配置目录下创建ifcfg-ens192.10文件,在文件中输入以下内容。VLAN=yesTYPE=VLANPHYSDEV=ens192VLAN_ID=10NAME=ens192.10DEVICE=ens192.10ONBOOT=yesBRIDGE=br1以上配置创建了ens192网卡的子接口ens192.10,封装vlan标记为10,连接到br1网桥,保存文件后重启网络管理程序和链接。③将虚拟机接入网桥br1在vm1、vm2、vm3的控制台上,将网卡连接到虚拟网桥br1,连接完成后,安装网桥工具bridge-utils,查看node2节点的网桥信息,如图6-62所示。图6-62任务6-2虚拟网桥br1连接网卡从结果中可以看出,br1连接着3块虚拟网卡,分别是vnet9、vnet12、vnet14,这三块虚拟网卡是vm1、vm2、vm3连接外部的网卡,那如何确定和虚拟机的对应关系呢,由于在启动虚拟机时,虚拟网卡是随机创建的,但编号按照顺序依次递增,由于首先重启的是vm1,然后是vm2和vm3,所以vm1对应的虚拟网卡是vnet9,vm2对应的虚拟网卡是vnet12,vm3对应的虚拟网卡是vnet14。配置DHCP服务为虚拟机分配IP地址3.node1网络节点配置DHCP服务(1)创建虚拟网桥br1并连接虚拟网卡ens192.10①创建虚拟网桥br1在网络节点node1服务器上,进入网络配置目录,创建ifcfg-br1文件,输入以下内容,创建网桥br1。TYPE=BridgeNAME=br1DEVICE=br1ONBOOT=yes②创建ens192网卡子接口ens192.10在网络配置目录下创建ifcfg-ens192.10文件,在文件中输入以下内容。VLAN=yesTYPE=VLANPHYSDEV=ens192VLAN_ID=10NAME=ens192.10DEVICE=ens192.10ONBOOT=yesBRIDGE=br1以上配置在node1服务器上创建了ens192网卡的子接口ens192.10,封装vlan标记为10,连接到br1网桥,保存文件后重启网络管理程序和链接。(2)创建名称空间为vlan10用户分配IP地址,首先创建网络名称空间,然后接入br1网桥上。再在名称空间下安装dhcp服务。创建网络名称空间dhcp,连接到网桥br1的配置如下。[root@node1]#ipnetnsadddhcp#创建网络名称空间dhcp[root@node1]#iplinkaddv1typevethpeernamev11#增加成对veth网卡[root@node1]#iplinksetv11up#启动网卡v11[root@node1]#iplinksetv1netnsdhcp#将v1移动到名称空间dhcp[root@node1]#ipnetnsexecdhcpiplinksetv1up#启动v1[root@node1]#brctladdifbr1v11#将v11绑定到网桥br1上(3)安装配置dhcp服务①安装dhcp-server服务在名称空间安装dhcp-server服务,方法如下。[root@node1]#ipnetnsexecdhcpbash#进入名称空间dhcp[root@node1]#yuminstalldhcp-server-y#安装dhcp服务②配置dhcp服务首先为网卡v1配置一个/24网络的IP地址,因为dhcp分配网络时,要监听属于分配网络的网络接口,这里将v1接口配置为,配置如下。[root@node1]#ipaddradd/24devv1然后打开dhcp服务的配置文件/etc/dhcp/dhcpd.conf,输入以下内容。subnetnetmask{#定义分配的网络地址
range00;#分配的IP地址范围
optionsubnet-mask;#分配的子网掩码
optionrouters;#分配的网关
optiondomain-name-servers;#分配的DNS服务器}其中网关在后续任务中配置在虚拟路由器r1上。③启动dhcp服务,虚拟机获取IP地址为隔离各名称空间的进程,需要使用dhcp服务的/usr/sbin/dhcpd命令直接启动dhcp服务,在后边加上配置文件即可,如果使用systemctl启动将无法有效的隔离各名称空间的应用进程,启动dhcp命令如下。[root@node1]#/usr/sbin/dhcpd-cf/etc/dhcp/dhcpd.conf启动dhcp服务后,在vm1虚拟机上使用servicenetworkrestart重启网卡,查看IP地址,如图6-63所示。图6-63任务6-2虚拟机vm1成功获取IP地址在vm2虚拟机上使用servicenetworkrestart重启网卡,查看IP地址,如图6-64所示。图6-64任务6-2虚拟机vm2成功获取IP地址在vm3虚拟机上使用servicenetworkrestart重启网卡,查看IP地址,如图6-65所示。图6-65任务6-2虚拟机vm3成功获取IP地址配置防火墙和安全组加固虚拟网络1.配置虚拟机内外网互联(1)创建连接虚拟路由r1和虚拟交换机brout在node1服务器上,创建虚拟机连接外部网络的虚拟路由r1和虚拟机交换机brout,将虚拟路由连接到虚拟网桥br1和虚拟网桥brout上,将虚拟网桥brout连接到ens256上。①创建虚拟网桥brout进入网络配置目录,创建ifcfg-brout文件,输入以下内容,创建网桥brout。TYPE=BridgeNAME=broutDEVICE=broutONBOOT=yes配置完成后,重启网络管理和链接。②创建虚拟路由r1创建虚拟路由r1,连接到虚拟网桥br1和brout,配置如下。[root@node1]#ipnetnsaddr1#创建网络名称空间r1[root@node1]#iplinkaddv3typevethpeernamev33#创建成对虚拟网卡[root@node1]#iplinksetv33up#启动v33[root@node1]#iplinksetv3netnsr1#移动v3到r1名称空间[root@node1]#ipnetnsexecr1iplinksetv3up#启动v3网卡[root@node1]#iplinkaddvbr1typevethpeernamevbr11#创建成对虚拟网卡[root@node1]#iplinksetvbr11up#启动vbr11[root@node1]#iplinksetvbr1netnsr1#移动vbr1到r1名称空间[root@node1]#ipnetnsexecr1iplinksetvbr1up#启动vbr1[root@node1]#ipnetnsexecr1ipaddradd/24devv3#设置vlan10用户的网关v3的IP地址[root@node1]#ipnetnsexecr1ipaddradd0/24devvbr1#设置连接到外部网络虚拟网卡vbr1的IP地址[root@node1]#brctladdifbr1v33#将v33绑定到虚拟网桥br1[root@node1]#brctladdifbroutvbr11#将vbr11绑定到虚拟网桥brout[root@node1]#brctladdifbroutens256#将ens256绑定到虚拟网桥brout配置完成后,检查虚拟网桥和绑定网卡信息,如图6-66所示。图6-66任务6-2node1服务器的网桥及网卡绑定信息(2)配置虚拟路由r1实现内外网互访①开启防火墙路由转发功能[root@node1]#ipnetnsexecr1bash进入虚拟路由r1在/etc/sysctl.conf中加入以下配置。net.ipv4.ip_forward=1然后在命令行执行以下命令,使配置生效。[root@node1]#sysctl-p②添加到达外部网络的路由在r1名称空间下,配置默认路由,指向vmnet8网络的网关地址,配置如下。[root@node1]#routeadddefaultgw③配置snat规则实现内部虚拟机访问外部主机当虚拟机访问外部主机流量到达r1后,需要配置Iptalbes源地址转换规则,将源地址转换成0,实现访问外部主机,配置如下。[root@node1]#iptables-tnat-APOSTROUTING-s/24-jSNAT–to0#将来自/24网络的源地址转换为0配置完成后,在虚拟机vm1的控制台**问,结果如图6-67所示。
图6-67任务6-2虚拟机vm1访问从结果发现,虚拟机vm1已经能够访问。能够访问域名的原因是vm1通过dhcp服务器配置了DNS地址,所以能够解析域名。(2)配置DNAT实现外部主机访问虚拟机①增加路由出口IP地址虚拟路由器r1完成外部出口到虚拟机的映射,需要在出口上增加1个IP地址为1/24,配置如下。[root@node1]#ipaddradd1/24devvbr1#接口添加IP地址[root@node1]#ipaddradd2/24devvbr1#接口添加IP地址②配置Iptalbes目的地址转换规则虚拟机vm1和虚拟机vm2是两台web服务器,需要进行远程管理维护,所以需要实现访问路由器的22端口时,跳转到两台虚拟机的22端口,配置如下。[root@node1]#iptables-tnat-APREROUTING-d0-ptcp–dport22-jDNAT–to:22#当外部主机访问0的22端口时,跳转到vm1虚拟机的22端口[root@node1]#iptables-tnat-APREROUTING-d1-ptcp–dport22-jDNAT–to:22#当外部主机访问1的22端口时,跳转到vm2虚拟机的22端口[root@node1]#iptables-tnat-APREROUTING-d2-ptcp–dport22-jDNAT–to:22配置结束后,在windows上,使用SecureCRT工具使用ssh协议访问0的22端口时,即可以登陆到虚拟机vm1,如图6-68所示。图6-68任务6-2远程登陆到虚拟机vm1使用SecureCRT工具使用ssh协议访问1的22端口时,可以登陆到虚拟机vm2,如图6-69所示。图6-69任务6-2远程登陆到虚拟机vm2使用SecureCRT工具使用ssh协议访问2的22端口时,可以登陆到虚拟机vm2,如图6-70所示。图6-70任务6-2远程登陆到虚拟机vm3在三台虚拟机上上传阿里云的centos6.5网络yum源,如下所示。[.d]#lsCentOS-Base.repo[.d]#lsCentOS-Base.repo[.d]#lsCentOS-Base.repo在vm3上安装数据库mysql-server,用于测试后续配置,如下所示。[root@vm3]#yuminstallmysql-server-y启动数据库,如下所示。[root@vm3]#servicemysqldstart配置防火墙和安全组加固虚拟网络2.配置防火墙规则实现vm3的访问控制防火墙主要用来控制每个子网与外部网络的通信流量和不同子网之间的通信流量。在本任务中,虚拟机vm3部署公司的重要数据库,不可以与外部进行网络通信,但在虚拟路由器r1配置snat规则时,/24网络的主机都可以访问外部网络,需要在r1上配置Iptables过滤规则将vm3去往外部的流量禁止掉。流经路由器的数据需要经过三个链,分别是PREROUTING、FORWARD、POSTROUTING,snat源地址转换配置在POSTROUTING链上,filter表的规则可以作用在INPUT链、FORWARD链、OUTPUT链上,所以可以在FORWARD链上配置filter表的规则,禁止掉来自vm3地址的流量,配置如下。[root@node1]#iptables-AFORWARD-s-jDROP配置完成后,查看vm3与外部网络的连通性时,结果如图6-71所示,发现虚拟机vm3已经无法访问外部网络了。图6-71任务6-2虚拟机vm3已经无法访问外部主机使用使用SecureCRT工具也无法登录登录到vm3虚拟机,如图6-72所示。图6-72任务6-2外部主机无法登录vm3虚拟机配置防火墙和安全组加固虚拟网络3.配置安全组规则实现内部主机访问控制(1)配置ebtables安全组规则虚拟机和vm1和vm2部署的是动态网站,只需要访问公司的vm3服务器的数据库,同时虚拟机vm3需要开放内部用户的远程管理功能,禁止到其他的访问流量,在每个子网内部使用ebtables安全组规则实现访问控制,配置如下。[root@node2]#ebtables-tfilter-AFORWARD-pipv4-ovnet24–ip-prototcp–ip-dport22-jACCEPT#虚拟机vm3连接在vnet24接口,-o指从外界到达虚拟机的流量,使用-i指虚拟机到达该接口的流量。此条配置在filter表的FORWARD链中添加了一条针对ipv4的规则,接受tcp协议目标22端口数据。[root@node2]#ebtables-tfilter-AFORWARD-pipv4-ovnet24–ip-prototcp–ip-dport3306-jACCEPT#此条配置在filter表的FORWARD链中添加了一条针对ipv4的规则,接受tcp协议目标3306端口数据。[root@node2]#ebtables-tfilter-AFORWARD-pipv4-ovnet24-jDROP#此条配置在filter表的FORWARD链中添加了一条针对ipv4的规则,拒绝其他流量。(2)测试安全组规则①测试内部主机远程登陆虚拟机vm3在vm2的登录界面上,使用sshroot@登录管理虚拟机vm3,结果如图6-73所示。图6-73任务6-2在虚拟机vm2上远程登录管理虚拟机vm3输入root用户的密码000000,发现可以登录到虚拟机vm3了。②测试内部主机访问虚拟机vm3的mysql-server服务在虚拟机vm1上,安装mysql客户端,如下所示。[root@vm1]#yuminstallmysql-y使用mysql客户端工具登录虚拟机vm3的mysqld服务,如下所示。[root@vm1]#mysql-h-uroot-p结果如图6-74所示。图6-74任务6-2在虚拟机vm1上登陆虚拟机vm3的mysqld服务从结果可以看出,当向vm3发送icmp报文请求时,已经没有返回数据了,说明ebtables安全组规则拒绝了其他访问流量。图6-75任务6-2在虚拟机vm1上测试与虚拟机vm3的连通性从结果可以看出,虚拟机vm1已经可以访问虚拟机vm3的mysqld数据库服务了。③测试其他访问流量使用负载均衡确保WEB服务高可用根据任务拓扑所示,在虚拟机vm1和vm2上,安装WEB网站服务,访问虚拟路由r1连接外网地址的web服务时,跳转到虚拟路由器lb上,在lb上安装负载均衡服务nginx,将流量负载分担到vm1和vm2的WEB服务上。1.安装启动httpd服务(1)安装httpd服务在虚拟机vm1和vm2上,安装httpd服务,如下所示。[root@vm1]#yuminstallhttpd-y[root@vm2]#yuminstallhttpd-y(2)配置启动httpd服务将虚拟机vm1的网站首页内容设置为vm1,如下所示。[root@vm1]#echovm1>/var/www/html/index.html将虚拟机vm2的网站首页内容设置为vm2,如下所示。[root@vm2]#echovm2>/var/www/html/index.html(3)关闭防火墙关闭虚拟机vm1和vm2的防火墙,如下所示。[root@vm1html]#serviceiptablesstop[root@vm2html]#serviceiptablesstop(4)测试服务在vm1上测试vm2的WEB服务,如图6-76所示。图6-76任务6-2在vm1**问测试vm2的WEB服务在vm2上测试vm1的WEB服务,如图6-77所示。图6-77任务6-2在vm2**问测试vm1的WEB服务配置防火墙和安全组加固虚拟网络2.安装配置nginx负载均衡服务在服务器node1上,创建网络名称空间lb,配置接口的ip地址,连接到br1虚拟网桥上。(1)创建虚拟路由lb[root@node1]#ipnetnsad

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/143280.html