Linux 如何实现 VLAN

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。

时间: 2024-10-13 16:07:21

Linux 如何实现 VLAN的相关文章

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

LAN 表示 Local Area Network,本地局域网,通常使用 Hub 和 Switch 来连接 LAN 中的计算机.一般来说,两台计算机连入同一个 Hub 或者 Switch 时,它们就在同一个 LAN 中. 一个 LAN 表示一个广播域. 其含义是:LAN 中的所有成员都会收到任意一个成员发出的广播包. VLAN 表示 Virtual LAN.一个带有 VLAN 功能的switch 能够将自己的端口划分出多个 LAN.计算机发出的广播包可以被同一个 LAN 中其他计算机收到,但位于

linux网卡的vlan配置

如果服务器上连的交换机端口已经预先设置了TRUNK,并允许特定的VLAN可以通过,那么服务器的网卡在配置时就必须指定所属的VLAN,否则就不通了,这种情形在虚拟化部署时较常见. 例如在一个办公环境中,办公所在VLAN为1020,虚拟化的物理主机上有两块万兆网卡,分属与3111和3112VLAN,这三个VLAN间可以互通,那么该如何配置呢? 一.首先要确认Linux系统内核是否已经支持VLAN功能: 当前使用内核以及操作系统版本: [[email protected] ~]# cat /etc/r

linux 网卡配置vlan标签

所用工具:vconfig 新建文件:/etc/sysconfig/modules/8021q.modules 过程:(以VLAN11.VLAN22 桥接与eth0为例说明) 1.修改eth0配置文件如下: DEVICE=eth1 ONBOOT=yes 2.新建虚拟网卡配置文件ifcfg-eth1.10 DEVICE=eth1.10 BOOTPROTO=static IPADDR=192.168.11.20 NETMASK=255.255.255.0 ONBOOT=yes VLAN=yes    

动手实践 Linux VLAN

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

动手实践 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上

How to create vlan on Linux (with Cisco Catalyst Switch)

In this article I want to share to you on how to create and configure vlan on Linux through Cisco Catalyst Switch. Requirements: 1. Linux installed on a PC with one or more NICs (Network Interface Card). I use Centos 5.4 using 2.6.18-164.11.1.el5PAE

vlan 以及 Linux实现的IEEE 802.1Q VLAN

Vlan的概念 VLAN技术介绍 VLANVLAN概述 以太网是一种基于CSMA/CD(Carrier Sense Multiple Access/Collision Detect,载波侦听多路访问/冲突检测)的共享通讯介质的数据网络通讯技术,当主机数目较多时会导致冲突严重.广播泛滥.性能显著下降甚至使网络不可用等问题.通过交换机实现LAN互联虽然可以解决冲突(Collision)严重的问题,但仍然不能隔离广播报文.在这种情况下出现了VLAN(Virtual Local Area Network

Linux实现的IEEE 802.q VLAN

本文转载自: http://blog.chinaunix.net/uid-20786208-id-4291059.html Technorati 标签: Linux VLAN   --------------------------我是快乐的分割线-------------------------------------------------- 第一部分:VLAN的核心概念 说起IEEE 802.1q,都知道是VLAN,说起VLAN,基本上也没有盲区,网络基础.然而说到配置,基本所有人都能顺口

Linux上VLAN的创建

注明:以下内容来自于我对这篇博客的理解 来自于大佬:FromScratch https://www.cnblogs.com/justart/p/7944256.html 好不容易找到了篇好文章,非常感谢 估计是先入为主的原因导致我还是以思科交换机的方式理解Linux上的vlan(虽然我之前玩的是锐捷的设备) 我的测试环境是两台电脑 GE60 (Kali) 使用KVM虚拟两台虚拟机(archlinux) GE62 (archlinux)使用KVM虚拟两台虚拟机(archlinux) 网络管理软件都