| Pt.1 Introduction
IP访问控制列表(access control list,ACL)用于过滤IP流量,其中RFC 1700定义了知名(well-known)端口号,RFC 1918定义了私有IP地址空间
Pt.2 Understanding ACL Concepts
Using Masks
ACL里的掩码也叫inverse mask(反掩码)或wildcard mask(通配符掩码),由32位长的2进制数字组成,4个八位位组.其中0代表必须精确匹配,1代表任意匹配(即不关心) 反掩码可以通过使用255.255.255.255减去正常的子网掩码得到,比如要决定子网掩码为255.255.255.0的IP地址172.16.1.0的反掩码: 255.255.255.255-255.255.255.0=0.0.0.255 即172.16.1.0的反掩码为0.0.0.255
注意:
反掩码为255.255.255.255的0.0.0.0代表any,即任意地址
反掩码为0.0.0.0的10.1.1.2代表主机地址10.1.1.2
Summarizing ACLs
下面描述的是如何汇总(summarization)一组网络地址,来达到优化ACL的目的:
192.168.32.0/24 192.168.33.0/24 192.168.34.0/24 192.168.35.0/24 192.168.36.0/24 192.168.37.0/24 192.168.38.0/24 192.168.39.0/24
这组IP地址的前2个和最后1个八位位组是一样的,再看第3个八位位组,把它们写成2进制的形式:
32:00 10 00 00 33:00 10 00 01 34:00 10 00 10 35:00 10 00 11 36:00 10 01 00 37:00 10 01 01 38:00 10 01 10 39:00 10 01 11
注意这组范围里的前5位都是一样的,所以这组IP地址范围可以汇总为192.168.32.0/21 255.255.248.0,那么这组IP地址范围的反掩码为255.255.255.255-255.255.248.0=0.0.7.255
比如在做IP standard ACL的时候,就可以:
access-list 10 permit 192.168.32.0 0.0.7.255
再来看另一组IP地范围:
192.168.146.0/24 192.168.147.0/24 192.168.148.0/24 192.168.149.0/24
照之前的方法,把第3个八位位组写成2进制形式:
146:10 01 00 10 147:10 01 00 11 148:10 01 01 00 149:10 01 01 01
是不是可以写成192.168.146.0/21呢?不是.因为采用/21的话将有8个子网将被考虑进去,如果在用ACL拒绝上述1组地址的时候,就有可能把另外4个地址给封杀掉.一定要考虑到精确匹配,上述地址就只能汇总成下面这2条地址:
对于192.168.146.x-192.168.147.x为:192.168.146.0/23(192.168.146.0 255.255.254.0) 对于192.168.146.8-192.168.149.x为:192.168.148.0/23(192.168.148.0 255.255.254.0)
所以反掩码分别为:0.0.1.255和0.0.1.255
比如在做IP standard ACL的时候,就可以:
access−list 10 permit 192.168.146.0 0.0.1.255 access−list 10 permit 192.168.148.0 0.0.1.255
Processing ACLs
当流量经过了配置的有ACL的路由器的时候,将和ACL里的条目从上往下的进行比较,直到找到匹配的语句为止,如果没有任何匹配的语句,流量将被拒绝(deny)掉.一般在设置ACL的时候,尽可能的把permit语句放在ACL的最上部.并且要记住的是,ACL在结尾处默认隐含的有1条拒绝所有流量的deny语句,如下2个ACL,ACL 101和ACL 102是有相同的效果的:
access-list 101 permit ip 10.1.1.0 0.0.0.255 172.16.1.0 0.0.0.255
access-list 102 permit ip 10.1.1.0 0.0.0.255 172.16.1.0 0.0.0.255 access-list 102 deny ip any any
ACL例子如下:
access-list 101 permit tcp host 10.1.1.2 host 172.16.1.1 eq telnet access-list 101 permit tcp host 10.1.1.2 host 172.16.1.1 access-list 101 permit udp host 10.1.1.2 host 172.16.1.1 access-list 101 permit ip 10.1.1.0 0.0.0.255 172.16.1.0 0.0.0.255
最后1条语句就足够了,前3条语句可以不用配置.因为TCP就包括了telnet,并且IP包括了TCP和UDP.所以只需要写最后1条语句即可
Defining Ports and Message Types
在设置ACL的时候,可能不光要设置源地址和目标地址,还要设置端口号(参阅RFC 1700)或ICMP信息类型(参阅RFC 792).当然可以在设置的时候输入?来查看提示,如下:
access-list 102 permit tcp host 10.1.1.1 host 172.16.1.1 eq ? bgp Border Gateway Protocol (179) chargen Character generator (19) cmd Remote commands (rcmd, 514)
在配置的时候,路由器同样可以把数字转化为人性化的值,比如在设置下面的ICMP类型14的时候:
access-list 102 permit icmp host 10.1.1.1 host 172.16.1.1 14
就成了:
access-list 102 permit icmp host 10.1.1.1 host 172.16.1.1 timestamp-reply
Applying ACLs
当你配置了ACL的时候,不在路由器上应用它,是将不会生效的.如下图:
screen.width-500)this.style.width=screen.width-500; border=0>
当你要阻断从source到destination的流量的时候,尽可能的把ACL设置在离源地址近的地方,即在路由器A上的E0接口(inbound)
[1] [2] [3] [4] 下一页 |