单臂路由的方式实现
将交换机和路由器之间的链路配置为Trunk链路,并且在路由器上创建子接口以支持VLAN路由,配置能够让路由器子接口识别vlan的tag数据
配置路由器子接口封装vlan 在路由器相应的子接口下配置下面两条命令
dot1q termination vid "几"
命令配置子接口对一层tag报文的终结功能,即配置该命令后路由器子接口在接收带有vlan tag 的报文时 将剥掉tag进行三层转发 在发送报文时 会将与该子接口对应vlan的vlan tag添加到报文中
ARP broadcast enable
命令开启ARP广播的功能 如果不配置该命令 将会导致该子接口无法主动发送ARP广播报文,以及向外转发IP报文
实战演练
交换机的配置
S2的配置
vlan batch 10 20
#
interface Ethernet0/0/1
port link-type access
port default vlan 10
#
interface Ethernet0/0/2
port link-type access
port default vlan 20
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 10 20
#
S3的配置
vlan batch 30
#
interface Ethernet0/0/1
port link-type access
port default vlan 30
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 30
#
S1的配置
vlan batch 10 20 30
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10 20 30
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 10 20
#
interface GigabitEthernet0/0/3
port link-type trunk
port trunk allow-pass vlan 30
#
路由器的配置
vlan batch 10 20 30
#
interface GigabitEthernet0/0/1.1
dot1q termination vid 10
ip address 192.168.1.254 255.255.255.0
arp broadcast enable
#
interface GigabitEthernet0/0/1.2
dot1q termination vid 20
ip address 192.168.2.254 255.255.255.0
arp broadcast enable
#
interface GigabitEthernet0/0/1.3
dot1q termination vid 30
ip address 192.168.3.254 255.255.255.0
arp broadcast enable
#
结论:
分析一下通信过程
PC1访问PC2的过程
PC1自身的SIP是192.168.1.1,访问目标是192.168.2.1,PC1会用自身的掩码和目标IP地址做一个与运算,发现访问的目标和自己不在同一个网段,自己是192.168.1.0/24网段,目标是192.168.2.0/24网段,于是PC1会把数据发往AR1的G0/0/1.1接口,因为G0/0/1.1接口的IP地址恰好是我的网关地址,当数据到达交换机的时候,交换机进来会打上PVID是10的tag数据帧,交换机此时做的是解封装和封装停留在二层这块,因为交换机并没有做三层路由功能,查找MAC地址表项后,交换机会从G0/0/2接口发送出去,会保持tag进行发送,S1交换机收到tag为10的数据后,查找MAC地址表从G0/0/1接口发送出去,保持tag为10的标签进行发送,当这带有tag为10的数据到达AR1的G0/0/1.1接口后,由于该接口配置子接口对一层tag 10报文的终结功能,将剥掉tag 10进行三层转发 路由器查找路由表 发现从G0/0/1.2接口转发,在发送报文时 会将与该G0/0/1.2子接口对应vlan的vlan tag 20添加到报文中 并且由该子接口需要发送arp报文进行数据封装 所以 子接口需要支持主动发送arp报文的功能 所以需要在子接口上面配置该命令 ARP broadcast enable当S1的数据包收到tag 20的数据后,会从G0/0/2接口发送出去,然后S2收到后,会从Eth0/0/2接口发送给PC2主机
PC2访问PC1的过程
PC2自身的SIP是192.168.2.1,访问目标是192.168.1.1,PC1会用自身的掩码和目标IP地址做一个与运算,发现访问的目标和自己不在同一个网段,自己是192.168.2.0/24网段,目标是192.168.1.0/24网段,于是PC1会把数据发往AR1的G0/0/1.2接口,因为G0/0/1.2接口的IP地址恰好是我的网关地址,当数据到达交换机的时候,交换机进来会打上PVID是20的tag数据帧,交换机此时做的是解封装和封装停留在二层这块,因为交换机并没有做三层路由功能,查找MAC地址表项后,交换机会从G0/0/2接口发送出去,会保持tag进行发送,S1交换机收到tag为20的数据后,查找MAC地址表从G0/0/1接口发送出去,保持tag为20的标签进行发送,当这带有tag为20的数据到达AR1的G0/0/1.2接口后,由于该接口配置子接口对一层tag 20报文的终结功能,将剥掉tag 20进行三层转发 路由器查找路由表 发现从G0/0/1.1接口转发,在发送报文时 会将与该G0/0/1.1子接口对应vlan的vlan tag 10添加到报文中 并且由该子接口需要发送arp报文进行数据封装 所以 子接口需要支持主动发送arp报文的功能 所以需要在子接口上面配置该命令 ARP broadcast enable当S1的数据包收到tag 10的数据后,会从G0/0/2接口发送出去,然后S2收到后,会从Eth0/0/1接口发送给PC1主机
思考:如果在子接口下面配置DHCP server功能
请问:还需要在子接口上面启用arp广播功能吗?
不足点:
- 存在单点故障的可能性
- 此场景需要一台路由器,成本相对较高