虚拟区域(Virtual Local Area Network或简写VLAN,V-LAN),是一种构建于局域网交换技术(LNA Switch)的网络管理技术。网关人员可以借此透过控制交换机有效分派出入局域网的分组到正确的出入端口,达到对不同实体局域网中的设备进行逻辑分群(Grouping)管理,并降低局域网内大量数据流通时,因无用分组过多导致阻塞的问题,以提升局域网的纤细安全保障。
为实现交换机以太网的广播隔离,一种理想的解决方案就是采用虚拟局域网技术。这种对连接到第2层交换机端口的网络用户的逻辑分段技术实现非常灵活,它可以不受用户物理位置限制,根据用户需求划分VLAN;可以在一个交换机上实现,也可以跨交换机实现;可以根据网络用户的位置、作用、部分或根据使用的应用程序、上层协议或者以太网通信端口硬件地址进行划分。 一个VLAN相当于OSI模型第2层(数据链路层)的广播域,它能将广播控制在一个VLAN内部。而不同VLAN之间或VLAN/WAN的数据通行必须通过第3层(网络层)完成。否则,即使是同一交换机上的通行端口,假如他们不处于同一个VLAN,正常情况下也无法进行数据通信。
VLAN可以为网络提供以下作用:
直接以交换机上的端口作为划分VLAN的基础。这个方式的有点是简单与直观。因此,运用这种方式的VLAN十分普遍。但因为是物理层的设置,所有比较适合规模不大的组织。
以每台主机的MAC地址做为划分VLAN的基础。本方法首先创建一个比较复杂的数据库,通常为某网络设备的MAC地址与VLAN的映射关系数据库。当该网络设备连接到端口后,交换机会向VMPS(VLAN管理策略服务器)来请求这个数据库。找到相应映射关系,完成端口到VLAN的分配。 这个方式的优点是即使计算机在实体上的位置不同,也不影响VLAN的运作。但缺点是网管人员必须在交换机中设置组织内每一台设备MAC地址与VLAN间的映射关系数据库。因此,这种设置策略的管理复杂度会随着越来越多的设备、与实体位置的群落、和不同工作任务需要而增加。
以每台设备的IP地址做为划分VLAN的基础,以子网视为VLAN设置的依据。 这个方式的优点是当网管人员已经将内部网段做好规划与分配的情况下,将可大辐降低网管人员规划并设置VLANs架构的复杂度。但缺点是原本传统交换机不需要对网络帧作任何处理,但在这个机制下,交换机不但必须剖析网络帧(Frame),还必须进一步取出Source IP与Destination IP进行比对,连带降低交换机接收与分派分组的效率。
要在Linux下划分和实现VLAN需安装vconfig软件包。通过yum在线安装,若目标已安装可以跳过此步骤。
yum –y install vconfig
(1)通过如下命令,查看内核是否提供VLAN功能 dmesg | grep –i 802 (2)查看/proc/net/vlan 档案是否存在 ls /proc/net/vlan 若目录/proc/net/vlan不存在,则表示内核没有提供VLAN功能。 (3)通过modprobe命令将8021q.ko内核模块载入内核
[root@localhost loongson]# modprobe 8021q
[root@localhost loongson]# lsmod | grep 8021q
8021q 21825 0
garp 6142 1 8021q
mrp 7861 1 8021q
(4)模块8021q.ko后,再次查看目录/proc/net/vlan的存在状态 [root@localhost loongson]# ls /proc/net/vlan/config /proc/net/vlan/config
(1)在添加VLAN之前,确认以下系统网路的配置状态:
[root@localhost loongson]# ifconfig
enp2s0: flags=4163<up> mtu 1500
inet 10.30.142.74 netmask 255.255.255.0 broadcast 10.30.142.255
inet6 fe80::223:9eff:fe03:cc87 prefixlen 64 scopeid 0x20<link />
ether 00:23:9e:03:cc:87 txqueuelen 1000 (Ethernet)
RX packets 2853568 bytes 257282353 (245.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 906150 bytes 132667905 (126.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 3
lo: flags=73<up> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 772676 bytes 75294425 (71.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 772676 bytes 75294425 (71.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
(2)添加VLAN操作,使用vconfig命令增加子接口: 增加vlan为25的子接口 [root@localhost loongson]# vconfig add lo 25 ERROR: trying to add VLAN #25 to IF -:lo:- error: Operation not supported [root@localhost loongson]# vconfig add enp2s0 25 Added VLAN with VID == 25 to IF -:enp2s0:- [root@localhost loongson]# ls /proc/net/vlan/ config enp2s0.25 如上操作显示,通过ls命令查看目录/proc/net/vlan,发现多了一个名为enp2s0.25的文件,使用命令ifconfig enp2s0.25命令来查看VALN划分的接口信息: (3)VLAN 的接口信息
enp2s0.25: flags=4163<up> mtu 1500
ether 00:23:9e:03:cc:87 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
注意:增加VLAN时,增加子接口时,首先确保enp2s0端口无IP地址。
(1)增加好VLAN以后,利用cp命令复制接口的IP地址配置,再用vim修改文件ifcfg-enp2s0.25,设置IP地址等信息
cp ifcfg-enp2s0 ifcfg-enp2s0.25
vim ifcfg-enp2s0.25
(2)重启network服务使配置生效。