简单实现在隔离环境中部署kvm虚拟机

实验拓补图:


其中,使用 仅主机 网段模拟内网环境,使用 NAT 网段作为对外通信接口



基础网络配置


该实验使用3台VMware虚拟机,镜像为 CentOS-7-x86_64-Minimal-2009.iso 以及PC主机。

具体配置信息如下:

PS:网关服务器所需的NAT网卡数量为2,且开机需保持关闭状态



创建完虚拟机后,我们便可以开始依次对虚拟机的网络进行配置:

实验使用nmcli工具进行网络配置,不熟悉的也可以在/etc/sysconfig/network-scripts/ifcfg-X(X对应网卡名称)进行配置


KVMgw节点:


  1. 配置内网(仅主机)ip:
[root@kvmgw ~]# hostnamectl set-hostname KVMgw
[root@kvmgw ~]# nmcli con modify eth0 ipv4.method manual ipv4.addr 192.168.28.10/24 autoconnect yes
[root@kvmgw ~]# nmcli con up eth0


  1. 查看网卡状态:
[root@kvmgw ~]# nmcli con show
NAME               UUID                                 TYPE     DEVICE
eth0               45c16f44-3a91-421f-b9df-4ad3cb247dd1 ethernet eth0  
Wired connection 1 de4f9f0e-60c2-3755-9313-c6482bbd75c3 ethernet eth1   
Wired connection 2 56676ca4-3627-3bbb-ad79-228a87e00949 ethernet eth2
若NAT两张网卡处于开启状态,则需要手动关闭


[root@kvmgw ~]# nmcli con down Wired\ connection\ 1
Connection 'Wired connection 1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
[root@kvmgw ~]# nmcli con down Wired\ connection\ 2
Connection 'Wired connection 2' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)


  1. 再次查看网卡状态:
[root@kvmgw ~]# nmcli con show
NAME               UUID                                 TYPE     DEVICE
eth0               45c16f44-3a91-421f-b9df-4ad3cb247dd1 ethernet eth0  
Wired connection 1 de4f9f0e-60c2-3755-9313-c6482bbd75c3 ethernet  --    
Wired connection 2 56676ca4-3627-3bbb-ad79-228a87e00949 ethernet  --


我们可以看到,两张NAT网卡已经关闭连接了,现在我们可以将两张网卡绑定在一个聚合口中。

因为多个物理网卡聚合在一起,可以实现冗错和提高吞吐量,即 主备负载均衡 两个模式,我们将选用主备这样模式。


  1. 创建聚合口:
[root@kvmgw ~]# nmcli connection add type bond ifname external_bond con-name external mode active-backup
Connection 'external' (5b3f5182-eb9c-4e03-a256-13640fe081ce) successfully added.

具体参数在这里不作过多说明,有兴趣可移至该文章


  1. 将外网卡(NAT)加入到聚合口:
[root@kvmgw ~]# nmcli connection add type bond-slave ifname eth1 con-name external_link1 master external_bond
Connection 'external_link1' (1b589260-d79a-48bb-a057-874d24702332) successfully added.
[root@kvmgw ~]# nmcli connection add type bond-slave ifname eth2 con-name external_link2 master external_bond
Connection 'external_link2' (f6005944-4853-4b61-b93f-5b6b7b3f3f6b) successfully added.


  1. 为聚合口配置ip:
[root@kvmgw ~]# nmcli connection modify external ipv4.method manual ipv4.address 192.168.200.60/24 ipv4.gateway 192.168.200.2 ipv4.dns 114.114.114.114 autoconnect yes
[root@kvmgw ~]# nmcli con up external


  1. 查看聚合口信息:
在 Slave Interface 中可以看到 eth1 eth2 说明加入成功,若没有该信息说明加入失败,原因可能是先前没有关闭nat网卡仍保持启动中,该接口无法同时运行两份网络配置文件,可以先去将NAT网卡关闭。
[root@kvmgw ~]# cat /proc/net/bonding/external_bond
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:ce:9c:7d
Slave queue ID: 0
Slave Interface: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:ce:9c:87
Slave queue ID: 0


