不同VLAN之间互相通信

时间:2023-03-08 17:39:56

前话

我们经常到机房上课,想必对机房后面那层叠的跟DVD一样的机器有印象吧,那些就是交换机。

不同VLAN之间互相通信

交换机作用是什么?

我这里度娘一下:

交换机(Switch)意为“开关”是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。

说简单点,就是为主机之间创建通信道路的机器,如下图,各主机连接同个交换机,且IP在同一网段,在同一VLAN,他们是可以互相通信的,他们就简单构成了一个局域网。

不同VLAN之间互相通信

刚才提到了vlan,vlan又是什么呢?

同样度娘一下:

VLAN(Virtual Local Area Network)的中文名为”虚拟局域网”。

虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网。VLAN是一种比较新的技术,工作在OSI参考模型的第2层和第3层,一个VLAN就是一个广播域,VLAN之间的通信是通过第3层的路由器来完成的。与传统的局域网技术相比较,VLAN技术更加灵活,它具有以下优点: 网络设备的移动、添加和修改的管理开销减少;可以控制广播活动;可提高网络的安全性。

在计算机网络中,一个二层网络可以被划分为多个不同的广播域,一个广播域对应了一个特定的用户组,默认情况下这些不同的广播域是相互隔离的。不同的广播域之间想要通信,需要通过一个或多个路由器。这样的一个广播域就称为VLAN。

我个人理解呢,VLAN就是把一条大马路用隔离带分成多条小马路的技术。

要注意的是,每条小马路之间是不能相通的,图示如下:

不同VLAN之间互相通信

在交换机中可以添加VLAN和设置端口处于哪个VLAN,我们用之前简单局域网示例来讲解:

不同VLAN之间互相通信

上面一台主机 PC0 处于VLAN 1 ,下面两个主机 PC1 和 PC2 处于 VLAN 2 ,三台主机的IP处于同一网段。

PC0 接入交换机端口 Fa0/1 ,PC1 接入交换机端口 Fa0/2 ,PC2 接入交换机端口 Fa0/3 。

但由于VLAN不同,PC0 不能和 PC1 PC2 通信。

下面两台主机 PC1 和 PC2 的IP同网段,也同处于 VLAN 2 ,因此这两台主机可以互相通信。

交换机配置过程如下:

Switch> enable                                  //进入特权模式
Switch# vlan database //进入vlan数据库
Switch(vlan)# vlan 2 //添加一个vlan,vlan号为 2 。默认所有端口处于vlan 1 ,因此本例子只需添加添加 vlan 2
Switch(vlan)# exit //退出 vlan数据库
Switch# configure terminal //进入全局配置模式
Switch(config)# interface FastEthernet 0/2 //进入端口Fa0/2设置
Switch(config-if)# switchport access vlan 2 //设置端口Fa0/2处于vlan 2,默认所有端口处于vlan 1 ,所以本实例不用对端口Fa0/1设置vlan
Switch(config-if)# exit //退出端口Fa0/2设置
Switch(config)# interface FastEthernet 0/3 //进入端口Fa0/3设置
Switch(config-if)# switchport access vlan 2 //设置端口Fa0/3处于vlan 2
Switch(config-if)# end //设置完成退出

那么我们的主要问题来了,不同VLAN之间该如何进行通信呢?下面我们开始主题!

开始主题前,先上一张我对学校机房网络的图示 >_< ,有错请轻喷。

不同VLAN之间互相通信


不同VLAN之间互相通信

交换机vlan有什么用呢?谷歌娘度娘会跟你说什么降低一条网络线路的网络风暴提高利用率啊什么的。

我目前为止觉得很有用的是,实现通过不同vlan通信可以使不同网络段的主机能够进行通信。

上面这句话有点长,我举个例子吧,比如我们知道,若子网掩码为 255.255.255.0 ,IP为 192.168.10.100 的主机不能和 IP为 192.168.20.100 的主机进行通信,它们两不在同一子网。

