不同虚拟机局域网Vlan之间访问

时间:2022-12-24 20:39:30

上篇博客讲了什么是虚拟局域网,以及如何搭建虚拟局域网。这篇讲述如何使不同虚拟局域网之间进行通信。

不同虚拟局域网通信需要路由设备进行转发。路由设备可以是路由器也可以是具有路由功能的三层交换机。

上一讲:认识虚拟局域网及搭建(https://mp.csdn.net/postedit/80199792)

这一讲:

1、利用二层交换机——路由器方式来实现不同虚拟局域网之间的访问。

方式一:

我们称为双臂路由法,所谓双臂是指交换机到路由器有两个线路,其实三个也行,但是路由器接口很少,很少使用这种双臂路由法实现不同虚拟局域网通信。不过,话虽如此,方法还是要将出来的,请看下图:

不同虚拟机局域网Vlan之间访问

上图中,我们将路由器与交换机用两根直通线连接在一起。在交换机中划分两个子网,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通了,说明不同虚拟局域网之间实现了访问。

不同虚拟机局域网Vlan之间访问



方式二:


不同虚拟机局域网Vlan之间访问

单臂路由:

    单臂路由的意思就是只有一条物理数据链路到路由器,简单说路由器和交换机之间只有一条线相连,不像双臂一样每个虚拟局域网都要一跟线与路由器相连。

这里有个问题,只用一个物理线路的话,路由器是怎么识别交换机发来的数据到底是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协议。
先给拓扑图看看:

不同虚拟机局域网Vlan之间访问

我们用主机pc0来ping 主机pc5。

我们先来看看一般数据链路层封装的以太网帧是什么样子。下图主机pc0正常发送交换机switch0的Ethernet II帧格式和实例,属于以太网帧格式的一种,共有四种,读者可以自己百度其他三种格式。

不同虚拟机局域网Vlan之间访问

不同虚拟机局域网Vlan之间访问

从上面可以看出以太网帧中,并没有标注这个数据帧是属于哪个虚拟局域网的。正常情况下,这个数据帧应该是交换机直接转发出去,不做任何修改。但是当交换机转发的端口使用了8021.q协议后,就会将上面的以太网帧进行封装标记。看下图,交换机转发出去的以太网帧格式和实例。

不同虚拟机局域网Vlan之间访问

不同虚拟机局域网Vlan之间访问

增加的的字段说明:

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有一个主机。

请看下图:

不同虚拟机局域网Vlan之间访问

图中我们使用了一个思科模拟器中的交换机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.主机信息配置:下图只是一个主机实例,其他主机类似。

不同虚拟机局域网Vlan之间访问


第二步:

1、给交换机添加vlan数据库,并将设置相应的交换机的端口。

添加Vlan10和Vlan20。

不同虚拟机局域网Vlan之间访问


2、配置交换机连接主机的端口:下图只是一个fa0/1,其他端口类似。

不同虚拟机局域网Vlan之间访问

3、配置交换机连接路由器的端口:设置为Trunk模式。

不同虚拟机局域网Vlan之间访问

关于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

不同虚拟机局域网Vlan之间访问


这里出错,是因为2950交换机已经封装了802.1q协议。所以其实没必要再封装这个端口的协议。


第三步:

路由器配置,这里我们使用fa0/0的逻辑子端口,所以不能通过图形界面配置,只能命令行配置。

路由器配置图如下:

首先给路由器添加同样的Vlan数据库Vlan10和Vlan20

不同虚拟机局域网Vlan之间访问

路由配置命令:

Router>enable
Router#config
Configuring from terminal, memory, or network [terminal]?
Enter configuration commands, one per line. End with CNTL/Z. .................进入全局配置模式
Router(config)#interface fa0/0 ................进入和 交换机连接的那个接口fa0/0
Router(config-if)#no shutdown ................激活该端口
Router(config-if)#exit ……………返回到全局配置模式
Router(config)#interface fa0/0.1 ...........配置  子接口 这是配置单臂路由的关键,这个接口是个  逻辑接口,并不是实际存在的物理接口,但是功能却和物理接口是一样的。
Router(config-subif)#encapsulation dot1q 2 .......为这个接口配置802.1Q协议,最后面的 2 是vlan 号,这也是关键部分
Router(config-subif)#ip address 192.168.1.1  255.255.255.0 .........为该接口划分网关地址。
Router(config-subif)#exit
Router(config)#interface fa0/0.2 .....同样,进入第2个子接口,进行配置
Router(config-subif)#encapsulation dot1q 3 .........配置802.1Q协议
Router(config-subif)#ip address 192.168.2.1  255.255.255.0 ......划分网关地址和 子网掩码
Router(config-subif)#end
%SYS-5-CONFIG_I: Configured from console by console ..........完成配置

经过分别对pc0和pc1两台机子互相ping的测试,可以发现能够ping通,说明实验成功。
下图是配置图;

不同虚拟机局域网Vlan之间访问

不同虚拟机局域网Vlan之间访问

将鼠标放在路由器上几秒,就会显示所有接口的信息。可以查看是否设置成功。

测试结果:成功了。写的好累!!!

不同虚拟机局域网Vlan之间访问




方式三:

前面介绍的都是路由器与二层交换机组合使用来实现路由转发的。其实只要交换机有路由功能,就可以不用连接路由器了。三层交换机及以上就具有这样的功能。

下面就用三层交换机来实现不同虚拟局域网的通信。

大致分为两种情况

1、先看第一种情况,三层交换机直接与主机相连。

思科模拟器中的三层交换机是一般3开头的,如下图型号3560,如果开头是2,就是二层交换机了,没有路由功能。

不同虚拟机局域网Vlan之间访问


上图三层交换机划分了两个虚拟局域网Vlan10和Vlan20。主机pc0和pc1属于虚拟局域网Vlan10,主机pc2属于虚拟局域网Vlan20。ip地址配置子网掩码配置,如图所示。

然后在三层交换机中添加Vlan数据库Vlan10和Vlan20。

也可以命令行输入:输入如下:

(1)创建Vlan并命名

Switch>enable
Switch#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

图形

不同虚拟机局域网Vlan之间访问

下面就是配置交换机的路由功能了:

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 //查看路由信息

下图最后出现了配置信息,说明配置成功。

不同虚拟机局域网Vlan之间访问

主机pc0来ping主机pc2,测试成功:

不同虚拟机局域网Vlan之间访问


2、再来看第二种情况:

不同虚拟机局域网Vlan之间访问


路由器的配置跟第一种一样,开启路由功能, ip routing ,然后创建Vlan10 和Vlan20, 再然后命令行进入Vlan10和Vlan20接口。配置ip和子网掩码。

不同虚拟机局域网Vlan之间访问

显示路由表

不同虚拟机局域网Vlan之间访问

测试:

不同虚拟机局域网Vlan之间访问