kvm虚拟化网络管理(5)

一、Linux Bridge网桥管理

网络虚拟化是虚拟化技术中最复杂的部分,也是非常重要的资源。

第一节中我们创建了一个名为br0的linux-bridge网桥,如果在此网桥上新建一台vm,如下图:

VM2 的虚拟网卡 vnet1 也连接到了 br0 上。 现在 VM1 和 VM2 之间可以通信,同时 VM1 和 VM2 也都可以与外网通信。

查看网络状态:

用brctl show 显示当前网桥连接状态:

brctl命令详解:

二、VLAN介绍

  LAN 表示 Local Area Network,本地局域网,通常使用 Hub 和 Switch 来连接 LAN 中的计算机。一般来说,两台计算机连入同一个 Hub 或者 Switch 时,它们就在同一个 LAN 中。
  一个 LAN 表示一个广播域。 其含义是:LAN 中的所有成员都会收到任意一个成员发出的广播包。
  VLAN 表示 Virtual LAN。一个带有 VLAN 功能的switch 能够将自己的端口划分出多个 LAN。计算机发出的广播包可以被同一个 LAN 中其他计算机收到,但位于其他 LAN 的计算机则无法收到。 简单地说,VLAN 将一个交换机分成了多个交换机,限制了广播的范围,在二层将计算机隔离到不同的 VLAN 中。
  比方说,有两组机器,Group A 和 B,我们想配置成 Group A 中的机器可以相互访问,Group B 中的机器也可以相互访问,但是 A 和 B 中的机器无法互相访问。 一种方法是使用两个交换机,A 和 B 分别接到一个交换机。 另一种方法是使用一个带 VLAN 功能的交换机,将 A 和 B 的机器分别放到不同的 VLAN 中。

  VLAN 的隔离是二层上的隔离,A 和 B 无法相互访问指的是二层广播包(比如 arp)无法跨越 VLAN 的边界。但在三层上(比如IP)是可以通过路由器让 A 和 B 互通的。
  现在的交换机几乎都是支持 VLAN 的。 通常交换机的端口有两种配置模式: AccessTrunk。如下图

Access 口
  这些端口被打上了 VLAN 的标签,表明该端口属于哪个 VLAN。 不同 VLAN 用 VLAN ID 来区分,VLAN ID 的 范围是 1-4096。 Access 口都是直接与计算机网卡相连的,这样从该网卡出来的数据包流入 Access 口后就被打上了所在 VLAN 的标签。 Access 口只能属于一个 VLAN。
Trunk 口
  假设有两个交换机 A 和 B。 A 上有 VLAN1(红)、VLAN2(黄)、VLAN3(蓝);B 上也有 VLAN1、2、3,那如何让 AB 上相同 VLAN 之间能够通信呢?
办法是将 A 和 B 连起来,而且连接 A 和 B 的端口要允许 VLAN1、2、3 三个 VLAN 的数据都能够通过。这样的端口就是Trunk口了。 VLAN1, 2, 3 的数据包在通过 Trunk 口到达对方交换机的过程中始终带着自己的 VLAN 标签。

三、Linux Bridge实现Vlan的原理

KVM 虚拟化环境下实现 VLAN 架构,如下图

  eth0 是宿主机上的物理网卡,有一个命名为 eth0.10 的子设备与之相连。 eth0.10 就是 VLAN 设备了,其 VLAN ID 就是 VLAN 10。 eth0.10 挂在命名为 brvlan10 的 Linux Bridge 上,虚机 VM1 的虚拟网卡 vent0 也挂在 brvlan10 上。

  这样的配置其效果就是: 宿主机用软件实现了一个交换机(当然是虚拟的),上面定义了一个 VLAN10。 eth0.10,brvlan10 和 vnet0 都分别接到 VLAN10 的 Access口上。而 eth0 就是一个 Trunk 口。VM1 通过 vnet0 发出来的数据包会被打上 VLAN10 的标签。
eth0.10 的作用是:定义了 VLAN10
brvlan10 的作用是:Bridge 上的其他网络设备自动加入到 VLAN10 中

增加一个 VLAN20,如下图

  这样虚拟交换机就有两个 VLAN 了,VM1 和 VM2 分别属于 VLAN10 和 VLAN20。

  对于新创建的虚机,只需要将其虚拟网卡放入相应的 Bridge,就能控制其所属的 VLAN。
  VLAN 设备总是以母子关系出现,母子设备之间是一对多的关系。 一个母设备(eth0)可以有多个子设备(eth0.10,eth0.20 ……),而一个子设备只有一个母设备。

四、Linux Bridge实现Vlan

1、查看核心是否提供VLAN功能

[[email protected] ~]# dmesg | grep -i 802

或者检查/proc/net/vlan目录是否存在;如果没有提供VLAN功能,/proc/net/vlan目录是不存在的。

