动手实践 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 确认这就是 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 的网络虚拟化做个总结。
-
物理交换机存在多个 VLAN,每个 VLAN 拥有多个端口。 同一 VLAN 端口之间可以交换转发,不同 VLAN 端口之间隔离。 所以交换机其包含两层功能:交换与隔离。
-
Linux 的 VLAN 设备实现的是隔离功能,但没有交换功能。 一个 VLAN 母设备(比如 eth0)不能拥有两个相同 ID 的 VLAN 子设备,因此也就不可能出现数据交换情况。
-
Linux Bridge 专门实现交换功能。 将同一 VLAN 的子设备都挂载到一个 Bridge 上,设备之间就可以交换数据了。
总结起来,Linux Bridge 加 VLAN 在功能层面完整模拟现实世界里的二层交换机。
eth0 相当于虚拟交换机上的 trunk 口,允许 vlan10 和 vlan20 的数据通过 eth0.10,vent0 和 brvlan10 都可以看着 vlan10 的 access 口 eth0.20,vent1 和 brvlan20 都可以看着 vlan20 的 access 口

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
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 中。 请注意,VL...
- 下一篇
docker 文件位置[备忘]
在创建一个 docker 容器后, 常见 docker 容器会在 /var/lib/docker 目录下会生成一些文件, 目录 备忘一下文件信息 如创建了一个容器, 容器 ID 为 f32b82280d67c66d8eecc75c63dc49e40c3e23672cf4498ea6cc44ad654b3cf6 [root@sh-storage-128204 docker]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f32b82280d67 tomcat "catalina.sh run" 38 minutes ago Up 38 minutes 8080/tcp insane_tesla 文件位置 作用 ./devicemapper/metadata/f32b82280d67c66d8eecc75c63dc49e40c3e23672cf4498ea6cc44ad654b3cf6-init 容器磁盘创建信息 ./devicemapper/metadata/f32b82280d67c66d8eecc75...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS关闭SELinux安全模块
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Hadoop3单机部署,实现最简伪集群