为庆祝2009获得多项大奖的年度巨作——《Cisco/H3C交换机配置与管理完全手册》重印,以及它的姊妹篇——《CIsco/H3C路由器配置与管理完全手册》将于今年10月底上市,同时感谢广大读者朋友的高度信任、评价和支持,近期将多摘选几篇内容发给大家共享。该书在卓越网上现在仅需要73折:http://www.amazon.cn/mn/detailApp?ref=RK&uid=477-0992093-5315614&asin=B002MAR8EM
另外,本人2009年度其他7本新书现在也有大幅优惠(多本仅需要72~74折)促销了:http://www.amazon.cn/s/ref=nb_ss?url=search-alias%3Dbooks&keywords=%E9%87%91%E7%89%8C%E7%BD%91%E7%AE%A1%E5%B8%88&searchKind=keyword&Go.x=11&Go.y=12
近期群中有许多读者问有关ACL配置的问题,但大多数问题都是不理解,或者根本不知道ACL配置命令中的各可选项和参数的功能和用法。为此近期多发了一些关于ACL配置的文章。本期发的是关于Cisco标准ACL命令的详细使用方法。
14.3.1基于列表号的Cisco标准IP ACL语法
标准ACL主要是基于IP协议的(参见本章前面的表6-1),所以在此也仅以基于IP协议的标准ACL进行介绍。基于列表号的Cisco 标准IP ACL格式如下:
access-list [list number][permit|deny][host/any][source address][wildcard-mask][log]
从命令格式可以看出,标准IP ACL是仅以源地址与规则行为匹配的,没有目的地址。也就是IP ACL在过滤时仅考查数据包中的源IP地址,凡是与源IP地址一样的都将应用相应的过滤行为规则。下面解释一下标准IP ACL的关键字和参数。
n access-list
创建ACL的命令。
n list number(列表编号)
ACL列表号,值的范围在0~99之间,这标准IP ACL中限定的,也就是在一个Cisco设备中最多可以创建100个标准IP访问列表。100~199为为扩展IP ACL的list number范围。另外,还有其他类型的ACL,它们的list number值范围也各不一样:基于协议类型码的ACL的list number范畴为200~299;基于MAC地址的ACL的list number范畴为700~799;基于IPX的标准ACL的list number范畴为800~899;基于IPX的扩展ACL的list number范畴为900~999;基于IPX业务通告协议的ACL的list number范畴为1000~1099;基于MAC地址的扩展ACL的list number范畴为1100~1199。其他协议类型的ACL的列表号范围参见表6-1。
n permit|deny(允许/拒绝)
设置ACL规则的关键参数,它代表本编号列表所设置的规则是允许后面指定的主机或网络进行通信,还是拒绝后面指定的主机或网络进行通信。在标准IP ACL中,使用permit参数可以使得和访问列表项目匹配的数据包通过接口,而deny参数可以在接口过滤掉和访问列表项目匹配的数据包。
n host/any
host和any分别用于指定单个主机和所有主机。host表示一种精确的匹配,其掩码(本节后面将详细介绍)为0.0.0.0。例如,我们希望仅允许来自192.168.0.10主机的报文通过,则可使用的标准IP访问控制列表语句如下(注意,其中没有用到“host”或者“any”关键字):
access-list 1 permit host 192.168.0.10 (1)
【经验之谈】对于标准IP访问控制列表来说,host关键字是默认的,也就是说式(1)中也可以省去输入host关键字,直接写成:
access-list 1 permit 192.168.0.10
如果上面示例是要仅拒绝192.168.0.10主机的报文,则标准IP访问列表如下:
access-list 10 deny host 192.168.0.10
当然也可以简写成(道理同上):
access-list 10 deny 192.168.0.10
与“host”关键字相对应的“any”关键字是源地证/目标地址0.0.0.0/255.255.255.255的简写。假定我们要拒绝从源地址192.168.0.10来的报文,并且要允许从其他源地址来的报文,则用标准的IP访问表可以使用下面的两条语句达到这个目的:
access-list 1 deny host 192.168.0.10
access-list 1 permit any
【注意】以上这两条语句的顺序不能倒过来。因为访问表语句的应用顺序是自上而下的,限制严格性要求最高的放在前面,最低的放在最后。在上面这两条语句中,上一条是拒绝某个范围的主机通过,限制性比下一条的允许所有的主机通过限制性要高,所以放在前面。应用后是先拒绝上一条指定的主机通过,然后再允许余下的其他所有主机通过。如果我们将两个语句顺序颠倒,将permit(允许)语句放在deny(拒绝)语句的前面,则我们将不能过滤来自主机地址192.168.0.1的报文,因为permit语句将允许所有的报文通过。所以说访问表中的语句顺序是很重要的,因为不合理语句顺序将会在网络中产生安全漏洞,或者使得用户不能很好地利用公司的网络策略。
n source address(源IP地址)
用来指定规则中数据通信源的IP地址或网络地址,以点分十进制表示,如:192.168.0.10表示一台主机,而如果是192.168.0.0则表示整个网段的主机。
在标准IP ACL中,只是对数据通信源进行了限定,所以其中只有“source address”(源地址),而后面没有“destination address”(目标地址)这个字段。
n wi1dcard-mask(通配符掩码)
Cisco的ACL中,是以掩码(mask)来与IP地址组合来指定主机范围的。这里的掩码也称为“反掩码”(inverse mask)或者“通配符掩码”(wildcard mask),用来指定单一主机或一个范围的主机。但它们与“子网掩码”(Sub Mask)是不同的。他们之间存在如下的关系:
mask = 255.255.255.255 - Sub Mask
如标准的C类IP地址的子网掩码为255.255.255.0,由此可以得到标准C类地址的掩码为(注意要分段对应进行减运算):
255.255.255.255 – 255.255.255.0 = 0.0.0.255
也就是直接把子网掩码中的所有值为“255”的八位组都转换成“0”,把非“255”的其他八位组,用“255”来减,差就是最终的值。如前面的255.255.255.0中前3组均为“255”,转换成“0”,最后一组为“0”,用“255”来减后得到“255”,所以最终该网络的通配符掩码为0.0.0.255。同样,如果某子网掩码为255.255.240.0,则该子网的通配符掩码值为0.0.15.255。其中的“15”等于“255-240”。
还有一种二进制计算方法。如子网掩码255.255.255.0转换二进制后得到“11111111.11111111.11111111.00000000”,经过“1”与“0”的相互转换后就得到了通配符掩码为“00000000.00000000.00000000.11111111”,再转换成十进制后得到0.0.0.255。这就是子网掩码为255.255.255.0的网络的通配符掩码。再如某网络划分子网后的子网掩码为“255.255.255.240”,转换成二进制后得到“11111111.11111111.11111111.11110000”,经过“1”与“0”的相互转换后,得到通配符掩码为“00000000.00000000.00000000.00001111”,转换成十进制就得到了“0.0.0.15”。这就是子网掩码为255.255.255.240的网络的通配符掩码。
假设您的公司有一个分支机构,其IP地址为C类的192.46.28.0.在您的公司,每个分支机构都需要通过总部的路由器访问Internet.要实现这点,您就可以使用一个通配符掩码 0.0.0.255。因为C类IP地址的最后一组数字代表主机,把它们都置1即允许总部访问网络上的每一台主机。因此,您的标准IP访问列表中的 access-list语句如下:
access-list 1 permit 192.46.28.0 0.0.0.255
在这里有一个特殊的通配符掩码0.0.0.0,它表示的是仅一台机,与前面式(1)中的“host”关键字的功能是一样的。这样,式(1)也就可以写成如下式(2)格式:
access-list 1 permit 192.168.0.10 0.0.0.0 (2)
比式(1)和式(2),可以这样理解,式(1)中的“host”关键字替代了式(2)中的通配符掩码(wildcard-mask)0.0.0.0,也就是说“host”关键字的是通配符掩码(wildcard-mask)0.0.0.0简写。但两者在语句中的位置不一样,书写时要注意了。
n Log(日志记录)
log关键字只在IOS版本11.3的Cisco设备中存在。如果该关键字用于访问表中,则对那些能够匹配访问表中的permit和deny语句的报文进行日志记录。日志信息包含访问表号、报文的允许或拒绝、源IP地址以及在显示了第一个匹配以来每5分钟间隔内的报文数目。使用log关键字,提供了测试和报警两种功能:系统管理员可以使用日志来观察不同活动下的报文匹配情况,从而可以评估不同访问表的设计是否正确,是否合理;当其用于报警时,管理员可以察看显示结果,以定位那些多次尝试活动被拒绝的访问表语句。通过Cisco IOS的控制台命令可以选择记录日志方式。
本文出自 “王达博客” 博客,转载请与作者联系!