利用单臂路由实现VLAN间路由

如图建立起拓扑图:

 路由器R1和PC机的实验编址如下图所示:

 在S2.上创建VLAN10和VLAN20,把连接PC-1的E0/0/1和连接PC-2的E0/0/2接口配置为Access类型接口,并分别划分到相应的VLAN中。

在S3上创建VLAN 30,把连接PC-3的E 0/0/1接口配置为Access类型接口,并划分到VLAN 30。

交换机之间或交换机和路由器之间相连的接口需要传递多个VLAN信息,需要配置成Trunk接口。
将S2和S3的GE 0/0/2接口配置成Trunk类型接口,并允许所有VLAN通过。

 


在S1上创建VLAN10、VLAN20和VLAN30,并配置交换机和路由器相连的接口为Trunk,允许所有VLAN通过。

由于路由器R1只有一一个实际的物理接口与交换机S1相连,可以在路由器上配置不同的逻辑子接口来作为不同VLAN的网关,从而达到节省路由器接口的目的。
在R1上创建子接口GE 0/0/1.1,配置IP地址192. 168.1.254/24,作为人事部网关地址。在R1上创建子接口GE 0/0/1.2,配置IP地址192. 168.2.254/24,作为市场部网关地址 。在R1 上创建子接口GE 0/0/1.3,配置IP地址192. 168.3.254/24,作为经理的网关地址。

 在PC-1、PC-2 和PC-3.上配置IP和相应的网关地址后,在PC-1.上测试与PC-2和PC-3间的连通性。发现还是无法建立通信:

 
      虽然目前已经创建了不同的子接口,并配置了相关IP地址,但是仍然无法通信。这是由于处于不同VLAN下,不同网段的PC间要实现互相通信,数据包必须通过路由器进行中转。由S1发送到R1的数据都加上了VLAN标签,而路由器作为三层设备,默认无法处理带了VLAN标签的数据包。因此需要在路由器上的子接口下配置对应VLAN的封装,使路由器能够识别和处理VLAN标签,包括剥离和封装VLAN标签。
      在R1的子接口GE 0/0/1.1.上封装VLAN 10,在子接口GE 0/0/1.2.上封装VLAN 20,在子接口GE 0/0/1.3.上封装VLAN30,并开启子接口的ARP广播功能。
      使用dotlq termination vid命令配置子接口对一-层tag报文的终结功能。即配置该命令后,路由器子接口在接收带有VLAN tag的报文时,将剥掉tag进行三层转发,在发送报文时,会将与该子接口对应VLAN的VLAN tag添加到报文中。使用arp broadcast enable命令开启子接口的ARP广播功能,不配置将使得子接口无法发送ARP报文:

 在R1查看接口状态:

查看路由器R1的路由表:

 在PC1上测试与192.168.1.254和PC间的连通性,发现一切正常:

 在PC1上TracertPC2:

      可以观察到PC-1先把ping包发送给自身的网关192.168.1.254, 然后再由网关发送到PC-2。
      现以PC-1 ping PC-2为例,分析单臂路由的整个运作过程。
      两台PC由于处于不同的网络中,这时PC-1会将数据包发往自己的网关,即路由器R1的子接口GE 0/0/1.1的地址192.168.1.254。
      数据包到达路由器R1后,由于路由器的子接口GE 0/0/1.1已经配置了VLAN封装,当接收到PC-1发送的VLAN 10的数据帧时,发现数据帧的VLANID跟自身GE0/0/1.1接口配置的VLAN ID - -样,便会剥离掉数据帧的VLAN标签后通过三层路由转发。
      通过查找路由表后,发现数据包中的目的地址192.168.2.1所属的192.168.2.0/24 网段的路由条目,已经是路由器R1.上的直连路由,且出接口为GE 0/0/1.2,便将该数据包发送至GE 0/0/1.2接口。
      当GE 0/0/1.2接口接收到-一个没有带VLAN标签的数据帧时,便会加上自身接口所配置的VLAN ID 20后再进行转发,然后通过交换机将数据帧顺利转发给PC-2。

原文地址:https://www.cnblogs.com/FHBBS/p/11995414.html