本节我们来看如何在实验环境中实施和部署如下的VLAN 网络
 
 
配置VLAN 10 和 VLAN 20
 
root@ubuntu:~# cat /etc/network/interfaces | grep '^[^#]'
source /etc/network/interfaces.d/*
 
auto lo
iface lo inet loopback
 
auto ens160
iface ens160 inet static
 
auto br0
iface br0 inet static
    bridge_stp off
    bridge_waitport 0
    bridge_fd 0
    bridge_ports ens160
    address 10.12.31.211
    netmask 255.255.252.0
    network 10.12.28.0
    broadcast 10.12.31.255
    gateway 10.12.28.6
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 10.12.28.6
    up route add -net 172.22.0.0 netmask 255.255.0.0 gw 10.12.28.1 br0
 
auto ens160.10
iface ens160.10 inet manual
    vlan-raw-device ens160
 
auto br10
iface br10 inet manual
    bridge_stp off
    bridge_waitport 0
    bridge_fd 0
    bridge_ports ens160.10
    
auto ens160.20
iface ens160.20 inet manual
    vlan-raw-device ens160
 
auto br20
iface br20 inet manual
    bridge_stp off
    bridge_waitport 0
    bridge_fd 0
    bridge_ports ens160.20
 
root@ubuntu:~# reboot
 
root@ubuntu:~# ifconfig
br0       Link encap:Ethernet  HWaddr 00:50:56:87:4c:70  
          inet addr:10.12.31.211  Bcast:10.12.31.255  Mask:255.255.252.0
          inet6 addr: fe80::250:56ff:fe87:4c70/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1268 errors:0 dropped:0 overruns:0 frame:0
          TX packets:216 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:79929 (79.9 KB)  TX bytes:30730 (30.7 KB)
 
br10      Link encap:Ethernet  HWaddr 00:50:56:87:4c:70  
          inet6 addr: fe80::250:56ff:fe87:4c70/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:3349 (3.3 KB)
 
br20      Link encap:Ethernet  HWaddr 00:50:56:87:4c:70  
          inet6 addr: fe80::250:56ff:fe87:4c70/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:1766 (1.7 KB)
 
ens160    Link encap:Ethernet  HWaddr 00:50:56:87:4c:70  
          inet6 addr: fe80::250:56ff:fe87:4c70/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1658 errors:0 dropped:5 overruns:0 frame:0
          TX packets:335 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:271880 (271.8 KB)  TX bytes:44746 (44.7 KB)
 
ens160.10 Link encap:Ethernet  HWaddr 00:50:56:87:4c:70  
          inet6 addr: fe80::250:56ff:fe87:4c70/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:58 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:6698 (6.6 KB)
 
ens160.20 Link encap:Ethernet  HWaddr 00:50:56:87:4c:70  
          inet6 addr: fe80::250:56ff:fe87:4c70/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:3349 (3.3 KB)
 
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:88 errors:0 dropped:0 overruns:0 frame:0
          TX packets:88 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:6312 (6.3 KB)  TX bytes:6312 (6.3 KB)
 
virbr0    Link encap:Ethernet  HWaddr 00:00:00:00:00:00  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
 
root@ubuntu:~# brctl show
bridge name    bridge id        STP enabled    interfaces
br0        8000.005056874c70    no        ens160
br10        8000.005056874c70    no        ens160.10
br20        8000.005056874c70    no        ens160.20
virbr0        8000.000000000000    yes        
 
 
创建VM1,网络接到 VLAN 10 上
 
 
root@ubuntu:~# virsh domiflist VM1
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet0      bridge     br10       rtl8139     52:54:00:f7:58:9e
 
root@ubuntu:~# brctl show
bridge name    bridge id        STP enabled    interfaces
br0        8000.005056874c70    no        ens160
br10        8000.005056874c70    no        ens160.10
                            vnet0
br20        8000.005056874c70    no        ens160.20
virbr0        8000.000000000000    yes        
 
 
创建VM2,网络接到 VLAN 20 上
 
 
root@ubuntu:~# virsh domiflist VM2
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet1      bridge     br20       rtl8139     52:54:00:d0:ac:1a
 
root@ubuntu:~# brctl show
bridge name    bridge id        STP enabled    interfaces
br0        8000.005056874c70    no        ens160
br10        8000.005056874c70    no        ens160.10
                            vnet0
br20        8000.005056874c70    no        ens160.20
                            vnet1
virbr0        8000.000000000000    yes        
 
 
验证 VLAN 的隔离性
 
配置 VM1 IP 192.168.9.1/24
 
配置 VM2 IP 192.168.9.2/24
 
用 ping 验证网络连通性
 
 
 
最后测试结果 VM1 和 VM2 网络是不通的
 
 
原因如下:
 
    1、VM2 向 VM1 发ping 包之前,需要知道 VM1 的IP 192.168.9.1 对应的MAC地址。VM2 会在网络中广播ARP包,其作用就是问“谁知道 192.168.9.1 的MAC 地址是多少?”
 
    2、ARP 是二层协议,VLAN的隔离作用使得 ARP 只能在 VLAN20的范围内广播,只有 br20 和 ens160.20 能收到,VLAN 10 里的设备收不到。VM1 收不到 VM2 的请求信息,更不会回复 VM2
 
    3、VM2 拿不到 VM1 的MAC,也就ping不通 VM1 了
 
Linux Bridge + VLAN = 虚拟交换机
 
现在对 KVM 的网络虚拟化做个总结:
 
    1、物理交换机存在多个VLAN,每个VLAN拥有多个端口,同一VLAN端口之间可以交换转发,不同VLAN端口之间隔离。所以交换机包含两层功能:交换和隔离
 
    2、Linux 的 VLAN 设备实现的是隔离功能,但没有交换功能。一个VLAN母设备(比如eth0)不能拥有两个相同ID 的VLAN 子设备,因此也就不可能出现数据交换的情况。
 
    3、Linux Bridge 专门实现交换功能。将同一 VLAN 的子设备都挂载到 Bridge 上,设备之间就可以交换数据了。
 
总结起来,Linux Bridge 加 VLAN 在功能层面完整模拟现实世界里的二层交换机。eth0 相当于虚拟交换机上的 Trunk 口,允许 vlan10 和 vlan 20数据通过。
 
ens160.10    vnet0    和 br10 都可以看做 vlan10 的 access 口
ens160.20    vnet1    和 br20 都可以看做 vlan20 的 access口
 
 

O013、动手实践Linux VLAN的更多相关文章

  1. 动手实践 Linux VLAN - 每天5分钟玩转 OpenStack(13)

    本节我们来看如何在实验环境中实施和配置如下 VLAN 网络 配置 VLAN 编辑 /etc/network/interfaces,配置 eth0.10.brvlan10.eth0.20 和 brvla ...

  2. 动手实践 Linux VLAN

    本节我们来看如何在实验环境中实施和配置如下 VLAN 网络 配置 VLAN 编辑 /etc/network/interfaces,配置 eth0.10.brvlan10.eth0.20 和 brvla ...

  3. [转帖]Docker从入门到动手实践

    Docker从入门到动手实践 https://www.cnblogs.com/nsky/p/10853194.html dockerfile的图很好呢. 但是自己没有做实验 , 其实知识都挺好. do ...

  4. 【原创 深度学习与TensorFlow 动手实践系列 - 4】第四课:卷积神经网络 - 高级篇

    [原创 深度学习与TensorFlow 动手实践系列 - 4]第四课:卷积神经网络 - 高级篇 提纲: 1. AlexNet:现代神经网络起源 2. VGG:AlexNet增强版 3. GoogleN ...

  5. 【原创 深度学习与TensorFlow 动手实践系列 - 3】第三课:卷积神经网络 - 基础篇

    [原创 深度学习与TensorFlow 动手实践系列 - 3]第三课:卷积神经网络 - 基础篇 提纲: 1. 链式反向梯度传到 2. 卷积神经网络 - 卷积层 3. 卷积神经网络 - 功能层 4. 实 ...

  6. 【原创 Hadoop&Spark 动手实践 12】Spark MLLib 基础、应用与信用卡欺诈检测系统动手实践

    [原创 Hadoop&Spark 动手实践 12]Spark MLLib 基础.应用与信用卡欺诈检测系统动手实践

  7. 【原创 Hadoop&Spark 动手实践 13】Spark综合案例:简易电影推荐系统

    [原创 Hadoop&Spark 动手实践 13]Spark综合案例:简易电影推荐系统

  8. 【原创 Hadoop&Spark 动手实践 8】Spark 应用经验、调优与动手实践

    [原创 Hadoop&Spark 动手实践 7]Spark 应用经验.调优与动手实践 目标: 1. 了解Spark 应用经验与调优的理论与方法,如果遇到Spark调优的事情,有理论思考框架. ...

  9. 【原创 Hadoop&Spark 动手实践 9】Spark SQL 程序设计基础与动手实践(上)

    [原创 Hadoop&Spark 动手实践 9]SparkSQL程序设计基础与动手实践(上) 目标: 1. 理解Spark SQL最基础的原理 2. 可以使用Spark SQL完成一些简单的数 ...

随机推荐

  1. javascript中“use strict”的好处和坏处

    1.为什么使用严格模式? 消除javascript语法的一些不合理.不严谨之处,减少一些怪异行为: 消除代码运行的不安全之处,保证代码的运行: 提高编译效率,增加运行效率: 为未来新版本的javasc ...

  2. java获取来访者mac信息

    根据IP获取对应的Mac地址,支持win10+Linux package com.simonjia.util.other; /** * @Author: SimonHu * @Date: 2019/6 ...

  3. 品牌logo在EDM数据营销中的运用

    作为让客户识别并记住的“门面”, 品牌LOGO的设计与宣导一直都是品牌化输出的重中之重 . 而在邮件营销中,为了让用户在浏览邮件内容前先有品牌概念,营销人员在放置LOGO时常常仅把显眼突出纳入考虑因素 ...

  4. GsonForamt插件的使用

    第一步:在AS中安装GsonForamt插件 第二步:创建bean类 第三步: 在bean类体中做如下操作即可快速创建bean类 鼠标右击按图选择: 将需要解析的json字符串复制进去 设置界面:可以 ...

  5. super()使用方法

    super()使用方法   我们经常在类的继承当中使用super(), 来调用父类中的方法.例如下面: class A: def func(self): print('OldBoy') class B ...

  6. Debian10服务器安装

    对于使用惯windows系统的人来说,刚开始接触使用linux系统一定是很不习惯,因为使用环境的变化经常会出现一些错误.当然,对于我来说,我也是刚刚才开始接触Linux,对此,有些地方想不到的,可以多 ...

  7. python基础知识(列表详解)

    列表(list) 列表中可以存入整数.实数.布尔值.字符串.序列.对象 可变序列 列表  []  元素间隔用   ,号分隔 列表的创建和删除 使用赋值运算符直接创建列表 listname = [元素1 ...

  8. python-Web-django-图片上传

    建路由 创建方法 渲染页面 下载plupload插件.将插件放在项目根目录下的static下 写页面,引入js,写html 这个容器:放上传的图片 当上传后,需要ul里放3要素: 元素1:隐藏Inpu ...

  9. python-爬虫-bs4-BeautifulSoup

    代码的使用流程: 核心思想:将html文档转换成Beautiful对象,然后调用该对象中的 属性和方法进行html文档指定内容的定位查找. 1 导包:from bs4 import Beautiful ...

  10. C关于字符串操作的库函数实现总结

    常用C关于字符串操作的库函数实现: //获取字符串长度 int Strlen(const char* s) { assert(s != NULL); ; while (*s++ != '\0') { ...