Linux 如何实现 VLAN - 每天5分钟玩转 OpenStack(12)
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 的。 通常交换机的端口有两种配置模式: Access 和 Trunk。看下图
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 标签。
了解了 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 ……),而一个子设备只有一个母设备。
下一节我们通过实验来实践 VLAN。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
阿里云容器服务体验: 部署 ShellPays 条码支付整合服务平台 -- (四)结案陈词
上回提要 阿里云容器服务体验: 部署 ShellPays 条码支付整合服务平台 -- (一)系统概要与环境准备阿里云容器服务体验: 部署 ShellPays 条码支付整合服务平台 -- (二)实操阿里云容器服务体验: 部署 ShellPays 条码支付整合服务平台 -- (三)容器编排分解 清理 删除 Docker Machine 实际 $ docker-machine rm shellpays-inst1 你也可以不删除,但你得向阿里云付按流量计算的资源使用费。:) 结案陈词 就实现“条码支付整合”业务本身,这样技术栈有些过于了,单纯依靠JSP, ASP, PHP, NodeJS... 等简单的技术栈都足以满足了。根据实际业务需要和计算环境去构建技术栈才是合理的。 此次体验,重在为我们的开发、测试、实施提供一套统一,标准,开箱即用的计算环境与应用。从而使大家工作更和谐,减少了原来在各自环境,应用配置等不一致的交流成本。 同时借助象阿里云的弹性计算与容器服务。我们可以 低成本 , 快速 得构建各种各样的开发、测试、实施环境,以至生产环境。从而达到向用户持续交付的目标,更好的提高用户的业...
- 下一篇
动手实践 Linux VLAN - 每天5分钟玩转 OpenStack(13)
本节我们来看如何在实验环境中实施和配置如下 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 确认...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS关闭SELinux安全模块
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Hadoop3单机部署,实现最简伪集群
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境