近来通过学习Cisco的标准ACL发现该ACL有两个方面的用途,一个是用在DV协议传递的路由条目进行控制,另外就是对于数据层面过滤流量,而这两种对于标注ACL的写法是不同的,具体的不同就是体现的反掩码的写法上
我们知道DV协议在传递路由条目的时候是携带路有前缀和掩码的(RIPv1除外),我们想要过滤某一个路由条目的时候,到底该怎样写呢?
假设我们想过滤掉3.3.3.0/24这个路由条目,怎样抓取这个路由条目?大多数初学者一定会写成:
access-list 10 permit 3.3.3.0 0.0.0.255
首先这种写法是肯定可以抓取路由条目,但是我们应该知道我们这个时候抓取的是路由前缀。我们说反掩码0代表必须匹配,而1表示任意,也就是说上面ACL的后8位任意变的前缀,这样抓取到前缀也肯定可以抓取到一些其他的路由前缀,例如3.3.3.128/25,和3.3.3.192/26等等这个样的前缀,这和我们的前缀列表一下语句是匹配的:
ip prefix-list 10 permit 3.3.3.0/24 le 32,如果你理解这条语句,那么也就很好理解标准ACL反掩码在用来抓取控制层面路由条目的方法了,那么我们到底该怎样抓取这个3.3.3.0/24这个路由条目呢,很简单:
access-list 10 permit 3.3.3.0 0.0.0.0
这样只会抓取在路由传递中前缀为3.3.3.0的路由了,等等,注意到我没有写掩码么?是的,尽管这样的ACL已经很精确了,但是他还会抓取到一下路由3.3.3.0/(24-32),共9个路由条目,不过这比上面抓取到256个路由条目要好的多了,大家也许会说能不能更精确点,只抓取3.3.3.0/24这个路由条目呢?可以的哦,就是使用前缀列表,但是如果你非要想使用标准ACL可不可以呢?不行的,但是这么做也是没有意义的,因为你的网络中不可能存在3.3.3.0/24和3.3.3.0/128这连个路由条目,也许你会说我可以部署这样的两个路由条目,是的,可以,但是这不符合一个专业的地址规划,至少你应该这样部署这两个路由条目即:3.3.3.0/25和3.3.3.128/25。
而在数据层面我们抓取数据包时,我们抓取的是数据包的源IP地址,假设你想抓取3.3.3.0/24网段中一个主机地址为3.3.3.1的数据包,你会怎么样写呢?
你应该写成
access-list 10 permit 3.3.3.0 0.0.0.0,表示完全匹配3.3.3.1这个主机地址,那么又假设你想放行所有3.3.3.0/24中所有的流行通信呢?
你应该写成
access-list 10 permit 3.3.3.0 0.0.0.255
来源:CSDN
作者:小钱12354
链接:https://blog.csdn.net/u013047651/article/details/23023073