虚拟局域网VLAN
简介:随着网络的规模不断扩大,接入的主机和设备也是越来越多,网络中的广播流量也随之加大,这样就会加重交换机的负担,甚至导致交换机死机,我们今天就通过VLAN (Virtual Local Area Network,虚拟局域网)技术,可以从逻辑上将一个大的广播域划分成若干个小的虚拟局域网。VLAN技术不仅能够控制广播 ,还可以增强网络的安全性。
在传统的交换网络中,所有的用户都处在同一广播域内,当网络规模较大时,广播包的数量也会随之增加,当广播包数量占到30%时,网络传输 效率明显下降。特别是网络设备出现故障时,则不停的向网络中发送大量的广播包,从而导致网络风暴,使网络处于通信瘫痪状态,那么如何解决这个问题呢?
我们可以使用分割广播域的方法解决出现的问题,分割广播域有两种方式。
物理分割:将物理上或分为若干个小网络,然后使用能够隔离广播的网络设备将不同的网络连接起来 实现通信。
逻辑分割:将整个网络从逻辑上划分为若干个小的虚拟网络,即VLAN(Virtual Local Area Network,虚拟局域网)。VLAN工作在OSI七层模型的数据链路层,一个VLAN即是一个交换网络,其中所有的用户都处在同一广播域中。各VLAN通过路由设备实现通信。
VLAN的产生给局域网的设计增加了灵活性,使管理员在划分工作组时不再受物理位置的影响。VLAN可以再一台交换机上实现,也可以跨交换机实现。可以根据部门、用户、位置、作用等划分。
VLAN具有灵活性和可扩展性等特点,使用VLAN技术有以下好处
每个VLAN都是一个独立的广播域,从而大大的减少了广播对网络的带宽的占用。并且一个VLAN出现了广播风暴不会影响到了其他VLAN的正常通信。
由于只能在同一VLAN内的端口之间传输数据,不同VLAN的端口不能直接访问,如果需要通信则需要路由设备的支持 ,因此VLAN可以限制个别主机访问服务器资源等。所以通过划分VLAN可以提高网络的安全性。
根据VLAN的使用和管理的不同,VLAN分为两种:静态VLAN和动态VLAN
静态VLAN也称为基于端口的VLAN,是目前最长使用的VLAN实现的方式。
惊天VLAN就是明确指定交换机的那个端口属于那些VLAN。需要管理员手工配置。当用户主机连接到交换机时,就会分配到对应的VLAN中。如图1所示
图1 基于端口的VLAN使用
这种端口和VLAN的映射只是在本地有效,交换机之间不能共享这一信息。
动态VLAN的实现方法有很多,目前最普遍的实现方式是基于MAC地址的动态VLAN。动态VLAN根据主机的MAC地址自动将其指派到合适的VLAN中。这种VLAN划分的方法的最大优点就是,当用户物理位置移动时,即从一个交换机换到另外一个交换机时VLAN不需要重新配置。这种VLAN的唯一缺点就是:当点过多的时候操作将非常繁琐。这种VLAN的划分不是和大型的局域网。
Cisco Gatalyst交换机最多支持4096个VLAN如图2所示列出了Gatalyst交换机中VLAN的分配情况。
图2 Gatalyst交换机所支持的VLAN数量
其中VLAN1是交换机默认存在的VLAN,所有端口默认都属于VLAN1。
所有的Gatalyst交换机都支持VLAN,不同型号的交换机支持的VLAN数目不同,根据型号。
在Cisco2960交换机上配置基于端口的VLAN步骤如下
在Cisco IOS中创建VLAN有两种方法。
VLAN数据库配置模式。此模式只支持VLAN的正常范围(1~1005)创建VLAN数据库模式的配置命令如下
步骤 | 命令 | 目的 |
第一步 | Vlan database | 进入VLAN配置模式 |
第二步 | Vlan vlan-id [name vlan-name] | 创建VLAN及VLAN名 |
第三步 | Exit | 退出VLAN配置模式 |
例如创建ID 为VLAN10、VLAN20这两个VLAN
Switch>en
Switch#vlan database
Switch(vlan)#vlan 10 name test10
VLAN 10 added:
Name: test10
Switch(vlan)#vlan 20 name test20
VLAN 20 added:
Name: test20
Switch(vlan)#exit
Switch>
全局配置模式。此模式不仅支持VLAN的正常范围,而且还可以配置VLAN数据库模式不能配置的扩展VLAN范围
在全局模式下创建VLAN 的步骤如下表所示
步骤 | 命令 | 目的 |
第一步 | Confiture teminal | 进入全局配置 |
第二步 | Vlan vlan-id | 输入一个VLAN号,进入VLAN配置模式 |
第三步 | Name vlan-name | 输入一个VLAN名 |
第四步 | Exit或and | 退出配置模式 |
例如:创建ID为 vlan30和vlan40
Switch#configure terminal
Switch(config)#vlan 30
Switch(config-vlan)#name test30
Switch(config-vlan)#exit
Switch(config)#vlan 40
Switch(config-vlan)#name test40
Switch(config-vlan)#exit
ps:Cisco推荐使用全局模式来配置VLAN。因为VLAN数据库配置模式已经被认为是一种过时的方法,未来的IOS版本将不再支持他。
要删除ID为20的vlan,需要使用no vlan vlan-id命令。其过程如下
Switch(config)#no vlan 20
也可以在数据库模式下删除
Switch(vlan)#no vlan 20
将交换机的端口加入到相应的VLAN中
步骤 | 命令 | 作用 |
第一步 | Configure terminal | 进入全局配置模式 |
第二步 | Interface interface-id | 进入要分配的端口 |
第三步 | Switchport mode access | 定义二层端口的模式 |
第四步 | Switchport access vlan vlan-id | 把端口分配给某个VLAN |
第五步 | Exit或end | 退出配置模式 |
例如将端口F0/1分配给vlan10,操作如下
Switch#conf terminal
Switch(config)#int f0/1
Switch(config-if)#switchport mode access //将接口模式设置为接入模式(默认就是接入模式)
Switch(config-if)#switchport access vlan 10
可以使用命令switch(config)# default interface interface-id 还原到接口默认配置状态
查看vlan分派的状态
Switch#show vlan brief
查看某个VLAN的详细状态
Switch#show vlan id 10 //10为VLAN ID
在一台Gatalyst交换机上创建vlan10、vlan20和vlan30给vlan30命名为caiwu并将将交换机端口5-10加入到vlan10中,将交换机端口11-15加入到vlan20,交换机端口vlan16-20加入到vlan30中,其命令如下。
拓扑图
图3
Switch>en
Switch#configure terminal
Switch(config)#vlan 10
Switch(config-vlan)#exit
Switch(config)#vlan 20
Switch(config-vlan)#exit
Switch(config)#vlan 30
Switch(config-vlan)#name caiwu
Switch(config-vlan)#exit
Switch(config)#int range f0/5-10
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 10
Switch(config-if-range)#exit
Switch(config)#int range f0/11-15
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 20
Switch(config-vlan)#exit
Switch(config-if-range)#exit
Switch(config)#int range f0/16-20
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 30
Switch(config-vlan)#end
c查看VLAN信息,结果如下
Switch#show vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4
Fa0/21, Fa0/22, Fa0/23, Fa0/24
Gig1/1, Gig1/2
10 VLAN0010 active Fa0/5, Fa0/6, Fa0/7, Fa0/8
Fa0/9, Fa0/10
20 VLAN0020 active Fa0/11, Fa0/12, Fa0/13, Fa0/14 Fa0/15
30 caiwu active Fa0/16, Fa0/17, Fa0/18, Fa0/19 Fa0/20
1002 fddi-default active
1003 token-ring-default active
1004 fddinet-default active
1005 trnet-default active
通过前面呢的介绍以及实例的配置,我们已经学会了如何在交换机上创建VLAN,但是当网络中有多台交换机时,位于不同交换机上的相同vlan的主机是否可以通信呢?这也是我们今天需要解决的问题。即跨交换机的VLAN通信。
如图4所示
在两台交换机sw1和sw2上分别创建了VLAN10、VLAN20和VLAN30,那么,如何才能让连接在不同交换机上的相同VLAN的主机如何通信呢?
图4
如果为每个VLAN都连接一条物理链路,如图5所示,那么两台交换机之间有几个VLAN通信就需要部署几条物理线路,如果有100个VLAN呢?
图5
这种连接的方式的扩展性有很大的问题,随着VLAN数量的增加,就需要在两台交换机之间增加多条物理线路,从而占有很多交换机端口,这显然是不可取的。
类似现实生活中运货的例子:为了使货物在到达目的后能够正确地分开来,通常的做法呢就是在货物上贴上不同的标签。那么在VLAN中,由于不同的VLAN号不同,实际上只需要使用一条中继链路,将属于不同VLAN的数据帧打上不同的标示就可以了如图6所示
图6
在交换网络中,链路有两种类型:接入链路和中继链路
接入链路:通常属于一个VLAN。如图6中的主机与交换机之间的链路成为接入链路
中继链路:可以承载多个VLAN。如图6中的SW1与SW2之间的链路就是中继链路。中继链路常用来将一台交换机链接到另外一台交换机。或者将交换机链接到路由器上。
Trunk(干道、中继)的作用就是使同一个VLAN能够跨交换机通信。在VLAN跨家还击通信的过程中,数据帧有何变化呢?如图7所示
图7 数据帧通过中继链路时的标记过程
VLAN标识可以采用几种方法进行。每一种标识方法都使用一种不同的帧标识机制。在以太网上实现中继,可用如下两种封装类型。
ISL是cisco私有的标记方法。ISL帧封装如图8所示
图8
ISL包头封装是26字节,CRC(Cyclic Redundancy Check,循环冗余校验)尾部是4个字节,共30个字节。
ISL只是对帧进行封装并没有对帧的内容做任何修改。
802.1q是共有的标记方法,其他厂商的产品也支持这种标记方法。在Cisco和其他厂商设备混合部署的时候,我们可以采用这种标记方法。
802.1q使用了一种内部标记机制,中继设备将四个字节的标记插入到数据帧内并重新计算FCS如图9所示
图9
这四个字节的标记头包含以下内容
2字节标记协议标识符(TPID)包含了一个0x8100的固定值,这个特定的TPID值指明了该帧带有802.1q的标记信息。
2字节标记控制信息(TCL包含了以下元素)
3位的用户优先级(priority):802.1q不使用该字段
1位的规范格式标识符(CFI):CFI常用于以太网和令牌环网。在以太网中CFI的值通常为0
12位VLAN标识符(VLAN ID):该字段唯一标示了帧所属的VLAN。VLAN ID可以唯一地标识4096个VLAN,但0和4095是被保留的。
不支持VLAN的交换机混合部署
允许交换机从Trunk端口上转发未被标记的帧
Cisco Catalyst交换机默认Native VLAN是VLAN 1
Trunk端口互联Native VLAN必须相同
图10
注意:Native VLAN 是802.1q中的概念,ISL中并没有Native VLAN,也就是说ISL对所有Trunk链路上的所有数据帧都进行VLAN标记。4)Thunk的模式协商
通过前面的介绍我们可以知道,Trunk是两台Cisco Catalyst交换机端口之间或者交换机路由器之间的一条点对点链路。Trunk可以传输多个VLAN的数据流,并且允许用户将VLAN从一台交换机扩展到多个交换机。
对ISL和IEEE802.1q的配置要视Cisco交换机的IOS而定,可以指定Trunk链路使用ISL还是使用802.1q封装或者是自动协商。
自动协商是由DTP(Dynamic Trunking Protocol,动态中继协议)管理端。DTP是cisco私有的,他同时支持ISL和802.1q两种中继自动协商,但只能由于交换机之间的中继链路,不能用于交换机和路由器之间的中继链路。Cisco Catalyst交换机端口默认为开启DTP协商。
基于IOS的Catalyst交换机支持的Trunk模式如下所示:
接入(Access):将接口设置为永久非中继模式,并协商将链路转换为非中继链路。即使邻接端口不同意这种转变,此接口也会成为非中继接口。
干道(Trunk):将接口设置为永久中继模式,并协商链路转换为中继链路。即使邻接接口不同意这种转变,此接口也会成为中继接口。
动态企望(Dynamic desirable):使得接口主动尝试将链路转换为中继链路。如果邻接接口被设为trunk、desirable或者是auto模式,此接口就会成为中继接口。此模式是采用Cisco IOS软件的所有以太网接口的默认模式
动态自动(Dynamic auto):允许接口将链路转换为中继链路。如果邻接接口被设为trunk或者desirable模式,此接口会成为中继接口
非协商(Nonegotiate):禁止接口产生DTP帧(首先需要先将接口设置为trunk模式)要建立中继链路需要将邻接接口也设置为中继接口,如果邻接接口是desirable或者auto模式,则该接口最终会成为access接口。如果所连接的设备不支持DTP帧(如非Cisco设备),就适合这种模式。
Catalyst 3650 交换机支持ISL和802.1q,Gatalyst只支持802.1q封装不支持ISL封装。
SW1端口模式 | SW2端口模式 | SW1结果 | SW2结果 |
Trunk | Dynamic auto | Trunk | Trunk |
Trunk | Dunamic desirable | Trunk | Trunk |
Dynamic auto | Dynamic auto | Access | Access |
Dynamic desirable | Dynamic desirable | Trunk | Trunk |
Dynamic auto | Dynamic desirable | Trunk | Trunk |
trunk、ninegotiate | Trunk | Trunk | Trunk |
trunk、ninegotiate | Dynamic auto | Trunk | Access |
trunk、ninegotiate | Dynamic desirable | Trunk | Access |
Switch(config-if)#switchport trunk native vlan vlan-id
另外,如果不需要Trunk传送某个VLAN 的数据,可以从Trunk删除这个VLAN,命令如下
Switch(config-if)#switchport trunk allowed vlan remove vlan-id
同样也可以在Trunk上添加某个VLAN,命令如下
Switch(config-if)#switchport trunk allowed vlan add vlan-id
使用show命令验证接口模式,命令如下
Switch#show interface interface-id switchport
如图11所示,两台交换机SW1和SW2各划分了三个VLAN,端口分配如下。
VLAN10:F0/1-F0/3; VLAN20:F0/4-F0/10; VLAN30:F0/11-F0/14
图11
本次案例在GNS上进行模拟。客户端使用VPCS模拟
sw1#vlan database
sw1(vlan)#vlan 10
sw1(vlan)#vlan 20
sw1(vlan)#vlan 30
sw1#conf terminal
sw1(config)#interface range f0/1 -3
sw1(config-if-range)#switchport mode access
sw1(config-if-range)#switchport access vlan 10
sw1(config-if-range)#exit
sw1(config)#interface range f0/4 -10
sw1(config-if-range)#switchport mode access
sw1(config-if-range)#switchport access vlan 20
sw1(config)#interface range f0/11 -14
sw1(config-if-range)#switchport mode access
sw1(config-if-range)#switchport access vlan 30
sw1(config-if-range)#exit
sw1#conf terminal
sw1(config-if)#switchport mode trunk
sw1#vlan database
sw2(vlan)#vlan 10
sw2(vlan)#vlan 20
sw2(vlan)#vlan 30
sw2#conf terminal
sw2(config)#interface range f0/1 -3
sw2(config-if-range)#switchport mode access
sw2(config-if-range)#switchport access vlan 10
sw2(config-if-range)#exit
sw2(config)#interface range f0/4 -10
sw2(config-if-range)#switchport mode access
sw2(config-if-range)#switchport access vlan 20
sw2(config)#interface range f0/11 -14
sw2(config-if-range)#switchport mode access
sw2(config-if-range)#switchport access vlan 30
sw2(config-if-range)#exit
sw2#conf terminal
sw2(config-if)#switchport mode trunk
最后将两台交换机的所有端口全部打开
sw2(config)#int range f0/1 -15
sw2(config-if-range)#no sh
打开vpcs
图12
通过show命令查看是否配置正确
接下来我们测试一下通信
注意:不同VLAN 之间不能直接通过中继设备直接通信,需要借助路由设备进行转换(单臂路由或者是三层交换)
192.168.1.1——————192.168.1.6
192.168.1.2——————192.168.1.5
192.168.1.3——————192.168.1.4
图13
我们通过查看交换机的f0/15接口进行验证是否为trunk接口
sw2#show interface f0/15 switchport
Name: Fa0/15
Switchport: Enabled
Administrative Mode: trunk //管理模式为Trunk
Operational Mode: trunk //工作模式为Trunk
Administrative Trunking Encapsulation: dot1q //管理协议
Operational Trunking Encapsulation: dot1q //工作协议
Negotiation of Trunking: Disabled
Access Mode VLAN: 0 ((Inactive))
Trunking Native Mode VLAN: 1 (default)
Trunking VLANs Enabled: ALL //承载所有VLAN
Trunking VLANs Active: 1,10,20,30
Priority for untagged frames: 0
Override vlan tag priority: FALSE
Voice VLAN: none
Appliance trust: none
如果不需要在trunk上传输VLAN20的数据,可以在trunk上移除VLAN2,命令如下
sw2(config)#int f0/15
sw2(config-if)#switchport trunk allowed vlan remove 20
sw2#show interfaces f0/15 switchport
Name: Fa0/15
Switchport: Enabled
Administrative Mode: trunk
Operational Mode: trunk
Administrative Trunking Encapsulation: dot1q
Operational Trunking Encapsulation: dot1q
Negotiation of Trunking: Disabled
Access Mode VLAN: 0 ((Inactive))
Trunking Native Mode VLAN: 1 (default)
Trunking VLANs Enabled: 1-19,21-1005 //已经将VLAN20移除
Trunking VLANs Active: 1,10,30
Priority for untagged frames: 0
Override vlan tag priority: FALSE
Voice VLAN: none
Appliance trust: none
也可以使用命令将VLAN20添加到trunk上,命令如下
sw2(config)#interface f0/15
sw2(config-if)#switchport trunk allowed vlan add 20
EthernetChannel通过捆绑多条物理线路来提高链路带宽,并运行一种机制,将多个以太网端口捆绑称一条逻辑链路,以太网通道最多可以捆绑8条物理链路,其中物理链路可以是双绞线也可以是光纤。如图14所示
图14
但是,以太网通道必须遵守以下一些规则
参与捆绑的端口必须属于同一VLAN。如果在中继模式下,要求所有参与捆绑的端口都是在中继下。并且所有端口上配置相同的VLAN范围。
如果端口的配置是中继模式,那么,应该在链路连段将通道中的所有端口配置成相同的中继模式。
所有参与捆绑的端口的物理参数设置必须相同,应该有同样的速度和全/半双工模式设置。
图15
我们根据这个拓扑图来进行配置以太网通道,注意看一下我三台交换机的端口号,是有规律的连接的,这样我们在配置的时候非常的好配置。
sw1#conf terminal
sw1(config)#interface range f0/0 -1 //将f0/0 -1 进入到f0/0和0/1
sw1(config-if-range)#channel-group 1 mode on
将f0/0 f0/1组合成了一组逻辑链路其中 1为组号 mode 模式为 on 开启状态
如果需要取消组合只需将on 改为 off即可
如果接口没有顺序的连接也可以这样组合
sw1(config)#interface f0/0
sw1(config-if-range)#channel-group 1 mode on
sw1(config)#interface f0/1
sw1(config-if-range)#channel-group 1 mode on
sw2#conf terminal
sw2(config)#interface range f0/0 -1
sw2(config-if-range)#channel-group 1 mode on
sw2#conf terminal
sw2(config)#interface range f0/2 -3
sw2(config-if-range)#channel-group 2 mode on
sw3#conf terminal
sw3(config)#interface range f0/2-3
sw3(config-if-range)#channel-group 2 mode on
PS:相邻的两个交换机应为1各组,组号可以随意取,但是不能相同。
我们可以通过命令查看以太网通道配置,显示如下内容则表示配置正确,命令如下
sw1#show etherchannel 1 summary //1为组号
Flags: D - down P - in port-channel
I - stand-alone s - suspended
R - Layer3 S - Layer2
U - in use
Group Port-channel Ports
-----+------------+-----------------------------------------------------------
1 Po1(SD) Fa0/0(D) Fa0/1(D)
实验环境
随着BENET上海分公司的发展,其员工已达到100多人
公司网络现状无法满足公司要求
现有网中广播很多导致网速慢
各部门间可以互访,存在一定安全问题
需求描述
使用VLAN技术从逻辑将整个网络进行划分
限制广播报文,增强公司内部一定安全性
实现思路
在交换机上划分VLAN,将端口添加到相应VLAN中
配置交换机IP地址
验证访问是否正常
原文:http://ttxjs.blog.51cto.com/9447327/1720529