直接进入正题,这章我们要介绍的是vlan间路由,那么什么是vlan间路由呢?
我们部署了传统vlan的交换机在隔离二层广播域的同时,也间接地隔离了各个vlan之间的其他二层流量交换。
导致了处在不同vlan之间的主机不能进行二层通讯,想要实现不同vlan之间主机的通讯只能经过三层路由转发。
解决VLAN间通信问题的技术就叫做vlan间路由。
第一种方法:每个vlan一个物理连接
我们来看这张图,pc1和pc2处在不同的vlan中,这是时候他们不能进行二层的数据互访。想要实现互相通讯的话,我们在路由器上为每一个VLAN都配置一个物理连接。将数据流分不同VLAN流到路由器上不同的端口中,再通过路由器进行路由的转发,以实现VLAN之间的通信。
但是这样的方法有着一种缺陷,随着每个交换机上VLAN数量的增加,这样做必然需要大量的路由器接口,而路由器的接口数量是极其有限的。并且,某些VLAN之间的主机可能不需要频繁进行通信,如果这样配置的话,会导致路由器的接口利用率很低。因此,实际应用中一般不会采用这种方案来解决VLAN间的通信问题。
第二种方法:单臂路由
解决vlan的间互相通讯的第二种方法叫做单臂路由,在交换机和路由器之间仅使用一条物理链路连接。在交换机上,把连接到路由器的端口配置成Trunk类型的端口,并允许相关VLAN的帧通过,在路由器上需要创建子接口,逻辑上把连接路由器的物理链路分成了多条。一个子接口代表了一条归属于某个VLAN的逻辑链路。
那么应该去怎么做呢?
配置思路:
①首先在交换机上创建vlan,将对应端口划分进入vlan中
②交换机连接路由器的接口配置成trunk链路(作用:保证不同vlan的流量都能发给路由器)
③路由器上创建子接口
>为每个子接口分配一个IP地址。该IP地址与子接口所属VLAN位于同一网段
>在子接口上配置802.1Q封装,来剥掉和添加VLAN Tag,从而实现VLAN间互通
>子接口上执行命令arp broadcast enable使能子接口的ARP广播功能
(路由器接收到pc1的数据包,之后要进行转发到pc2,但是这时候不知道pc2的mac地址,所以要开启子接口的arp广播功能,让它能发arp广播问pc2的mac地址)
port link-type trunk //修改上联链路为trunk
port trunk allow-pass vlan 10 20 //trunk链路允许vlan2,vlan3通过.
dot1q termination vid ? //配置子接口dot1q封装的单层VLAN ID,收到的时候去掉vlan2的标签 发出的时候加上vlan2的标签
arp broadcast enable //子接口开启arp广播功能
数据流程:
以pc2访问pc1为例,pc2将数据发给交换机,交换机打上标签之后从trunk链路发给路由器的子接口g0/0/0.2,子接口收到首先拆除vlan20的标签,然后查表从子接口g0/0/0.1发出去,发出去的时候因为配置了(dot1q termination vid 10)所以携带了vlan10的标签,交换机收到之后转发给vlan10中的pc1。
第三种方法:三层交换
三层交换就是带有路由功能的交换机,也就是说当一个交换机收到一个数据之后,它能够识别这个数据中的ip地址,然后可以进行路由转发。
在三层交换机上配置VLANIF接口来实现VLAN间路由。如果网络上有多个VLAN,则需要给每个VLAN配置一个VLANIF接口,并给每个VLANIF接口配置一个IP地址。用户设置的缺省网关就是三层交换机中VLANIF接口的IP地址。
配置思路:
①交换机上创建vlan
②将对应接口划分进入vlan中去
③针对vlan创建vlanif,给vlanif配置ip地址(ip地址是下层主机的网关)
数据流程
这时候如果pc1想要去访问pc2的时候,将数据包交给网关(交换机),当交换机收到之后,发现是去往2.0网段的数据包,直接查找自己的路由表进行转发。