学堂 学堂 学堂公众号手机端

KVM实现三层网络

lewis 1年前 (2024-04-10) 阅读数 16 #技术
一、背景

由于测试双网卡双网关功能实现,没有测试环境。所以需要在虚拟机中进行模拟,以验证操作的正确性。

二、环境准备

准备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

更多问题欢迎扫码咨询

版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门