那么有什么办法解决呢?有一种是通过路由器,路由器一般有两三个端口,接入子网的端口设置为子网的网关即可实现两个子网的通信,如下图所示:

不同VLAN之间互相通信

上图的确可以两台不同子网的主机的通信问题,那么问题又来了,两个子网各有3台或者更多主机呢?好吧,加上个交换机,一台交换机和主机组成一个子网,子网设置网关为接入的路由器端口IP,如下图所示:

不同VLAN之间互相通信

上图也的确可以使两个不同子网多台主机进行通信,但是一般一个交换机有24个端口,一个子网两三台主机那也太浪费了。

如果忽略成本这个方案可以通过,那么问题又来了,如果有3个子网或者更多的子网呢,主机也更多呢?

一台路由器也就那么两三个端口哦。也许大家会说,加多几个交换机,加多几个路由器来组网。

这种粗暴式的通过增加硬件成本组网肯定会导致后面很多的问题,

具体什么严重问题呢?大家有钱可以买来组网试试。

感觉钱就是最为严重的问题了~~~

VLAN技术的出现,可以大大减少开销成本,高大上的技术十分省钱!

开玩笑的 :)


实现不同VLAN之间通信的两种标准方式

单臂路由

讲解单臂路由前先看看双臂路由(好像是这样叫吧 =_= ) ,如下图:

不同VLAN之间互相通信

上图一个VLAN连接一个路由器端口,两三个子网路由器还可以对付,但是子网更多时,路由器端口就不够用了。

因此路由器端口多了一个子端口技术,来实现单臂路由。

路由器只需一个端口和交换机进行连接,并设置该端口的子端口对应的vlan信息,而交换机只需将连接路由器的端口设置vlan模式为trunk即可。

通过单臂路由实现不同vlan通信,可以节省路由端口消耗,单臂路由图解如下:

不同VLAN之间互相通信

交换机设置

对主机VLAN的划分的部分省略

Switch> enable
Switch# configure terminal
Switch(config)# interface FastEthernet 0/24 //Fa0/24端口连接路由器
Switch(config-if)# switchport mode trunk //设置该端口vlan模式为trunk
Switch(config-if)# switchport trunk allowed vlan all //设置该端口trunk模式下接收所有vlan线路的信息
Switch(config-if)# end //完成设置退出

注意,若交换机端口未启动,需要进入到未启动的端口,然后键入命令 no shutdown 对其进行启动。

路由器设置

路由器端口 Fa0/0连接交换机,该端口不要设置IP地址。

Router> enable
Router# configure terminal
Router(config)# interface FastEthernet 0/0
Router(config-if)# no shutdown //启动Fa0/0端口 Router(config-if)# interface FastEthernet 0/0.1 //添加设置Fa0/0端口的子端口Fa0/0.1
//同理Fa0/1端口的子端口可以为Fa0/1.1,Fa0/0.6等 Router(config-subif)# encapsulation dot1Q 1 //对该子端口Fa0/0.1进行802.1q协议的封装
//后面的数字 1 代表是的侦听VLAN号为 1 的传输数据 Router(config-subif)# ip address 192.168.10.1 255.255.255.0 //设置该子端口Fa0/0.1的IP和子网掩码
Router(config-subif)#no shutdown //启动该子端口 Router(config-if)# interface FastEthernet 0/0.2 //添加设置Fa0/0端口的子端口Fa0/0.2
Router(config-subif)# encapsulation dot1Q 2 //对该子端口Fa0/0.2进行802.1q协议的封装 Router(config-subif)# ip address 192.168.20.1 255.255.255.0 //设置该子端口Fa0/0.2的IP和子网掩码
Router(config-subif)# no shutdown //启动该子端口 Router(config-subif)# end //完成设置退出 Router# show ip route //查看路由信息 Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route Gateway of last resort is not set C 192.168.10.0/24 is directly connected, FastEthernet0/0.1
C 192.168.20.0/24 is directly connected, FastEthernet0/0.2

