有过NA基础的人应该都知道这是利用cisco PT软件搭建的网络拓扑图,如何搭建不在此文讨论范围,下面开始入正题。
首先,让大家复习下vlan。所谓的vlan就是虚拟局域网,搭建vlan的好处有很多,譬如为了安全需要,为了节省预算需要等等。现在给你5台PC ,2台思科2960交换机(或同类支持vlan的交换机),一台集线器,搭建如图所示网络。要求:创建2个vlan,分别划入3台和2台PC,PC0、PC1、PC2之间可以互Ping,PC3和PC4可以互Ping
先看笔记的配置方法:
第一步:分别给PC0-PC4配置IP地址:192.168.1.1/24-192.168.1.5/24,然后互ping,发现可以正常通讯.如果通讯不正常,请检查IP地址及线缆,确保5台机器之间能够正常通讯。
第二步:在switch0上创建vlan10 和vlan20 ,并将fa0/1设置成access,划入vlan10;fa0/2设置成access,划入vlan20;再将fa0/3设置成trunk,执行命令vtp domain ccna ;然后在switch上将fa0/1设置成trunk。至此两台交换机上vlan相关设置已经完成。如果这一步有疑问请查书本!
第三步:测试。在此笔者卖个关子,大家猜想一下,哪几台PC间可以正常通讯。首先可以确定,两个vlan之间PC肯定不能互Ping。经过实际测试,PC0与PC2之间可以互Ping,PC3与PC4之间可以互Ping,PC1与谁都不能通讯。这篇文章讨论的内容由此开始。
我们先来简单回顾下交换机对待VLAN数据包是如何转发的(默认启用802.1q封装)。在一般的交换机当中,交换机转发帧的方法很简单,仅仅按照目标mac地址进行转发:“认识”的单播mac地址,按mac地址映射表进行转发,不认识的单播mac地址或组播或广播地址,立即泛洪!而在建立了vlan的交换机中转发数据帧稍微复杂点,不仅要考虑目标地址,还要考虑源mac地址,因为源mac地址会与它所属的vlan相关。拿本实验为例,当switch0收到PC0发来的数据包时,首先要做的事就是学习,即建立PC0的mac地址与fa0/1的映射关系,由于switch0的fa0/1设置了vlan 10,因此交换机还会学习到PC0的mac地址与vlan 10的映射关系,于是交换机在转发时,会修改以太网帧,添加进802.1q帧头,使之变成802.1q帧,并将该帧泛洪至交换机上除fa0/1外的所有属于vlan10 的端口,这里仅从fa0/3端口进行转发,当switch1收到switch0发过来的801.1q帧时,switch1首先要做的事也是学习,学习的过程是switch0一样的,当知道这个帧是要发送到vlan10的时候,交换机会将该帧泛洪至所有属于vlan10的端口,这样PC2接受到该帧后将进行回应,由此通讯成功。那么这时可能有人会问,这样的话,PC0应该与PC1可以通讯的呀,怎么实际当中为什么是不能通讯的呢?
我们再来分析,PC0与PC1的通讯过程。当switch0把pc0发往PC1数据包从fa0/3端口送出时,数据包首先到达集线器,由于集线器是一层设备,仅仅对数据进行放大和泛洪,因此集线器会原封不动的将数据送往PC1,咦,这不是通了吗?!这里大家忽略了一点,就是switch0送出来的帧已经不是当初从PC0收到的以太网帧,switch0送出的是802.1q帧。对主机PC1而言,由于进行的是以太网通讯,只能接受标准的以太网帧,碰到这种“外星人”,PC1 将会措手不及,不知如何处理,因此只好丢弃。实际上,细心一点的人看图时就会发现一个问题:PC1凭什么被划分到vlan10中去了?PC0连接fa0/1口,而fa0/1口被划分到vlan10中,因此PC0理所当然属于vlan10。PC2、PC3、PC4类似。但是PC1是连接到主干端口的呀,而主干端口是大家共用的端口。所以看图就可以看出一点端倪。
原来在交换机通讯过程中还存在另一个细节:主干端口转发数据帧时的处理方式。本地(native)vlan是主干端口的特征。默认native vlan是vlan1。当主干端口在转发数据帧时,1)如果发现该帧的vlan标识与native vlan相同,交换机会清除该帧的vlan标识,还原成以太网帧进行转发;2)如果发现该帧的vlan标识与native vlan不同,则对帧不做修改直接转发。当主干端口在接收数据帧时,1)如果发现该帧没有vlan标识则将native vlan标识加进该帧;2)如果发现该帧已带vlan标识则不修改。
我相信绝大数人读到这里都会明白为什么开始PC1与所有的PC都P不通的原因了。因此解决的办法也有了,就是将switch0和switch1主干端口的native vlan
修改成10就可以了,这样就顺利完成了实验要求。一般来说,实验做到这里已经结束了,爱折腾的人其实还是可以再折腾一下的,笔者就是个爱折腾的人。
文章写到这里字数已经不少了,相信很多人都看烦了,因此后面的瞎折腾我就不写出来了,只给读者们提示下,真正的实验及结果请读者自己完成,出现的任何结果都可以用本文的理论去完成。读者私下至少可以做以下测试:
1)如果把switch0和switch1主干端口的native vlan都改成vlan20,会是什么情况?此时PC1还属于vlan10吗?这步做完你就会发现决定PC1属于哪个vlan的因素是什么
2)如果仅仅把switch0的主干端口native vlan改成vlan10 而switch1保持默认的native vlan 结果是什么呢?
3)仅仅修改switch1的主干端口native vlan,结果又会是什么?
能够把这篇文章坚持读完,并完成相关实验,我相信vlan你算是学透了,至少在NA阶段可以这么说。一般人看这篇文章只学到vlan,而聪明的人看这篇文章收获却远非如此,笔者写这篇文章的真正的目的是要告诉大家学习cisco的东西一定要多做多练,光如此还不够,还要学会从不同角度去思考,学会全方位考虑问题。最后祝大家学习愉快!