如果8021q模块没有载入系统,则可以通过使用modprobe模组命令载入802.1q模组,并利用lsmod命令确认模组是否已经载入到核心内。

[[email protected] ~]# modprobe 8021q
[[email protected] ~]# lsmod | grep 8021q

设置开机载入8021q模块(可选)
在/etc/sysconfig/modules下增加一个8021q.modules文件,文件内容为modprobe 8021q

vim /etc/sysconfig/modules/8021q.modules
modprobe 8021q

2、安装用于查看VLAN配置的工具---vconfig

提前装备好vconfig-1.9-16.el7.x86_64.rpm

[[email protected] ~]# rpm -ivh vconfig-1.9-16.el7.x86_64.rpm 

3、创建VLAN接口

(1)创建vlan接口前,在设备上添加一块网卡ens37。

(2)网络配置如图:

注意:将BOOTPROTO=static

(3)基于网卡ens37建立vlan10,vlan20接口:ens37.10,ens37.20:

vconfig add ens37 10
vconfig add ens37 20

vconfig命令:

(4)创建ens37.10接口配置文件

[[email protected] ~]# cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]# cp ifcfg-ens37 ifcfg-ens37.10
[[email protected] network-scripts]# vim ifcfg-ens37.10
VLAN=yes
TYPE=vlan
PHYSDEV=ens37
VLAN_ID=10
NAME=ens37.10
ONBOOT=yes
ZONE=trusted
DEVICE=ens37.10
BRIDGE=brvlan-10

(5)创建ens37.20接口配置文件

[[email protected] network-scripts]# cp ifcfg-ens37.10 ifcfg-ens37.20
[[email protected] network-scripts]# vim ifcfg-ens37.20
VLAN=yes
TYPE=vlan
PHYSDEV=ens37
VLAN_ID=20
NAME=ens37.20
ONBOOT=yes
ZONE=trusted
DEVICE=ens37.20
BRIDGE=brvlan-20

4、分别建立网桥brvlan-10,brvlan-20

brctl addbr brvlan-10
brctl addbr brvlan-20

5、编辑网桥brvlan-10和brvlan-20配置文件:

#vim ifcfg-brvlan-10
TYPE=bridge
BOOTPROTO=static
NAME=brvlan-10
DEVICE=brvlan-10
ONBOOT=yes
#vim ifcfg-brvlan-20
TYPE=bridge
BOOTPROTO=static
NAME=brvlan-20
DEVICE=brvlan-20
ONBOOT=yes

6、将网桥brvlan-10接到网口ens37.10,brvlan-20接到网口ens37.20

brctl addif brvlan-10 ens34.10
brctl addif brvlan-20 ens34.20

7、重新启动网络服务