最后一下输出路由信息,说明设置成功。

C    192.168.10.0/24 is directly connected, FastEthernet0/0.1
C 192.168.20.0/24 is directly connected, FastEthernet0/0.2

三层交换机

普通交换机没有路由功能,而三层交换机可以看作普通交换机和路由器合二为一的机器。

因此三层交换机具有路由功能,而且三层交换机的端口是vlan端口。

三层交换机的使用很灵活,我这里说两种:

  • 主机——三层交换机——主机
  • 主机——交换机——三层交换机——交换机——主机

主机——三层交换机——主机

图解如下:

不同VLAN之间互相通信

三层交换机设置

三层交换机增加vlan和对主机的vlan划分部分省略。

Switch> enable
Switch# configure terminal Switch(config)#ip routing //启动三层交换机路由功能 Switch(config)# interface Vlan 1 //添加设置关联Vlan号为1的路由端口
Switch(config-if)# ip address 192.168.10.1 255.255.255.0 //为该路由端口设置IP和子网掩码
Switch(config-if)# no shutdown //启动该端口
Switch(config-if)# exit //退出该端口 Switch(config)# interface Vlan 2 //添加设置关联Vlan号为2的路由端口
Switch(config-if)# ip address 192.168.20.1 255.255.255.0 //为该路由端口设置IP和子网掩码
Switch(config-if)# no shutdown //启动该端口
Switch(config-if)# exit //退出该端口 Switch(config)# interface Vlan 3 //添加设置关联Vlan号为3的路由端口
Switch(config-if)# ip address 192.168.30.1 255.255.255.0 //为该路由端口设置IP和子网掩码
Switch(config-if)# no shutdown //启动该端口
Switch(config-if)# end //完成退出 Switch# show ip route //查看路由信息 Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route Gateway of last resort is not set C 192.168.10.0/24 is directly connected, Vlan1
C 192.168.20.0/24 is directly connected, Vlan2
C 192.168.30.0/24 is directly connected, Vlan3

输出以上路由信息表示设置成功 :)


主机——交换机——三层交换机——交换机——主机

图解如下:

不同VLAN之间互相通信

普通交换机添加vlan和对主机vlan划分部分省略。

若普通交换机连接三层交换机的端口已设置vlan模式为trunk,连接三层交换机后,三层交换机连接普通交换机的端口其模式会自动设置为trunk。

普通交换机设置(示例两个普通交换机设置相同)

Switch> enable
Switch# configure terminal
Switch(config)# interface FastEthernet 0/24
Switch(config-if)# switchport mode trunk //设置Fa0/24端口vlan模式为trunk
Switch(config-if)#end

三层交换机设置(与前面的类似)

Switch> enable
Switch#vlan database
Switch(vlan)# vlan 2 //添加vlan 2
Switch(vlan)# exit Switch# configure terminal Switch(config)#ip routing //启动三层交换机路由功能 Switch(config)# interface Vlan 1 //添加设置关联Vlan号为1的路由端口
Switch(config-if)# ip address 192.168.10.1 255.255.255.0 //为该路由端口设置IP和子网掩码
Switch(config-if)# no shutdown //启动该端口
Switch(config-if)# exit //退出该端口 Switch(config)# interface Vlan 2 //添加设置关联Vlan号为2的路由端口
Switch(config-if)# ip address 192.168.20.1 255.255.255.0 //为该路由端口设置IP和子网掩码
Switch(config-if)# no shutdown //启动该端口
Switch(config-if)# end //退出该端口 Switch# show ip route //查看路由信息 Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route Gateway of last resort is not set C 192.168.10.0/24 is directly connected, Vlan1
C 192.168.20.0/24 is directly connected, Vlan2

输出以上路由信息表示设置成功 :)


感想

毕竟这点内容写了一天了,累但是很满足,谢谢阅读~~~