上篇博客讲了什么是虚拟局域网,以及如何搭建虚拟局域网。这篇讲述如何使不同虚拟局域网之间进行通信。
不同虚拟局域网通信需要路由设备进行转发。路由设备可以是路由器也可以是具有路由功能的三层交换机。
上一讲:认识虚拟局域网及搭建(https://mp.csdn.net/postedit/80199792)
这一讲:
1、利用二层交换机——路由器方式来实现不同虚拟局域网之间的访问。
方式一:
我们称为双臂路由法,所谓双臂是指交换机到路由器有两个线路,其实三个也行,但是路由器接口很少,很少使用这种双臂路由法实现不同虚拟局域网通信。不过,话虽如此,方法还是要将出来的,请看下图:
上图中,我们将路由器与交换机用两根直通线连接在一起。在交换机中划分两个子网,192.168.1.0/24和192.168.2.0/24。
用交换机划分两个虚拟局域网vlan10 和Vlan20。Vlan10虚拟局域网中有两台主机pc0和pc5,Vlan20虚拟局域网中有一台pc1主机。
交换机接路由器的端口fa0/3和fa0/4都设置为Access模式,fa0/3设置为Vlan10,fa0/4设置为vlan20。这样交换机的两个虚拟局域网分别都有到路由器的的通道了。虚拟局域网vlan10的数据通过fa0/3端口转发到路由器fa0/0端口,Vlan20的数据通过fa0/4端口转发到路由器fa0/4端口。
这样两个虚拟局域网之间可以相互访问。下图是虚拟局域网Vlan10的pc0来ping虚拟局域网vlan20的pc1,ping通了,说明不同虚拟局域网之间实现了访问。
方式二:
单臂路由:
单臂路由的意思就是只有一条物理数据链路到路由器,简单说路由器和交换机之间只有一条线相连,不像双臂一样每个虚拟局域网都要一跟线与路由器相连。
这里有个问题,只用一个物理线路的话,路由器是怎么识别交换机发来的数据到底是Vlan10虚拟局域网的数据还是Vlan20的呢?
这里就使用到了二种协议,IEEE802.1Q协议和ISL协议。这这两个协议就是给数据帧进行标记虚拟局域网号的,这样路由器就知道是哪个虚拟局域网传来的数据了。IEEE802.1Q和ISL,下面是协议的简单介绍:
802.1Q:基本标准的IEEE协议,属业界标准。
ISL(Inter-Switch Link):Cisco专有的Trunk封装方式。
802.1q协议是在以太网帧的源MAC个和Type字段之间插入4个字节的Tag字段,并将原有的FCS重写。TAG字段里包括priority和VLANID,TPID=0X8100表示是以太网帧。
ISL协议是在以太网帧的最外层家个26字节的帧头,重新计算的CRC放在帧尾。在26字节的报头里有15bit用来表示VLAN,但只用到低10位。即1024个VLAN数目。在26字节的报头里有15bit用来表示VLAN,但只用到低10位。即1024个VLAN数目。
这里我们只用802.1q,因为这个协议是业界标准,所以推荐使用802.1q协议。
先给拓扑图看看:
我们用主机pc0来ping 主机pc5。
我们先来看看一般数据链路层封装的以太网帧是什么样子。下图主机pc0正常发送交换机switch0的Ethernet II帧格式和实例,属于以太网帧格式的一种,共有四种,读者可以自己百度其他三种格式。
从上面可以看出以太网帧中,并没有标注这个数据帧是属于哪个虚拟局域网的。正常情况下,这个数据帧应该是交换机直接转发出去,不做任何修改。但是当交换机转发的端口使用了8021.q协议后,就会将上面的以太网帧进行封装标记。看下图,交换机转发出去的以太网帧格式和实例。
增加的的字段说明:
Start-of-Frame Delimiter(SFD) - 1字节。字段中1和0交互使用,结尾是两个连续的1,表示下一位是利用目的地址的重复使用字节的重复使用位。
TPID - 值为8100(hex)。当帧中的 EtherType 也为8100时,该帧传送标签 IEEE 802.1Q/802.1P。
TCI - 标签控制信息字段,包括用户优先级(User Priority)、规范格式指示器(Canonical Format Indicator)和 VLAN ID。
我们发现,以太网帧出现了其他字段。其中TPID是用来表示封装协议的类型,例如上面的数值TPID表示封装协议是802.1q。
TCI主要是用来标记VLan ID。
看到你也许明白了,802.1q协议其实就是将数据链路层的以太网帧加上一些标号,例如虚拟局域网ID(Vlan ID),这样交换机将以太网帧转发给路由器后,路由器端口如果也使用了802.1q协议,就知道了这些数据是属于那些虚拟局域网的,然后下一步尽可以转发了。
所以关键点就在802.1q协议。
所以,关于交换机和路由器相连的端口必须封装802.1q协议,才能让不同的虚拟局域网之间通信。
所以关于802.1q协议的作用,你懂了吗?
那怎么配置交换机和路由器的端口802.1q协议呢,请往下继续看
接下来我们开始进入配置操作:
首先我们划分两个子网1 192.168.1.0/24和子网2 192.168.2.0/24。子网1有两个主机,子网2有一个主机。
请看下图:
图中我们使用了一个思科模拟器中的交换机2950和路由器1841,然后选择三个主机。三个pc0和pc5属于虚拟局域网Vlan10,pc1属于虚拟局域网Vlan20。下面试具体的配置信息。
1、交换机: Vlan数据库我们建立两个虚拟局域网,名称Vlan10和Vlan20, Vlan号为10和20,交换机与主机之间的端口设置为Access模式,交换机连接路由器的端口fa0/3设置为Trunk模式。
2、路由器:我们使用直通线将路由器的fa0/0端口连接到交换机端口fa0/3。
说明:路由器fa0/0端口不用设置i和子网掩码,因为我们要使用的不是物理接口fa0/0,我们要使用的是路由器fa0/0端口的逻辑子接口,你可以想象成这个端口有多个子接口可以与交换机相连,就好像双臂路由一样,只是肉眼看不见而已。
路由器我们使用两个逻辑子接口fa/0.1和fa0/0.2,来连接两个子网,fa0/0.1的设置为ip:92.168.1.1子网掩码255.255.255.0, fa0/0.2接口设置为ip:192.168.2.1和255.255.255.0,这两个ip地址分别作为两个子网的网关。
3、pc0: ip:192.168.1..2 ,子网掩码:255.255.255.0 网关:192.168.1.1 接入交换机的fa0/1端口,交换机的端口fa0/1设置为Access和Vlan10。
pc1: ip:192.168.2.1 子网掩码:255.255.255.0 网关:192.168.2.1 接入交换机的fa0/2端口,交换机的端口fa0/2设置为Access和Vlan20。
pc5: ip:192.168.1.3 子网掩码:255.255.255.0 网关:192.168.2.1 接入交换机的fa0/5端口, 交换机的端口fa0/5设置为Access和Vlan10。
具体配置步骤,你也可以选择命令行配置,我是为了让大家看的更直观,采用图形界面配置。
第一步:
1.主机信息配置:下图只是一个主机实例,其他主机类似。
第二步:
1、给交换机添加vlan数据库,并将设置相应的交换机的端口。
添加Vlan10和Vlan20。
2、配置交换机连接主机的端口:下图只是一个fa0/1,其他端口类似。
3、配置交换机连接路由器的端口:设置为Trunk模式。
关于dot1.q协议封装的说明:
2950只支持802.1Q,所以配置trunk的时候,默认封装dot1.q的
3560这些,支持多种,所以需要指定是哪一种封装模式。
2950交换机默认封装的是dot1q协议,所以你就不用在fa0/3端口再封装802.1q协议了。如果其他交换机,可能需要封装802.1q协议,就输入下面命令,进入相应的接口,输入switchport trunk encapsulationdot1q。例如这里的fa0/3端口,命令如下:
enable
config t
switchport trunk encapsulation dot1q
这里出错,是因为2950交换机已经封装了802.1q协议。所以其实没必要再封装这个端口的协议。
第三步:
路由器配置,这里我们使用fa0/0的逻辑子端口,所以不能通过图形界面配置,只能命令行配置。
路由器配置图如下:
首先给路由器添加同样的Vlan数据库Vlan10和Vlan20
路由配置命令:
将鼠标放在路由器上几秒,就会显示所有接口的信息。可以查看是否设置成功。
测试结果:成功了。写的好累!!!
方式三:
前面介绍的都是路由器与二层交换机组合使用来实现路由转发的。其实只要交换机有路由功能,就可以不用连接路由器了。三层交换机及以上就具有这样的功能。
下面就用三层交换机来实现不同虚拟局域网的通信。
大致分为两种情况
1、先看第一种情况,三层交换机直接与主机相连。
思科模拟器中的三层交换机是一般3开头的,如下图型号3560,如果开头是2,就是二层交换机了,没有路由功能。
上图三层交换机划分了两个虚拟局域网Vlan10和Vlan20。主机pc0和pc1属于虚拟局域网Vlan10,主机pc2属于虚拟局域网Vlan20。ip地址配置子网掩码配置,如图所示。
然后在三层交换机中添加Vlan数据库Vlan10和Vlan20。
也可以命令行输入:输入如下:
(1)创建Vlan并命名
Switch>enableSwitch#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#vlan 10
Switch(config-vlan)#name Vlan10
Switch(config-vlan)#exit
Switch(config)#vlan 20
Switch(config-vlan)#name Vlan20
(2)把VLAN号分配给接口
Switch(config)#int fa0/1 //进入交换机端口fa0/1
Switch(config-if)#switchport mode access //将fa0/1端口设置为Access模式。
Switch(config-if)#switchport access vlan 10//将fa0/1端口划分为Vlan 10
图形
下面就是配置交换机的路由功能了:
Switch> enable
Switch# configure terminal
Switch(config)#ip routing //启动三层交换机路由功能
Switch(config)# interface Vlan 10 //添加设置关联Vlan号为10的路由端口
Switch(config-if)# ip address 192.168.1.1 255.255.255.0 //为该路由端口设置IP和子网掩码
Switch(config-if)# no shutdown //启动该端口
Switch(config-if)# exit //退出该端口
Switch(config)# interface Vlan 20 //添加设置关联Vlan号为20的路由端口
Switch(config-if)# ip address 192.168.2.1 255.255.255.0 //为该路由端口设置IP和子网掩码
Switch(config-if)# no shutdown //启动该端口
Switch(config-if)# exit //退出该端口
Switch(config-if)# end //完成退出
Switch# show ip route //查看路由信息
下图最后出现了配置信息,说明配置成功。
主机pc0来ping主机pc2,测试成功:
2、再来看第二种情况:
路由器的配置跟第一种一样,开启路由功能, ip routing ,然后创建Vlan10 和Vlan20, 再然后命令行进入Vlan10和Vlan20接口。配置ip和子网掩码。
显示路由表
测试: