暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为ACL实战技术:二层ACL应用场景和配置

爱婷如命一生一世 2017-10-10
3445

哈哈,领取红包了吗?先听个歌曲放松一下吧!


华为二层ACL的应用场景和配置方法


先复习下之前ACL的一些知识:

华为官方按照ACL的规则来区别定义ACL:

 1.基本ACL

 2.高级ACL

 3.二层ACL

 4.用户自定义ACL

 5.用户ACL

 6.IPV4 ACL

 7.IPV6 ACL


二层ACL从字面的意义上来看,是跟OSI七层模型的二层数据链路层有关系,针对企业的实际用网上来说,在二层中用的最多的是MAC地址,帧中继等。

而Mac地址存放在以太网帧头部分里。(封装和解封装知识需要了解。)

在华为设备中对二层ACL设计中,本身的含义就是根据以太网的帧头信息规则来定义。


那么,在二层ACL中,在华为官方中的解释,是可以通过以下帧头的要素来控制数据报文。


①MAC地址。推荐配置(源和目标MAC地址。)

我通过wireshark来抓取报文:

可以看到在以太网帧头部中,包含了源Mac地址,目标Mac地址。


②二层的协议类型:(华为官方ACL中指的是过滤802.1Q协议)

在OSI七层模型中,三层有很多协议,二层也有很多协议,二层数据帧头部分也会承载这三层协议的(二层ACL中有通过协议类型来更改数据报文通过的功能,但是不推荐)。



③vlan号进行过滤。(华为官方指的是过滤802.1Q协议),

我要在这张拓扑中的sw1的g0/0/24接口上抓取报文,然后我站在PC4上去Ping 1.3


从wireshark嗅探工具的报文中,我们可以看见,其中802.1Q 就是trunk的协议,(标准的干道协议。)

二层ACL控制二层协议,来达到我们控制报文的需求。


在企业的实际局域网环境中,绝大部分是采用以太网来接,两个交换机之间的链路必定是封装trunk 链路,也就是用802.1Q干道协议来互相传输。(如果不采用trunk,意味着除了默认vlan(指的是vlan1),本帧vlan是不打标签的,其他的vlan出去之后是封装不通过的。)

而vlan ID是封装在802.1Q协议字段中,所以在同一个交换机而言,是不存在过滤vlan的!因为我只需配置trunk链路中是否放行哪些vlan即可,何必大费周章的去用2层ACL控制vlan呢?

因此,不需要在ACL中来配置。


因此在二层用户ACL配置中,最为经典的就是控制mac地址。

先复习下ACL的作用:如下图

在我分享过的基本ACL和高级ACL中,服务对象为ip .也就是路由过滤。

对于二层ACL是对报文进行过滤。

在登录控制方面来说,二层ACL是根本就不能有效的进行过滤,别忘了在浩瀚的广域网中,设备和设备之间的链路很有可能是串口,而串口是不存在MAC地址的! 


在本地的局域网中是大量存在以太网的,所以,这里我们讨论的场景是局域网,因此二层ACL的过滤我们可以以报文过滤方式应用(以太网帧头部过滤)。报文过滤。(又分为对转发报文的过滤,对送cpu处理的报文过滤






首先要明白的是的ACL的责任就是过滤:对上送cpu处理的报文过滤,可以称之为黑名单。

这次分享的重点就是ACL对转发报文的过滤进行梳理总结:

同样,二层ACL也是离不开定义ACL和应用ACL这两大框架的,所以为了更简练的使用,我套用实战中经常用到的在接口下简化流策略应用:

还是利用这张拓扑来做实验:




定义二层AL


[sw1]acl 4001


二层ACL定义规则:

[sw1-acl-L2-4001]rule permit source-mac

很明显的看到,如果你定义了acl4001的时,设备就认定了你是在定义一个二层的ACL,所以你在定义源地址时只有源MAC地址。


对照拓扑:我只允许让vlan1的pc1 (smac:54-89-98-1D-03-2B)访问vlan3的pc5(smac:54-89-98-FF-23-1B),pc1是不能访问任何主机的。


定义规则如下:

[sw1-acl-L2-4001]rule permit source-mac 5489-981D-032B destination-

mac 5489-98FF-231B

[sw1-acl-L2-4001]rule deny 


现在,我站在pc1上去ping PC5 ,按照我定义的规则,实验结果应该是pc1和pc5之间相互能够通讯,而pc1却不能和其他主机通讯。

但是实验结果却是pc1竟然能和pc6互相通讯。

这样的话,就说明acl4001中的 deny 并没有被匹配上!

没有匹配上deny的原因在于:ACL规则被定义,却忘记了用简化流策略在接口上的in方向应用了!!(我当时学的时候也是忘记了,长记性)


所以我要在sw1的g0/0/2口上做in方向的应用(如果你要在g0/0/6口上做out方向应用,你的目的和源mac地址就要互相调换一下。)

[sw1-GigabitEthernet0/0/2]traffic-filter inbound acl 4001 


在接口下应用完acl之后,回到PC1上,继续测试:

出乎意料的是,两者竟然都不能够正常通讯了!


更无语的是,同一个vlan内的主机都不能够和pc1建立通讯关系:


首先造成这样的问题,从表面上来看,是没有任何问题的,学网络一定是在原理+实践,通过wireshark抓包嗅探来分析下故障原因!

我站在pc1上ping pc5 抓取sw1的g0/0/2号口的数据报文:

在icmp的请求报文中,我观察到icmp报文中的目的Mac 地址不是pc5的Mac地址。

报文中目的mac地址是:(4c-1f-cc-be-12-24)

而pc5的mac地址是      (54-89-98-FF-23-1B)

造成目的地址不一样的原因:主机逻辑!



因为在PC1ping了一个跨越自己子网的IP地址,不在同一个网段是一定是通过arp请求获得网关的ip地址!

证实这个4c-1f-cc-be-12-24地址确实是网关地址:

[sw1]display interface GigabitEthernet 0/0/2


或者查询vlan1的mac地址:

[sw1]display interface Vlanif 1


因此根据acl4001里面的定义规则,没有匹配上循序通过的规则后,全部都是被拒绝通过的!

造成都不通讯的原因就是出现在这里了,所以基础知识还是非常的重要的!!!!不论你学的多么深奥,有些故障分析还是离不开这些基础知识的!

从这里可以看出二层acl对于控制不同vlan间不好控制,不同交换机的网关地址是不一样的!根据主机逻辑原理来说,太极端了,pc到达网关后,要么全部通过要么全部不通过!


在使用二层acl时:

在同一个vlan内部通过mac地址进行报文过滤。


既然在同一个vlan内部通过mac地址进行报文过滤,那么我现在做一个实验:

还是这张拓扑,只不过我在vlan1下增加了一台主机,地址是10.0.1.10/24,

对照拓扑,我这里的需求是pc1不能够和pc2通讯,但能其他主机进行通讯


在同一个vlan内,我要将sw1的g0/0/10口加入到vlan1中并将端口设置为access类型!(其实不用加vlan1,都是默认vlan,这里我只是提醒下自己加入vlan的方法!)

[sw1-GigabitEthernet0/0/10]port link-type access

[sw1-GigabitEthernet0/0/10]port default vlan 1



重新定义一个acl :

这里我定义一个acl4002

[sw1-acl-L2-4002]rule deny source-mac 5489-981D-032B destination-mac 5489-9867-5238

[sw1-acl-L2-4002]rule permit 


不要忘记定义完acl之后,还要在接口上进行in方向的应用哦!

[sw1-GigabitEthernet0/0/2]traffic-filter inbound acl 4002



接下来就站在pc1上进行结果测试:看看是否符合实验需求(pc1不能够和pc2通讯,但能其他主机进行通讯!)

结果是符合我这次实验的需求的!



                                                           27








文章转载自爱婷如命一生一世,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论