KVM实现三层网络
由于测试双网卡双网关功能实现,没有测试环境。所以需要在虚拟机中进行模拟,以验证操作的正确性。
二、环境准备准备1台4vCPU+8G内存虚拟机,用于部署虚拟化,模拟所有的网络环境。
配置
备注
CPU
4核
内存
4GB
磁盘
20GB
网络
4个网口
在虚拟机中,需要创建5台1vCPU+1GRAM的虚拟机,用于网络测试。
虚拟机名称
操作系统
网口名称
IP地址
桥接网络
node1
Centos7
ens3
192.168.1.101
br1
ens4
192.168.2.101
br2
node2
Centos7
ens3
192.168.0.102
br0
node3
Centos7
ens3
192.168.3.103
br3
switch1
Centos7
ens3
192.168.0.254
br0
ens4
192.168.1.254
br1
switch2
Centos7
ens3
192.168.2.254
br2
ens4
192.168.3.254
br3
按照配置规划表中的信息,创建5台测试虚拟机。用于网络环境的准备测试。node1、node2、node3是3台测试的虚拟机,node1配置2个网卡,用于验证双网卡双网关。Node2和node3分别是跨网段的虚拟机,用于测试与node1的连通性。
Switch1和switch2同样是虚拟机,但在该环境中,用于模拟交换机,实现三层网络交换功能。
四、配置虚拟化在4VCPUt+4G内存的虚拟机环境中部署KVM虚拟化环境,用于提供创建5台虚拟机的测试环境。
(1)开启CPU虚拟化,配置4个网卡,磁盘空间20GB以上。
如果有物理服务器,可跳过此步骤,直接在物理服务器进行虚拟化环境部署,若在虚拟机中部署,虚拟机至少满足以下配置内容。
(2)安装虚拟化环境
yum install epel-release -y
yum install kvm qemu-kvm virt-install qemu libvirt bridge-utils bash-completion -y
systemctl start libvirtd
systemctl enable libvirtd
(3)配置网络桥接
配置网卡ens34桥接网络为br0
网卡ens34配置文件内容
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=ens34
DEVICE=ens34
ONBOOT=yes
BRIDGE=br0
桥接网口br0配置文件内容
DEVICE=br0
TYPE=Bridge
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.0.100
PREFIX=24
注意:网卡配置文件的其它内容可保留,但至少需要保证以上内容与本文保持一致,IP地址和子网掩码除外。按照同样方法配置其它网络桥接。
桥接网络br1配置信息
[root@cloud network-scripts]# cat ifcfg-ens35
TYPE=Ethernet
BOOTPROTO=none
NAME=ens35
DEVICE=ens35
ONBOOT=yes
BRIDGE=br1
[root@cloud network-scripts]# cat ifcfg-br1
DEVICE=br1
TYPE=Bridge
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.100
PREFIX=24
桥接网络br2配置信息
[root@cloud network-scripts]# cat ifcfg-ens36
TYPE=Ethernet
BOOTPROTO=none
NAME=ens36
DEVICE=ens36
ONBOOT=yes
BRIDGE=br2
[root@cloud network-scripts]# cat ifcfg-br2
DEVICE=br2
TYPE=Bridge
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.2.100
PREFIX=24
桥接网络br3配置信息
[root@cloud network-scripts]# cat ifcfg-ens37
TYPE=Ethernet
BOOTPROTO=none
NAME=ens37
DEVICE=ens37
ONBOOT=yes
BRIDGE=br3
[root@cloud network-scripts]# cat ifcfg-br3
DEVICE=br3
TYPE=Bridge
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.3.100
PREFIX=24
重启服务使配置生效
systemctl restart network
注:如果重启服务报错,可关闭NetworkManager服务,或通过ifdown、ifup进行网络重启。
检查网络桥接
[root@cloud ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c2994f44e no ens34
br1 8000.000c2994f458 no ens35
br2 8000.000c2994f462 no ens36
br3 8000.000c2994f46c no ens37
virbr0 8000.525400c682df yes virbr0-nic
(4)软件包准备
上传centos7镜像到/media目录,用于系统部署
安装vnc viewer工具,用于访问虚拟机控制台。
资料获取方法:关注微信公众号“云实战”,回复“VNC”可获取下载链接。
五、创建虚拟机1.创建虚拟机node1
创建虚拟机node1磁盘镜像
qemu-img create -f qcow2 /data/node1.qcow2 10G
创建虚拟机node1
virt-install --name node1 --vcpus 1 --memory 1024 --disk /data/node1.qcow2 \
--network bridge=br1 --network bridge=br2 --graphics vnc,listen=0.0.0.0 --boot hd \
--cdrom /media/CentOS-7-x86_64-DVD-1708.iso
注:具体参数解析可通过virt-install --help查看,不再赘述。每次创建不同的虚拟机,需注意更改--name,--disk,--network相关参数。按照架构图或规划表进行配置。
访问虚拟机
安装后,通过vnc view可访问虚拟机控制台,访问方式为通过vnc view打开链接:192.168.111.132:5900,如果有多台虚拟机,5900端口依次增加5901、5902等。
如果无法访问,需关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
2.创建虚拟机node2
qemu-img create -f qcow2 /data/node2.qcow2 10G
virt-install --name node2 --vcpus 1 --memory 1024 --disk /data/node2.qcow2 \
--network bridge=br0 --graphics vnc,listen=0.0.0.0 --boot hd \
--cdrom /media/CentOS-7-x86_64-DVD-1708.iso
3.创建虚拟机node3
qemu-img create -f qcow2 /data/node3.qcow2 10G
virt-install --name node3 --vcpus 1 --memory 1024 --disk /data/node3.qcow2 \
--network bridge=br0 --graphics vnc,listen=0.0.0.0 --boot hd \
--cdrom /media/CentOS-7-x86_64-DVD-1708.iso
4.创建虚拟机switch1
qemu-img create -f qcow2 /data/switch1.qcow2 10G
virt-install --name switch1 --vcpus 1 --memory 1024 --disk /data/switch1.qcow2 \
--network bridge=br0 --network bridge=br1 --graphics vnc,listen=0.0.0.0 --boot hd \
--cdrom /media/CentOS-7-x86_64-DVD-1708.iso
5.创建虚拟机switch2
qemu-img create -f qcow2 /data/switch2.qcow2 10G六、虚拟机网络配置
virt-install --name switch2 --vcpus 1 --memory 1024 --disk /data/switch2.qcow2 \
--network bridge=br2 --network bridge=br3 --graphics vnc,listen=0.0.0.0 --boot hd \
--cdrom /media/CentOS-7-x86_64-DVD-1708.iso
根据规划表配置好所有虚拟机的网络ip地址。
1.虚拟机node1网络配置
[root@node1 ~]# cat
/etc/sysconfig/network-scripts/ifcfg-ens3
......
DEVICE=ens3
ONBOOT=yes
IPADDR=192.168.1.101
NETMASK=255.255.255.0
[root@node1 ~]# cat
/etc/sysconfig/network-scripts/ifcfg-ens4
......
DEVICE=ens4
ONBOOT=yes
IPADDR=192.168.2.101
NETMASK=255.255.255.0
注:可将任意1个网口添加网关,但不可同时写2个网关,否则默认路由冲突。
2.虚拟机node2网络配置
[root@node2 ~]# cat
/etc/sysconfig/network-scripts/ifcfg-ens3
......
DEVICE=ens3
ONBOOT=yes
IPADDR=192.168.0.102
NETMASK=255.255.255.0
GATEWAY=192.168.0.254
注:网关必须指向switch1节点同网段的ip地址192.168.0.254
3.虚拟机node3网络配置
[root@node3 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens3
......
DEVICE=ens3
ONBOOT=yes
IPADDR=192.168.3.103
NETMASK=255.255.255.0
GATEWAY=192.168.3.254
注:网关必须指向switch2节点同网段的ip地址192.168.3.254
4.虚拟机switch1配置
[root@switch1 ~]# cat
/etc/sysconfig/network-scripts/ifcfg-ens3
......
DEVICE=ens3
ONBOOT=yes
IPADDR=192.168.0.254
NETMASK=255.255.255.0
[root@switch1 ~]# cat
/etc/sysconfig/network-scripts/ifcfg-ens4
......
DEVICE=ens4
ONBOOT=yes
IPADDR=192.168.1.254
NETMASK=255.255.255.0
编辑文件/etc/sysctl.conf,允许网络流量转发
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
保存后,使参数生效
sysctl -p
注:必须开启网络流量转发功能,否则虚拟机switch1无法模拟交换机实现三层网络交换功能。
5.虚拟机switch2配置
[root@switch2 ~]# cat
/etc/sysconfig/network-scripts/ifcfg-ens3
......
DEVICE=ens3
ONBOOT=yes
IPADDR=192.168.2.254
NETMASK=255.255.255.0
[root@switch2 ~]# cat
/etc/sysconfig/network-scripts/ifcfg-ens4
......
DEVICE=ens4
ONBOOT=yes
IPADDR=192.168.3.254
NETMASK=255.255.255.0
编辑文件/etc/sysctl.conf,允许网络流量转发
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
保存后,使参数生效
sysctl -p
注:必须开启网络流量转发功能,否则虚拟机switch2无法模拟交换机实现三层网络交换功能。
6.环境测试
通过节点node1,可以ping通switch1和switch2的所有ip,说明流量转发生效
ping 192.168.1.254
ping 192.168.2.254
注:node1未配置网关,所以无法ping通192.168.0.254和192.168.3.254
通过node2可以ping通switch1的所有ip,说明流量转发生效
ping 192.168.0.254
ping 192.168.1.254
通过node3可以pingt通switch2的所有ip,说明流量转发生效
ping 192.168.2.254七、配置路由表
ping 192.168.3.254
若实现node1与node2、node3的互相通信,需将node1配置路由表,实现流量转发功能。
注:所有操作在node1进行
编辑/etc/iproute2/rt_tables文件,创建路由表net1和net2,增加内容
252 net2
251 net1
增加路由规则
ip route add default via 192.168.1.254 table net1
ip rule add from 192.168.1.101 table net1
ip route add default via 192.168.2.254 table net2
ip rule add from 192.168.2.101 table net2
所有指向192.168.1.101的流量都遵循路由表net1的路由规则,所有指向192.168.2.101的流量都遵循路由表net2的路由规则。
注:以上路由表创建完成后,只是临时生效,网络或系统重启会导致配置失效。
添加完毕后,即实现双网卡双网关网络配置。
3.检查确认
查看路由规则
ip route
ip rule list
ip route list table net1
ip route list table net2
更多问题欢迎扫码咨询
版权声明
本文仅代表作者观点,不代表博信信息网立场。