KVM01节点:

  1. 配置ip:
[root@kvm01 ~]# nmcli con modify eth0 ipv4.method manual ipv4.addr 192.168.28.11/24 autoconnect yes
[root@kvm01 ~]# nmcli con up eth0
  1. 配置网关:
[root@kvm01 ~]# nmcli con modify eth0 ipv4.gate 192.168.28.10
[root@kvm01 ~]# nmcli con up eth0


KVM02节点:

  1. 配置ip:
[root@kvm02 ~]# nmcli con modify eth0 ipv4.method manual ipv4.addr 192.168.28.12/24 autoconnect yes
[root@kvm02 ~]# nmcli con up eth0


  1. 配置网关:
[root@kvm02 ~]# nmcli con modify eth0 ipv4.gate 192.168.28.10
[root@kvm02 ~]# nmcli con up eth0


网关服务器SNAT配置


在前面的配置中我们已经完成了内网的网络配置,现在我们将通过 SNAT 的方式实现内防外(用于kvm01/02安装软件)

此时我们的网关服务器充当了内外网间的防火墙


  1. 开启转发:
[root@kvmgw ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
[root@kvmgw ~]# sysctl -p
net.ipv4.ip_forward = 1


  1. 通过 Firewalld 防火墙配置 SNAT 代理功能:
[root@kvmgw ~]# firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o external_bond -j MASQUERADE -s 192.168.28.0/24
success


  1. 开放 DNS 服务端口,使内网服务器正常访问外部服务器:
[root@kvmgw ~]# firewall-cmd --permanent --zone=public --add-masquerade
success
[root@kvmgw ~]# firewall-cmd --zone=public --add-port=53/tcp --permanent
success
[root@kvmgw ~]# firewall-cmd --reload


配置完成后在KVM01/02向外网通信,连通即为成功,如: ping qq.com

拓扑图中还有 DNAT 外访内的网络配置,但本实验中没有该需求,故不配置(用于连接测试的主机为PC,默认分配了仅主机ip{192.168.28.1},因而PC机本身就处于内网中了)


KVM部署


安装前要开启虚拟化功能


KVM01:


kvm-qemu为kvm平台软件包,libvirt为虚拟机管理工具,virt-install为便捷安装虚拟机的工具
[root@kvm01 ~]# yum install -y qemu-kvm
[root@kvm01 ~]# yum install -y libvirt
[root@kvm01 ~]# yum install -y virt-install
[root@kvm01 ~]# systemctl enable --now libvirtd


KVM02:


[root@kvm02 ~]# yum install -y qemu-kvm
[root@kvm02 ~]# yum install -y libvirt
[root@kvm02 ~]# yum install -y virt-install
[root@kvm02 ~]# systemctl enable --now libvirtd


内网本身隔离外网,可能不需要考虑安全问题,故关闭防火墙

[root@kvm01 ~]# systemctl disable --now firewalld
[root@kvm02 ~]# systemctl disable --now firewalld


创建虚拟机:


  1. 创建文件夹,上传镜像:
[root@kvm02 ~]# mkdir /iso
# 使用ftp工具或scp上传至虚拟机
PS F:\mirros> scp .\CentOS-7-x86_64-Minimal-2009.iso root@192.168.28.11:/iso


  1. 使用 virt-install 工具创建虚拟机:
[root@kvm01 iso]# virt-install --name=vm01 --virt-type=kvm --os-type=linux --os-variant=rhel7 \
--vcpus=1 --memory=512 --location=/iso/CentOS-7-x86_64-Minimal-2009.iso \
--disk path=/var/lib/libvirt/images/vm01.qcow2,size=10,format=qcow2 \
--network default --graphics vnc,listen=0.0.0.0,port=5900



在创建时会停留在执行,不要切断!


使用VNC工具:


连接成功后初始页面就是安装centos时的页面(启动虚拟机时用到centos7镜像)


安装完毕后可在虚拟机(kvm所创建的)中用ping工具测试是否能跟外网通信。


正常通信:


此时的流量走向为 vm01 --> 192.168.122.1(KVM01) --> 192.168.28.10(KVMgw) --> internet

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP