今天在做实验时由于对vlanif口不熟悉,导致实验出错了,怎么着都找不到原因。后来发现是vlanif没设置好,导致三层交换机数据们不能被识别就对vlanif包括vlan方面的知识做了详细了解。
SW3作为二层接入交换机,在其上配置了三个vlan,分别为vlan10、vlan20、vlan30,SW1作为vlan10、vlan20、vlan30的网关。SW1和SW2采用vlan100进行通信。
在抓包分析之前先学习一下Access、Trunk、Hybrid口对于数据帧的处理方法
Access口
1)接收包
查看数据帧是否带有vlan标签,如果有就直接丢弃
没有vlan标签的话就打上Access所属的vlan ID标签
2)发送包
查看数据帧是否带有vlan标签,如果有并且与自己的端口vlan标签则剥离标签,然后转发出去,否则直接丢弃。
所以Access接收和发送的数据帧都是不带vlan标签的
Trunk口
1)接收包
查看数据帧是否携带vlan标签,不携带则打上该Trunk端口的PVID,然后交付给上层处理
如果携带的话就判断端口是否允许携带该vlan标签的数据帧通过,允许就交付给上层处理,否则直接丢弃
2)发送包
查看数据帧是否携带vlan标签,不携带标签则打上Trunk端口的PVID,然后转发出去。
如果携带vlan标签的话就比对该标签是否和Trunk端口的PVID相同,相同则剥离标签转发出去,不相同则直接转发。
Hybrid口
1)接收包
查看数据帧是否携带vlan标签,不携带则打上该端口的PVID,然后交付给上层处理
携带标签则判断Hybrid端口是否允许该标签通过,允许则交付给上层处理,否则丢弃
2)发送包
需要判断该vlan标签在本端口的属性
如果是untag则剥离标签转发
如果是tag则直接转发
现使用PC1 (192.168.10.2)访问 lo0(192.168.40.2),并在沿途路线进行抓包,上图拓扑中红色箭头标记处为抓包点。
SW3的g1/0/1接口配置
interface GigabitEthernet1/0/1
port link-mode bridge
port access vlan 10
这个包是在SW1上的g1/0/1口抓取的,PC1属于vlan10,在经过SW3 G1/0/1接口转发时会被打上vlan10的标签,因此在刚进入SW1时还是vlan10的标签。
SW1的g1/0/1接口配置
interface GigabitEthernet1/0/1
port link-mode bridge
port link-type trunk
port trunk permit vlan 10 20 30
SW1的g1/0/2接口配置
interface GigabitEthernet1/0/2
port link-mode bridge
port link-type trunk
port trunk permit vlan all
combo enable fiber
这个包是在SW1和SW2中间设备上的下行口抓取的,SW1的g1/0/1接口允许vlan10通过,此时数据帧的标签还是vlan10,SW1查看数据包的目的地址是lo0,于是将其交付给vlan100转发并且剥离掉vlan10(此时是三层转发),当经过vlan100转发出去时,vlan标签就莫名变成了vlan100。在这次三层转发中完成了两种操作,分别是剥离原来的vlan10标签以及打上vlan100标签。
中间设备的g1/0/1接口配置
interface GigabitEthernet1/0/1
port link-mode bridge
port link-type trunk
port trunk permit vlan all
中间设备的g1/0/2接口配置
interface GigabitEthernet1/0/2
port link-mode bridge
port link-type trunk
port trunk permit vlan all
combo enable fiber
这个包是在SW2的入接口抓的,此时由于中间设备只是放行了vlan100,因此vlan100的标签没有发生改变。
当SW2的经由vlanif100接口接收到该数据帧,查看目的地址发现是找自己的lo0口,于是将其交给lo0。