1、ACL定义
ACL(Access Control List,访问控制列表)是一系列运用到路由器接口的指令列表。这些指令告诉路由器接收哪些数据包、拒绝哪些数据包、接收或者拒绝根据一定的规则进行,如源地址、目标地址、端口号等。ACL使得用户能够管理数据流,检测特定的数据包。针对IP协议,在路由器的每一个端口,可以创建两个ACL:一个用于过滤进入(inbound)端口的数据流,另一个用于过滤流出(outbound)端口的数据流。
2、标准ACL
2.1、通配符掩码
路由器使用通配符掩码与源或目标地址一起来分辨匹配的地址范围。在访问控制列表中,将通配符掩码中的一位设成1表示忽略IP地址中对应的位,该位既可以是1又可以是0,可将其称作“不检查”位。通配符掩码设成0则表示IP地址中对应的位必须精确匹配。
2.2、配置标准ACL
方式一
R3(config)#access-list 1 deny host 12.1.1.1 创建访问列表 R3(config)#access-list 1 permit any
方式二
R3#show access-lists 查看访问列表,对应行号
R3(config)#ip access-list standard 1 R3(config-std-nacl)#deny host 12.1.1.1 R3(config-std-nacl)#permit any
进入接口进行配置:
R3(config-if)#ip access-group 1 in 接口模式下,配置进或者出使用哪个列表
2.3、编辑标准ACL
(1)删除ACL
R3(config)#no access-list 1 删除某个ACL
R3(config)#ip access-list standard 1 R3(config-std-nacl)#no 10 删除配置中的10行
(2)取消ACL在接口的应用
R3(config)#int s1/0 R3(config-if)#no ip access-group 1 in
访问控制列表仅对穿越路由器的数据包进行过滤,对本路由器起源的数据包不作过滤。
标准访问控制列表尽量靠近目标端,否则会限制一些本来不想限制的数据流。
2.4、配置标准命名ACL
R3(config)#ip access-list standard deny-R1 配置标准命名ACL
R3(config-if)#ip access-group deny-R1 in 应用到某个接口
3、扩展ACL
标准访问控制列表只能使用原地址作为过滤条件,提供了十分基本的过滤功能。扩展访问控制列表可以同时使用源地址和目标地址作为过滤条件,还可以针对不同的协议、协议的特征、端口号、时间范围等来过滤。
3.1、配置扩展ACL
access-list access-list-number {deny|permit|remark} protocol source [source-wildcard] [operator operand] [port port-number or name] destination destinantion - wildcard [operator operand] [port port-number orname] [established]
R2(config)#access-list 100 deny tcp host 12.1.1.1 host 23.1.1.3 eq telnet 创建扩展ACL R2(config)#access-list 100 permit ip any any
R2(config-if)#ip access-group 100 in 接口模式下配置生效
访问控制列表仅对穿越路由器的数据包进行过滤,对本路由器起源的数据包不作过滤。
扩展访问控制列表尽量靠近起始端,这样可以减少不必要的浪费。
3.2、扩展ACL的增强编辑功能
R2(config)#ip access-list extended 100 R2(config-ext-nacl)#15 deny udp any any 在10和20直接插一行15 R2(config)#ip access-list resequence 100 10 10 重新给ACL100排序10为起始行号,每次加10
3.3、扩展ACL中的established
配置使用TCP协议的扩展ACL时,有一个参数established(已建立),特别值得关注,它可以用来做TCP的单向访问控制,使用起来有点像防火墙,一边可以访问另外一边,另外一边却不能访问这一边。
R2(config)#access-list 101 permit tcp any any established ACK等于0的不允许通过 R2(config)#int s1/1 R2(config-if)#ip access-group 101 out 放在s1/1口的out方向上
3.4、配置扩展命名ACL
R2(config)#ip access-list extended deny-R1-telnet-R3 直观的命名扩展ACL
4、配置ACL的注意事项
(1)访问控制列表只对穿越流量起作用。
(2)标准列表要应用在靠近目标端
(3)扩展访问控制列表要应用在靠近源端
(4)放置的顺序。配置ACL时,语句的前后顺序很重要,列表从上往下查找,如果找到一条匹配,就执行操作并且不再往下继续查找。如果两条语句放在前或后都不影响结果,一般把被较多使用的那条放在前面,这样可以减小路由器的查找时间。
(5)隐含的拒绝所有。IP访问控制列表的最后一句隐含的是拒绝所有。它表示必须明确允许通信量,否则将被拒绝。
(6)列表的编辑。访问控制列表建立后,对该ACL的增加都被放在表的末端,用户不能有选择地增加或删除语句。唯一可做的删除是删除整个访问控制列表,命令是“no access-list access-list-number”,显然,当访问控制列表很大时是十分麻烦的。为了节省时间,可以将表剪切,然后粘贴在文本文档中来编辑。命名访问控制列表和扩展访问控制列表的增强编辑功能可用于克服这一缺点。
(7)列表的调用。一个访问控制列表可用于同一个路由器的许多不同的接口上,并不需要对每个需要它的接口单独定义表号不同、内容相同的访问控制列表。如果不给接口提供任何访问控制列表,或者提供一个未定义的访问控制列表,则在默认情况下它将传递所有通信量。如果想让访问控制列表对两个方向都有用,则在接口调用访问控制列表两次,一次用于入站,一次用于出战。对于每个协议的每个接口的每个方向,只能提供一个访问控制列表。
(8)使用ACL限制远程登录。使用access-class来实现,而不是在所有接口上限制Telnet登录。
R2(config)#access-list 1 permit 12.1.1.1 R2(config)#line vty 0 4 R2(config-line)#access-class 1 in
(9)配置ACL时,小心不要拒绝了路由协议。
R3(config)#access-list 100 permit udp host A.B.C.D host 255.255.255.255 eq 520 允许来自ABCD的rip广播更新