本节我们来看如何在实验环境中实施和配置如下 VLAN 网络

配置 VLAN

编辑 /etc/network/interfaces,配置 eth0.10、brvlan10、eth0.20 和 brvlan20。

下面用 vmdiff 展示了对 /etc/network/interfaces 的修改

重启宿主机,ifconfig 各个网络接口

用 brctl show 查看当前 Linux Bridge 的配置。
eth0.10 和 eth0.20 分别挂在 brvlan10 和 brvlan20上 了

在宿主机中已经提前创建好了虚机 VM1 和 VM2,现在都处于关机状态

配置 VM1

在 virt-manager 中将 VM1 的虚拟网卡挂到 brvlan10 上。

启动 VM1

查看 Bridge,发现 brvlan10 已经连接了一个 vnet0 设备

通过 virsh 确认这就是 VM1 的虚拟网卡。

配置VM2

类似的,将 VM2 的网卡挂在 brvlan20 上

启动 VM2

查看 Bridge,发现 brvlan20 已经连接了一个 vnet1 设备

通过 virsh 确认这就是 VM2 的虚拟网卡。

验证 VLAN 的隔离性

为了验证 VLAN10 和 VLAN20 之间的隔离,我们为 VM1 和 VM2 配置同一网段的 IP。

配置 VM1 的 IP

配置 VM2 的 IP

Ping 测试结果: VM1 与 VM2 是不通的

原因如下:
1. VM2 向 VM1 发 Ping 包之前,需要知道 VM1 的 IP 192.168.100.10 所对应的 MAC 地址。VM2 会在网络上广播 ARP 包,其作用就是问 “谁知道 192.168.100.10 的 MAC 地址是多少?”
2. ARP 是二层协议,VLAN 的隔离作用使得 ARP 只能在 VLAN20 范围内广播,只有 brvlan20 和 eth0.20 能收到,VLAN10 里的设备是收不到的。VM1 无法应答 VM2 发出的ARP包。
3. VM2 拿不到 VM1 vnet0 的 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 和 vlan20 的数据通过
eth0.10,vent0 和 brvlan10 都可以看着 vlan10 的 access 口
eth0.20,vent1 和 brvlan20 都可以看着 vlan20 的 access 口

动手实践 Linux VLAN - 每天5分钟玩转 OpenStack(13)的更多相关文章

  1. 动手实践虚拟网络 - 每天5分钟玩转 OpenStack(10)

    本节将演示如何在实验环境中实现下图所示的虚拟网络 配置 Linux Bridge br0 编辑 /etc/network/interfaces,配置 br0. 下面用 vimdiff 展示了对 /et ...

  2. 制作 OpenStack Linux 镜像 - 每天5分钟玩转 OpenStack(151)

    这是 OpenStack 实施经验分享系列的第 1 篇. OpenStack 的 instance 是通过 Glance 镜像部署的,所以准备镜像是必须要做的工作.本节介绍 Linux 镜像的制作方法 ...

  3. Linux 如何实现 VLAN - 每天5分钟玩转 OpenStack(12)

    LAN 表示 Local Area Network,本地局域网,通常使用 Hub 和 Switch 来连接 LAN 中的计算机.一般来说,两台计算机连入同一个 Hub 或者 Switch 时,它们就在 ...

  4. 动手实践 Linux VLAN

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

  5. O013、动手实践Linux VLAN

    参考https://www.cnblogs.com/CloudMan6/p/5326737.html   本节我们来看如何在实验环境中实施和部署如下的VLAN 网络  

  6. 在 ML2 中配置 Vlan Network- 每天5分钟玩转 OpenStack(93)

    上一节我们学习了 Neutron Vlan Network 的原理,今天讨论如何在 ML2 配置中 enable 它. 首先在 /etc/neutron/plugins/ml2/ml2_conf.in ...

  7. 实践 config drive - 每天5分钟玩转 OpenStack(170)

    如果 instance 无法通过 metadata service 获取 metadata(无 DHCP 或者 nova-api-metadata 服务),instance 还可以通过 config ...

  8. FWaaS 实践: 允许 ssh - 每天5分钟玩转 OpenStack(119)

    上一节应用了无规则的虚拟防火墙,不允许任何流量通过. 今天我们会在防火墙中添加一条规则,允许 ssh.最后我们会对安全组和 FWaaS 作个比较. 下面我们添加一条 firewall rule:允许 ...

  9. 实践 Neutron FWaaS - 每天5分钟玩转 OpenStack(118)

    前面我们学习了 FWaaS 的理论知识,今天将通过实验来学习 FWaaS. 在我们的实验环境中,有两个 instance: cirros-vm1(172.16.100.3) 和 cirros-vm2( ...

随机推荐

  1. Sql Server之使用T_SQL创建,修改,查看数据库信息

    一.使用Transact_SQL创建数据库 Transact_SQL语法如下:  create database database_name   [ on     [primary]  [<fi ...

  2. GO语言面向对象

    当初开发go语言的时候就是因为C++的特性太过于繁杂,从而使得很多C++的开发者因为C++的特性而头疼,go语言成功的精简了C++的特性,使其很简洁,很少的特性,却可以完成很多的事情. go语言中并没 ...

  3. SQL Server时间粒度系列

        工作中经常遇到针对业务部门提出不同时间粒度(年.季度.月.周.日等等日期时间粒度,以下简称时间粒度)的数据统计汇总任务,也看到不少博友针对这方便的博文,结合SQL Server的日期时间函数和 ...

  4. [Access] C# 通过 COM 组件访问 Access 文件

    说明: 1,采用 dynamic 调用 COM 组件,适用于 .NET 4.0 以上支持 dynamic 版本的才可以: 2,执行速度不敢恭维,只是因为要用于 Silverlight OOB 模式中才 ...

  5. hostingEnvironment与宿主环境

    定义用来控制应用程序宿主环境的行为的配置设置. 配置如下 <hostingEnvironment idleTimeout="HH:MM:SS" shadowCopyBinAs ...

  6. sqlserver 时间格式函数详细

    一.时间函数 在使用存储过程,sql函数的时候,会遇到一些对时间的处理.比如时间的获取与加减.这里就用到了sql自带的时间函数.下面我列出这些函数,方便日后记忆,使用. --getdate 获取当前时 ...

  7. Java中, for循环经典例子

    循环的两种应用:穷举和迭代. break跳出整个循环 一.穷举:将所有可能的情况都走一遍,用if筛选出符合条件. 百鸡百钱: 一只公鸡1文钱,一只母鸡2文钱,一只小鸡半文钱,需要买100只鸡, 正好花 ...

  8. 使用NPOI读取Excel到DataTable

    一.NPOI介绍: 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office ...

  9. Java中的可变长参数

    可变长参数的定义 与一般方法没多大差别,只不过形参多了...(三个点) 方法名(数据类型 ... 变量名){} 小案例: public class ParamDemo { public static ...

  10. JavaScript时间处理之几个月前或几个月后的指定日期

    在平常项目开发过程中,经常会遇到需要在JavaScript中处理时间的情况,无非两种(1,逻辑处理  2,格式转换处理).当然要说相关技术博,园子里闭着眼睛都能抓一把,但是我要做的是:既然有幸被我碰到 ...