实际网络中,经常会有VLAN之间互访的需求。

很多网工通常会选择一些方法,来实现不同VLAN间主机的相互访问,比如说Vlanif、单臂路由

今天就教你轻松实现VLAN间互访。


01——通过子接口实现 VLAN 间的互访


在二层交换环境下,一个VLAN就是一个广播域。


相同VLAN内的节点如果配置相同网段的IP地址即可直接通信,我们将这种通信称为二层通信。


告别VLAN孤岛,两招让你轻松实现互访_数据


不同VLAN是不同的广播域,一般也是不同的逻辑子网,而且相互隔离,无法直接互访,这样能起到隔绝广播的作用,如上图所示。


但是实际网络中往往VLAN之间有互访的需求。


例如同一公司不同的部门划分在不同的VLAN,那么如果这些部门之间有数据往来的需求呢?


此时二层交换机就无法实现了,需要借助三层设备(路由设备)。


一个最简单的方法,就是使用路由器:


告别VLAN孤岛,两招让你轻松实现互访_Ethernet_02


在上图中,交换机将GE0/0/1及GE0/0/23口都配置为access类型并都加入VLAN10。


将GE0/0/2及GE0/0/24都配置为access类型并都加入VLAN20。


然后将路由器Router的GE0/0/1口作为VLAN10用户的网关,GE0/0/2作为VLAN20用户的网关,从而利用路由器的路由功能实现两个VLAN之间的互访。


这么做看似可行,但是一个VLAN就需要路由器拿出一个接口,那么如果内网有10个VLAN呢?


路由器表示鸭梨很大。


所以另一种稍微改进点的方法是:


在路由器的一个物理接口上,配置逻辑的子接口(Sub-interface)来实现同样的需求,这种解决方案叫单臂路由


告别VLAN孤岛,两招让你轻松实现互访_三层交换机_03


在上图中,交换机与路由器之间仅需一根物理链路即可。


这段链路由于要承载多VLAN的数据,因此在交换机上就要将与路由器对接的接口(GE0/0/24)设置为Trunk类型。


路由器这边呢,虽然只有一个物理接口(GE0/0/1)与交换机相连,但是我们可以基于这个物理接口创建多个子接口。


子接口GE0/0/1.10对应VLAN10,它能够识别VLAN10的标记,并且能够处理带VLAN10标记的数据帧,同理GE0/0/1.20对应VLAN20。


如此一来,在路由器上仅使用一个物理接口,即可支持多个VLAN的数据。


子接口是一个软件的、逻辑的接口,是基于物理接口创建的。路由器会把子接口当成是一个普通接口来对待。


通过子接口的方式我们可以大大节省硬件成本。


具体的配置如下:


告别VLAN孤岛,两招让你轻松实现互访_数据_04


完成如上配置后,交换机连接PC的接口添加到相应的VLAN则PC即可互通。


从上面这个碉堡的图可以更加形象地理解子接口的概念,其实就是相当于在一个大管道里套着两个小管道。


值得注意的是,一旦我们在物理接口上创建了子接口,那么后续的配置将不会再在物理接口上做,而是在子接口上进行。


我们只要保证物理接口没有被shutdown即可。


以太网子接口技术可部署在路由器上,也可以部署在防火墙上,我们来看一个例子。


告别VLAN孤岛,两招让你轻松实现互访_三层交换机_05


上面是一个非常简单的组网场景,站点内网有两个VLAN,VLAN10及VLAN20。


现在的需求是,要求VLAN10及VLAN20能够实现互访,而且互访流量必须经过防火墙做安全检查。


VLAN10内的网元非常重要,属于高安全级别的网络,而VLAN20内的网络则安全级别更低。


解决的办法:


上图中的交换机工作在二层模式,连接终端的接口配置为access类型并且分别加入到相应的VLAN。


同时交换机连接防火墙的接口GE0/0/24配置为Trunk类型并且放通VLAN10及VLAN20。


随后在防火墙的GE0/0/1口上创建两个子接口:GE0/0/1.10及GE0/0/1.20。


子接口的配置如图所示,这两个子接口分别对应VLAN10及VLAN20。


最后别忘了,要将子接口添加到相应的安全域中。


例如VLAN10这个网络如果比较重要,则可将防火墙的GE0/0/1.10接口添加到高安全级别的区域。


如Trust,而VLAN20可能需要接受来自外部的访问,因此规划在DMZ域,故将子接口GE0/0/1.20添加到DMZ区域。接下去就可以部署域间包过滤规则了。



02——通过vlan-interface实现 VLAN 间的互访


在理解了子接口之后,再来看看三层交换机是如何实现VLAN间的数据互访的

 01  从这里切入,开始理解并部署三层交换 


我们知道二层交换机是可以实现二层交换的,它关心的是数据帧,对帧头的二层信息进行读取并且根据自己的MAC地址表进行转发。


而三层交换机相当于在二层交换机的基础上,多了个路由模块,于是乎它就能支持路由功能了:


支持路由选择协议、支持三层数据转发、支持IP路由查找、支持三层接口等等。


告别VLAN孤岛,两招让你轻松实现互访_三层交换机_06


先来认识一下vlan-interface(简称vlanif)。


这是一个逻辑接口,也就是说这并不是一个真实的物理接口。


当我们在交换机上创建了一个VLAN之后,紧接着就可以创建一个与这个VLAN对应的vlanif。


例如我们创建了VLAN10,那么VLAN10对应的vlanif就是interface vlanif 10,这个vlanif10是一个三层接口。


你可以为这个vlanif10配置IP地址,与VLAN10内的PC用户的IP地址同一网段。


这样一来,VLAN10内的用户就能够将网关指向这个vlanif。


当VLAN10的PC需要访问本网段以外的网络时,它们将数据交给网关,也就是vlanif10,再由三层交换机去做路由查找及数据转发。


实际上,在这个理解过程中,我们可以拿单臂路由那个模型对类比。


所以看上面这图,在三层交换机上创建了两个VLAN:


10和20,同时为两个VLAN的vlanif分配了地址作为各自VLAN的用户网关。


这样一来,这台交换机的路由表里就有了两个VLAN网段的路由。


那么当两VLAN之间要互访时,VLAN10的用户将数据丢给自己的网关。


也就是vlanif10,数据到了vlanif10之后,三层交换机查看数据包的目的地址IP并在路由表中进行匹配。


发现目的地是VLAN20的所在网段,因此将数据从VLAN20扔出去,最终抵达目的地的VLAN20的PC。


Vlanif的基础配置:


告别VLAN孤岛,两招让你轻松实现互访_三层交换机_07


实验拓扑如上图所示。


PC1及PC2分别位于VLAN10及VLAN20,现在要求完成三层交换机SW的配置,使得两个VLAN的用户能够相互通信。


SW的配置如下:


#创建VLAN10及20,将GE0/0/1划分到vlan10,GE0/0/2划分到vlan20:
[SW] vlan batch 10 20
[SW] interface GigabitEthernet 0/0/1
[SW-GigabitEthernet0/0/1] port link-type access
[SW-GigabitEthernet0/0/1] port default vlan 10
[SW] interface GigabitEthernet 0/0/2
[SW-GigabitEthernet0/0/2] port link-type access
[SW-GigabitEthernet0/0/2] port default vlan 20


#为vlanif10及vlanif20配置IP地址,作为vlan10及vlan20用户的网关[SW] interface vlanif 10
[SW-vlanif10] ip address 192.168.10.254 24
[SW] interface vlanif 20
[SW-vlanif10] ip address 192.168.20.254 24


完成上述配置后,PC1将自己的IP地址设置在192.168.10.0/24 网段;


同时将网关配置为192.168.10.254;PC2的IP地址则配置在192.168.20.0/24,网关设置为192.168.20.254,两者就能够互相通信了。

 02  三层交换机、路由器简单组网


告别VLAN孤岛,两招让你轻松实现互访_数据_08


实验拓扑如上图所示。


PC1及PC2分别处于VLAN10及VLAN20,它们的缺省网关都设置在三层交换机SW2上。


SW1是接入层交换机,只具备二层交换功能。SW2与路由器Router实现三层对接,用于两者对接的VLAN是VLAN99。


上述拓扑,我们可以画一个逻辑图来帮助理解:


告别VLAN孤岛,两招让你轻松实现互访_数据_09


SW1的配置如下:


[SW1] vlan batch 10 20
[SW1] interface GigabitEthernet 0/0/1
[SW1-GigabitEthernet0/0/1] port link-type access
[SW1-GigabitEthernet0/0/1] port default vlan 10
[SW1] interface GigabitEthernet 0/0/2
[SW1-GigabitEthernet0/0/2] port link-type access
[SW1-GigabitEthernet0/0/2] port default vlan 20


#连接SW2的接口,配置为Trunk类型
[SW1] interface GigabitEthernet 0/0/22  
[SW1-GigabitEthernet0/0/22] port link-type trunk
[SW1-GigabitEthernet0/0/22] port trunk allow-pass vlan 10 20


SW2的配置如下:


[SW2] vlan batch 10 20 99
[SW2] interface GigabitEthernet 0/0/22  #连接SW2的接口
[SW2-GigabitEthernet0/0/22] port link-type trunk
[SW2-GigabitEthernet0/0/22] port trunk allow-pass vlan 10 20
[SW2] interface GigabitEthernet 0/0/24  #连接路由器的接口
[SW2-GigabitEthernet0/0/24] port link-type access
[SW2-GigabitEthernet0/0/24] port default vlan 99
#
[SW2] interface vlanif 10
[SW2-vlanif10] ip address 192.168.10.254 24
[SW2] interface vlanif 20
[SW2-vlanif20] ip address 192.168.20.254 24
[SW2] interface vlanif 99
[SW2-vlanif99] ip address 192.168.99.1 24


#为SW2配置默认路由,下一跳是路由器[SW2] ip route-static 0.0.0.0 0.0.0.0 192.168.99.2


Router的配置如下:


[Router] interface GigabitEthernet 0/0/0
[Router-GigabitEthernet0/0/0] ip address 192.168.99.2 24#记得为路由器配置静态路由指向vlan10及vlan20对应的网段,否则回程数据就会有问题:[Router] ip route-static 192.168.10.0 24 192.168.99.1[Router] ip route-static 192.168.20.0 24 192.168.99.1