本节我们来看如何在实验环境中实施和配置如下 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 口

最新文章

  1. 理解HTTP协议
  2. [IOS]Swift使用SVGKit的记录
  3. git cherry-pick
  4. jq滚动监听-导航滚动
  5. fpmmm(mpm)监控mysql模块安装
  6. BZOJ 3589 动态树(子树操作,链查询)
  7. 你不知道的JavaScript-- 事件流与事件处理
  8. 10g中HASH GROUP BY引起的临时表空间不足
  9. NOI2005瑰丽华尔兹
  10. find the mincost route(floyd变形 无向图最小环)
  11. Django学习(二) Django框架简单搭建
  12. AlertDialog的写法
  13. 【转】使用PowerDesigner的建模创建升级管理数据库
  14. Presto集群部署和配置
  15. Django ListView实现分页
  16. extern和include的作用
  17. js模拟浏览器加载效果 pace.js 中文官方文档
  18. mysql5.6.34-debug Source distribution在树莓派下编译的几个错误
  19. innotop监控mysql
  20. poj_1681_高斯消元

热门文章

  1. Javascript数组常用方法
  2. 从零开始学 Java - 我放弃了 .NET ?
  3. 重构sql server的sys.sp_helptext存储
  4. “WPF老矣,尚能饭否”—且说说WPF今生未来(上):担心
  5. 实体之间的关系【Entity Relationships】(EF基础系列篇9)
  6. jQuery带控制按钮向上和向下滚动文本列表
  7. Win10计算器在哪里?三种可以打开Win10计算器的方法图文介绍
  8. LA4287--tarjan
  9. 手动获取spring的ApplicationContext和bean对象
  10. 5、ASP.NET MVC入门到精通——NHibernate代码映射