一、背景介绍
某高速收费站网络拓扑如下图所示:
每个站点使用不同的IP地址段,站点A是一台三层交换机,站点B通过一台二层交换与站点A相连,且站点A,B的网关位于三层交换机的vlanif接口上,R3,R4通过vlanif出口访问外网。
此时现场新增一个需求:要求R3增加一个172.16.107.0/24网段地址与R4之间能够通过二层通信,且R3上新增的IP地址也能通过网关访问外网
二、需求分析
-
首先想到在R3的g/0/1接口上增加一个Secondary地址
[R3-GigabitEthernet0/0/1]display this
[V200R003C00]
#
interface GigabitEthernet0/0/1
ip address 192.168.174.1 255.255.255.0
ip address 172.16.107.1 255.255.255.0 sub
#
return此时R3上的192.168.174.1与172.16.107.1的IP使用相同的MAC地址
由于又要让172.16.107.0/24网段间二层通信,就想到了使用hybrid端口,此时网络配置如下图所示:
配置完后,进行ping测试,结果如下:
192.168.174.1/24能ping通vlanif174
172.16.107.1/24能ping通172.16.107.2/24
172.16.107.1/24不能ping通vlanif107
172.16.107.2/24能ping通vlanif107
通过上述结果能发现新增的让172.16.107.1地址二层通信正常,但三层不通三、问题定位
1.为什么172.16.107.1能ping通172.16.107.2却无法ping通172.16.107.254,这就要从通信过程说起,当用172.16.107.1 ping 172.16.107.254时发生如下:
-
Ping 172.16.107.254时,根据路由表最长匹配原则,将会使用172.16.107.1 做为源IP地址
-
用目的IP地址(172.16.107.254)与自己的掩码做与运算,得出目的IP与自己在同一网段,进行ARP广播
-
由于路由器上的三层接口没有配置802.1Q,此时ARP广播包以纯以太网帧形式发送
-
ARP广播包进入SW1时,打上接口PVID,并在vlan 174中进行广播,而vlanif 107属于vlan 107,所以ARP广播无法被接收,自然也不会回复,通信失败
那为什么172.16.107.1能ping通172.16.107.2,继续往下看(前4步一样,不做赘述): -
由于在SW1内没有查到172.16.107.2的mac地址,SW1进行泛洪,ARP广播通过trunk到达SW2
-
SW2此时也没有172.16.107.2的mac地址,同样在所有接口进行泛洪
-
数据包离开SW2时,由于hybrid口设置的untag 174,所以脱掉tag后R4能够正常接收并响应
四、解决方法
-
从g0/0/1接口删除172.16.107.1,将其添加到子接口,并进行dot1q封装
[R3]int g0/0/1
[R3]undo ip address 172.16.107.1 255.255.255.0 sub
[R3]int g0/0/1.107
[R3-GigabitEthernet0/0/1.107]dot1q termination vid 107 -
华为设备子接口默认抑制ARP广播,需要手动开启
[R3-GigabitEthernet0/0/1.107]arp broadcast enable
-
在SW1的入方向,允许vlan 107通过
[SW1-Ethernet0/0/1]port hybrid tagged vlan 107
至此所有操作完成