#本文欢迎转载,转载请注明出处和作者。
一般教程第一课都讲交换机/路由器的操作系统(IOS)的基本操作,例如介绍普通模式、特权模式,修改密码等。
我们反其道而行之,先动手做VLAN的划分操作,先讲实操,再说概念。
1、实验1(配置vlan access):
1.1搭建拓扑图
实验需求:实验的拓扑如上图,PC1、PC2、PC3、PC4连接同一台交换机,PC1、PC3的人属于同一个部门(如销售部),PC2、PC4的人属于同一个部门(财务部),由于安全要求,希望销售部的员工之间可以互访,财务部的员工之间可以互访,但是跨部门员工之间不能互访。
1.2配置命令
先通过拖动的方式,拖动一台交换机,4台PC,并且通过自动连线的方式连接PC与交换机。
然后通过选择设置,显示端口标签,方便查看PC与交换机的连接端口。
点击交换机,选择CLI标签,可以输入命令,命令如下。
Switch>en
Switch#conf t
Switch(config)#vlan 10
Switch(config-vlan)name xiaoshou
Switch(config-vlan)vlan 20
Switch(config-vlan)name caiwu
Switch(config-vlan)do show vlan brief
enable,进入普通模式,可以输入en缩写按回车,也可以按tab键补全,在按回车输入。
configure terminal进入特权模式,tab同上。
vlan ID,创建vlan,并且用name改名。暂时不用理解,先死记硬背。
show vlan brief ,可以查看vlan情况,如果在特权模式及以后的模式,要在前面加do。返回上一级用exit
每个vlan就是一个子网,每个子网就是一个网段!
每个vlan就是一个子网,每个子网就是一个网段!
每个vlan就是一个子网,每个子网就是一个网段!
重要的事情说三遍!!!后面说到不同vlan、不同子网、不同网段,说的都是同一个事情。
查看结果,可以看到此时vlan 10与20后面都没有端口,所有端口都还是在vlan1下面。
Switch(config-vlan)int fa0/1
Switch(config-if)sw mo access
Switch(config-if)sw access vlan 10
interface fastethernet,进入接口模式,0/1为对应的接口号,PC1接的交换机fa0/1端口。
switchport mode access,将端口设置access模式。
switchport access allow vlan,将端口划入某个VLAN。
因此,按照需求,我们需要将PC1、3划入vlan 10,PC2、4划入vlan 20。
Switch(config-vlan)int fa0/2
Switch(config-if)sw mo access
Switch(config-if)sw access vlan 20
Switchconfig-if)int fa0/3
Switch(config-if)sw mo access
Switch(config-if)sw access vlan 10
Switchconfig-if)int fa0/4
Switch(config-if)sw mo access
Switch(config-if)sw access vlan 20
1.3结果验证
点击PC1、2、3、4,分别进入“Destkop->IP Configuration”,按照拓扑图要求配置。
配置完毕,选择PC1,选择“Command Prompt”,然后ping PC2、3、4的IP地址。
结果发现PC1无法ping通PC2、PC4,可以ping通PC3。
1.4理论解释
VLAN是为了划分网段的,不同的网段会有不同的VLAN ID,同一个子网(注意还是刚才说了三遍的,这里暂时可以认为VLAN、网段、子网都是一个东西的三种叫法)可以在二层(同一个子网)内直接通信,不同子网是不能直接通信的(所以ping不通),不同子网的通信,是要经过网关,然后网关查找路由后才能通信的。
平常听到的二层内通信,三层通信,说的就是上面这个内容。如果同一个子网内通信,就是二层内通信。而如果要跨子网通信(即实现PC1可以与PC2\4通信),需要配置网关与路由,否则是无法通信的。
那么vlan的原理是什么呢?其实就是数据包经过交换机的端口入/出站的时候,交换机会根据端口的配置,给数据包打上标签。例如从fa0/1过来的数据包就加上vlan10的标签,而fa0/2、f0/4这样的端口,配置了vlan20,那么收到带vlan10的标签的包,直接就丢弃了,不会再转发出去。
2、实验2(配置vlan trunk):
2.1网络拓扑
上面实验是工作在1台交换机的,那么如果变为两台交换机,怎么做呢?
先修改上面的拓扑为如下拓扑,并且交换机之间添加连接线(交换机之间是交叉线):
类比实验1,交换机2也应该创建VLAN 10,20,以及将PC3、PC4连接交换机2的端口(fa0/1,fa0/2)划入对应的vlan。
2.2配置命令
Switch>en
Switch#conf t
Switch(config)#vlan 10
Switch(config-vlan)name xiaoshou
Switch(config-vlan)vlan 20
Switch(config-vlan)name caiwu
Switch(config-vlan)do show vlan brief
Switch(config-vlan)int fa0/1
Switch(config-vlan)sw mo access
Switch(config-vlan)sw access vlan 10
Switch(config-vlan)int fa0/2
Switch(config-vlan)sw mo access
Switch(coinnfig-vlan)sw access vlan 20
但是按照上面讲述,每个端口只能access划入1个vlan,并且只能接收与发送带这个vlan标签的数据包,那么2台交换机之间的中间连线的端口fa0/24,无论划入哪个vlan,都无可避免的无法传输另外一个vlan的包,怎么实现PC1可以ping通PC3呢。
这里就要引入switchport的trunk模式,trunk模式一般用于交换机之间的互联口,或者上行的端口(连接更上一层的交换机/路由器)。将端口划入trunk模式,就可以设置可以允许在这条链路传输的vlan标签,然后让不同vlan的包同时通过这条链路传输。(注意只是带不同vlan标签的包共用这条链路传输,vlan间还是不能通信。)
两台交换机都配置:
Switch(config)#int fa0/24
Switch(config-if)sw mo trunk
Switch(config-vlan)sw trunk allow vlan 10,20
packet tracer可以直接sw mo trunk,真实生产需要加sw encapsulation dot1q,才能设置模式为trunk
allow vlan all,可以允许所有vlan ID,也可以只允许某些vlan ID。
2.3结果验证
PC1 ping PC2、PC3、PC4。
实验结果PC1可以ping通PC3,不能ping PC2\4。
2.4理论解释(选修)
需要补充解释一下二层通信。(可以参考阅读前面文章,最底下的两个图)《【理论研究】漫谈传统IT基础设施06-网络(下)
PC1发送一个数据包,会根据包里面的源IP地址与目的IP地址进行计算,判断是否在同一个子网。(根据IP地址与子网掩码进行与运算,然后算出的结果看看是否相等,相等就是同一个子网,不等就是不同子网)
A、当计算结果相等,那么就认为是二层子网内的通信,这个时候会做如下动作:
1、PC1发送ARP包给SW1,SW1在整个二层域里面泛洪发送ARP报文。(即向所有端口发送一个问目的IP地址对应什么MAC地址的询问包,等别人答复。)
2、每个设备收到该ARP报文,会查询自己的IP地址是否就是询问的地址,不是,就忽略,是,就会将自己的MAC地址写进去回包。
3、各个二层域内的交换机收到回包转发,直接SW1收到,然后就知道了目的IP地址翻译成什么MAC地址了。
4、SW1拆掉三层的包头信息,然后查询自己的MAC地址表,看看去往目的MAC地址的数据帧应该从哪个端口转发出去,然后将拆包后的二层帧发送往对应端口。
5、帧到达目的设备。
这里有一个概念叫广播风暴,就是二层域不易划分太大,因为每次二层域内的通信,都会有一个泛洪整个二层域发送的ARP报文。如果每台设备,每次通信都在泛洪,很可能整个网络的带宽都被这些泛洪的报文侵占了,会导致网络不可用。
另外二层网络很怕有环路(后面会介绍STP技术,就是为了自动阻断二层环路的)。
当存在环路,这些ARP报文就会不断在环路之间往返,以及不断的泛洪,最后导致网络带宽全部被占用,这里就暂时不展开说了。
B、当计算结果不相等,那么就认为是跨三层的通信,这个时候会做如下动作:
1、PC1会将包的目的MAC地址改为网关的MAC地址,但是目的IP地址还是保持原样。
2、交换机从物理层开始收到比特流,然后拆二层帧头,然后看到目的MAC地址是到网关的,然后查找MAC地址表,查找对应的MAC地址应该往哪个端口转发,然后将帧往对应端口扔。
3、最后逐台交换机转发帧,到达三层网关(例如路由器),继续拆IP包头,然后看到目的IP地址是另外一个网段的,查找路由表,然后找到目的IP地址网段应该往哪个端口转发,然后会将目的MAC地址修改为对端直连设备对接接口的MAC地址,然后把包扔出去。
4、同理,到达最后的路由器(目的IP地址网关所在),封IP包头,然后帧头修改,将源MAC地址改为目的网段的路由器MAC地址,然后通过二层帧来转发数据给目的PC。
所以,在整个传输过程中,源IP地址与目的IP地址是不变的,源MAC地址也是不变的,但是目的MAC地址是不断在修改的。