zoukankan      html  css  js  c++  java
  • KVM虚拟化网络管理

    Linux Bridge实现 Vlan原理

    VLAN

    LAN 表示 Local Area Network,本地局域网,通常使用 Hub 和 Switch 来 连接 LAN 中的计算机。一般来说,两台计算机连入同一个 Hub 或者 Switch 时,它们就在同一个 LAN 中。一个 LAN 表示一个广播域。 其含义是:LAN 中的所有成员都会收到任意一 个成员发出的广播包。

    VLAN 表示 Virtual LAN。一个带有 VLAN 功能的switch 能够将自己的端口 划分出多个 LAN。计算机发出的广播包可以被同一个 LAN 中其他计算机收到, 但位于其他 LAN 的计算机则无法收到。 简单地说,VLAN 将一个交换机分成 了多个交换机,限制了广播的范围,在二层将计算机隔离到不同的 VLAN 中。VLAN 的隔离是二层上的隔离,A 和 B 无法相互访问指的是二层广播包无法跨越 VLAN 的边界。但在三层上(比如IP)是可以通过路由器让 A 和 B 互通的

    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 标签。

    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 …… ),而一个子设备只有一个母设备。

    Bridge实现Vlan

    1、查看核心是否提供VLAN 功能,执行 :# dmesg | grep -i 802 ,或者检查/proc/net/vlan目录是否存在。 如果沒有提供VLAN 功能,/proc/net/vlan目录是不存在的。

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

    # modprobe 8021q

    # lsmod | grep 8021q

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

    # vi /etc/sysconfig/modules/8021q.modules

    modprobe 8021q

    2、安装查看用于查看Vlan配置的工具——vconfig

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

    #rpm -ivh vconfig-1.9-16.el7.x86_64

    .rpm #rpm -qa vconfig

    3、创建vlan接口 创建vlan接口前,在设备 上添加一块网卡ens37

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

    #vconfig add ens37 10

    #vconfig add ens37 20

    编辑网卡文件

    #vim ifcfg-ens37.10         #vim ifcfg-ens37.20

    VLAN=yes                         VLAN=yes

    TYPE=vlan                        TYPE=vlan

    PHYSDEV=ens37              PHYSDEV=ens37

    VLAN_ID=10                     VLAN_ID=20

    NAME=ens37.10              NAME=ens37.20

    ONBOOT=yes                  ONBOOT=yes

    ZONE=trusted                  ZONE=trusted

    DEVICE=ens37.10           DEVICE=ens37.20

    BRIDGE=brvlan-10          BRIDGE=brvlan-20

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

    #brctl addbr brvlan-10

    #brctl addbr brvlan-20

    配置网桥brvlan-10、brvlan-20的配置文件:

    #vim ifcfg-brvlan-10                       #vim ifcfg-brvlan-20

    TYPE=bridge                                 TYPE=bridge

    BOOTPROTO=static                     BOOTPROTO=static

    NAME=brvlan-10                           NAME=brvlan-20

    DEVICE=brvlan-10                        DEVICE=brvlan-20

    ONBOOT=yes                               ONBOOT=yes 

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

    #brctl addif brvlan-10 ens37.10

    #brctl addif brvlan-20 ens37.20 

    6、重新启动网络服务: #systemctl restart network 

    VLAN模式测试虚机

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

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

    注:virt-clone命令不能用时,进行安装:yum install virt* -y

    3、启动VM1和VM2,并配置ip

    4、查看 Bridge,发现 brvlan10 已经连接了 vnet0 vnet1设备。

    5、验证vlan的联通性和隔离性

  • 相关阅读:
    ExtJs中ComboBox使用之技巧
    Ethernet帧结构
    Sqlite修改表
    Solr系列:Linux下部署Solr
    Ethernet帧的接收流程
    使用SQLite作为Quartz.Net的Job Store
    Quartz.Net的一个Bug
    获取程序集的Public key token
    SQLite数据类型
    shell取出多列文件中某一列重复的数据
  • 原文地址:https://www.cnblogs.com/zxy-5257/p/10108196.html
Copyright © 2011-2022 走看看