systemctl restart network
[[email protected] network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 00:0c:29:de:8b:ff brd ff:ff:ff:ff:ff:ff
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:de:8b:09 brd ff:ff:ff:ff:ff:ff
    inet 192.168.6.130/24 brd 192.168.6.255 scope global noprefixroute ens37
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fede:8b09/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:99:d3:26 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:99:d3:26 brd ff:ff:ff:ff:ff:ff
7: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether fe:54:00:16:f2:bd brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fe16:f2bd/64 scope link
       valid_lft forever preferred_lft forever
9: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master brvlan-10 state UP group default qlen 1000
    link/ether 00:0c:29:de:8b:09 brd ff:ff:ff:ff:ff:ff
10: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master brvlan-20 state UP group default qlen 1000
    link/ether 00:0c:29:de:8b:09 brd ff:ff:ff:ff:ff:ff
11: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:29:de:8b:ff brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.11/24 brd 192.168.11.255 scope global noprefixroute br0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fede:8bff/64 scope link
       valid_lft forever preferred_lft forever
12: brvlan-10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:29:de:8b:09 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20c:29ff:fede:8b09/64 scope link
       valid_lft forever preferred_lft forever
13: brvlan-20: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:29:de:8b:09 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20c:29ff:fede:8b09/64 scope link
       valid_lft forever preferred_lft forever

五、vlan模式测试虚机

先将NetworkManager服务关闭
1、在宿主机中已经提前创建好了虚机 VM1
在 virt-manager 中将 VM1 的虚拟网卡挂到 brvlan-10 上

(2)从VM1克隆一台虚机VM2
virst-clone -o vm1 -n vm2 -f /var/lib/libvirt/images/vm2.qcow2

(3)启动VM1和VM2,并配置ip
(4)查看 Bridge,发现 brvlan10 已经连接了 vnet0 vnet1设备。

原文地址:https://www.cnblogs.com/renyz/p/11644298.html

时间: 2024-10-10 01:21:52

kvm虚拟化网络管理(5)的相关文章

kvm虚拟化网络管理(4)

一.Linux Bridge网桥管理 网络虚拟化是虚拟化技术中最复杂的部分,也是非常重要的资源.第一节中我们创建了一个名为br0的linux-bridge网桥,如果在此网桥上新建一台vm,如下图:VM2 的虚拟网卡 vnet1 也连接到了 br0 上. 现在 VM1 和 VM2 之间可以通信,同时 VM1 和 VM2 也都可以与外网通信. 查看网络状态: 用brctl show 显示当前网桥连接状态: brctl命令: 二.Vlan介绍 LAN 表示 Local Area Network,本地局

KVM虚拟化管理平台VManagePlatform

VManagePlatform是什么? 一个KVM虚拟化管理平台 开发语言与框架: 编程语言:Python2.7 + HTML + JScripts 前端Web框架:Bootstrap 后端Web框架:Django 后端Task框架:Celery + Redis VManagePlatform有哪些功能? Kvm虚拟机生产周期管理功能 资源利用率(如:CPU.MEM.磁盘.网络) 实例控制(如:生存周期管理.快照技术,Web Console等等) 设备资源控制(如:在线调整内存.CPU资源.热添

CentOS 7部署KVM虚拟化环境之一架构介绍

----本文修改整理自网络,非本人原创. 虚拟化介绍 虚拟化(Virtualization)是一种资源管理技术,将计算机的各种试题资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现出来.打破实体结构间的不可切割的障碍,使的用户可以比原本的组态更好的方式来应用这些资源.这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制.一般所指的虚拟化资源包括计算能力和资料存储. 虚拟化技术中大多数人接触的最早且最多的应该就是虚拟机(Virtual Machine),它是通过软件模拟的具有完

kvm虚拟化技术应用实战

本文根据上课笔记整理,大家都知道云计算的基础就是虚拟化,而开源的虚拟化基本以kvm技术为主导,因此kvm技术已成为运维工程师必备的技术,也是云时代必不可少的技术 在介绍kvm之前 我们先来了解一下vnc这个软件,后面安装kvm需要vnc来支持 1.vnc的安装及使用 # yum -y install tigervnc-server 首次启动 # vncserver :1 会提示输入两次密码 然后编辑/root/.vnc/xstartup,将最后一行twm替换为gnome-session或者sta

KVM虚拟化笔记(七)------kvm虚拟机时间配置

由于在虚拟化环境中,虚拟机在长时间的运行过程中,时间会变慢,通常的做法是配置ntpdate定时与时间服务器进行时间同步的计划任务.Kvm虚拟机默认采用的是UTC时间,需要进行专门的修改,还有考虑时间同步的问题,具体步骤如下: 1,kvm虚拟机修改时间配置文件 kvm虚拟机采用utc时间,需要先修改配置文件使用kvm虚拟机的时间与虚拟主机同步. [[email protected] qemu]# virsh edit hadoop3 最后重启下虚拟机 2. 关于kvm虚拟机时间问题解决思路 (1)

KVM虚拟化搭建及其KVM中LVM扩容

KVM虚拟化搭建及其KVM中LVM扩容 前言: 公司项目方最近有两台物理服务器系统分别为CentOS 7.2.需要部署KVM虚拟化,第一台服务器A需要虚拟出三台虚拟机(均为CentOS 7.2系统),服务器B上需要虚拟出三台CentOS 7.2 系统和两台windows server2012 系统.其中六台CentOS 7.2 虚拟机需要部署我们自己的平台,两台windows分别部署客户的平台.下面来为大家说一下KVM虚拟化的搭建,以及创建虚拟机的两种办法,及其操作使用.     KVM小课补:

RH124-15 使用KVM虚拟化

第十五章使用KVM虚拟化 15.1 管理本地的虚拟化主机 什么叫虚拟化? redhat的虚拟化常品: KVM RHEV OpenStack 使用kvm虚拟化需要的条件: rhel6以上的64位系统 cpu必须支持硬件虚拟化  vmx,xvm #grep -E 'vmx|xvm' /proc/cpuinfo bios打开cpu虚拟化的支持 需要的软件包 核心包 qemu-kvmqemu-img 工具包virt-manager libvirt libvirt-python libvirt-clien

KVM虚拟化笔记(一)------kvm虚拟化环境安装

在安装虚拟化环境的时候,首先查看下该服务器的硬件配置和环境,具体操作如下: (一)检查硬件的相关情况: 1,查看cpu型号,物理cpu颗数, [[email protected] ~]#  cat /proc/cpuinfo | grep name | cut -d: -f2 | uniq -c       2  Intel(R) Core(TM) i3-4150 CPU @ 3.50GHz [[email protected] ~]# cat /proc/cpuinfo | grep phys

kvm虚拟化存储池配置

定义存储池目录 [[email protected] kvmimg]# virsh pool-define-as vmdisk --type dir --target /data/kvmimg/ Pool vmdisk defined 2.创建已定义的存储池 [[email protected] kvmimg]# virsh pool-build vmdisk Pool vmdisk built 3.查看已定义的存储池,存储池不激活无法使用 [[email protected] kvmimg]#