Chapter10 Managing Traffic with Access Lists Introduction to Access Lists 访问列表(access list,ACL)的主要作用是过滤你不想要的数据包.设置 ACL 的一些规则: 1.按顺序的比较,先比较第一行,再比较第二行 直到最后 1 行 2.从第一行起,直到找到 1 个符合条件的行;符合以后,其余的行就不再继续比较下去 3.默认在每个 ACL 中最后 1 行为隐含的拒绝(deny),如果之前没找到 1 条许可(permit)语句,意 味着包将被丢弃.所以每个 ACL 必须至少要有 1 行 permit 语句,除非你想想所有数据包丢弃 2 种主要的访问列表: 1.标准访问列表(standard access lists):只使用源 IP 地址来做过滤决定 2.扩展访问列表(extended access lists):它比较源 IP 地址和目标 IP 地址,层 3 的协议字段,层 4 端口号来做过滤决定 利用 ACL 来过滤,必须把 ACL 应用到需要过滤的那个 router 的接口上,否则 ACL 是不会起到 过滤作用的.而且你还要定义过滤的方向 ,比如是是想过滤从 Internet 到你企业网的数据包呢 还是想过滤从企业网传出到 Internet 的数据包呢?方向分为下面 2 种: 1.inbound ACL:先处理,再路由 2.outbound ACL:先路由,再处理 一些设置 ACL 的要点: 1.每个接口,每个方向,每种协议,你只能设置 1 个 ACL 2.组织好你的 ACL 的顺序,比如测试性的最好放在 ACL 的最顶部 3.你不可能从 ACL 从除去 1 行,除去 1 行意味你将除去整个 ACL,命名访问列表(named access lists)例外(稍后介绍命名访问列表) 4.默认 ACL 结尾语句是 deny any,所以你要记住的是在 ACL 里至少要有 1 条 permit 语句 5.记得创建了 ACL 后要把它应用在需要过滤的接口上 6.ACL 是用于过滤经过 router 的数据包,它并不会过滤 router 本身所产生的数据包 7.尽可能的把 IP 标准 ACL 放置在离目标地址近的地方;尽可能的把 IP 扩展 ACL 放置在离源 地址近的地方 Standard Access Lists 介绍 ACL 设置之前先介绍下通配符掩码(wildcard masking).它是由 0 和 255 的 4 个 8 位位组 组成的.0 代表必须精确匹配,255 代表随意,比如:172.16.30.0 0.0.0.255,这个告诉 router 前 3 位 的 8 位位组必须精确匹配,后 1 位 8 位位组的值可以为任意值.如果你想指定 172.16.8.0 到 172.16.15.0,则通配符掩码为 0.0.7.255(15-8=7) 配置 IP 标准 ACL,在特权模式下使用 access-lists [ACL 号] [permit/deny] [any/host]命令.ACL 号为 1 到 99 和 1300 到 1999;permit/deny 分别为允许和拒绝;any 为任何主机,host 为具体某个 主机(需要跟上 IP 地址)或某 1 段 我们来看 1 个设置 IP 标准 ACL 的实例: 如图,router 有 3 个 LAN 的连接 1 个 Internet 的连接.现在,销售部的用户不允许访问金融部的 用户,但是允许他们访问市场部和 Internet 连接.配置如下: Router(config)#access-list 10 deny 172.16.40.0 0.0.0.255 Router(config)#access-list 10 permit any 注意隐含的 deny any,所以末尾这里我们要加上 permit any,any 等同于 0.0.0.0 255.255.255.255. 接下来把 ACL 应用在接口上,之前说过了尽可能的把 IP 标准 ACL 放置在离目标地址近的地 方,所以使用 ip access-group 命令把 ACL 10 放在 E1 接口,方向为出,即 out.如下: Router(config)#int e1 Router(config-if)#ip access-group 10 out Controlling VTY(Telnet) Access 使用 IP 标准 ACL 来控制 VTY 线路的访问.配置步骤如下: 1.创建个 IP 标准 ACL 来允许某些主机可以 telnet 2.使用 access-class 命令来应用 ACL 到 VTY 线路上 实例如下: Router(config)#access-list 50 permit 172.16.10.3 Router(config)#line vty 0 4 Router(config-line)#access-class 50 in 如上,进入 VTY 线路模式,应用 ACL,方向为进来,即 in.因为默认隐含的 deny any,所以上面的 例子 ,只允许 IP 地址为 172.16.10.3 的主机 telnet 到 router 上 Extended Access Lists 扩展 ACL:命令是 access-list [ACL 号] [permit/deny] [协议] [源地址] [目标地址] [操作符] [端 口] [log].ACL 号的范围是100 到 199 和 2000 到 2699;协议为 TCP,UDP 等,操作符号有 eq(表 等于),gt(大于),lt(小于)和 neq(非等于)等等;log 为可选,表示符合这个 ACL,就记录下这些日志 来看 1 个配置扩展 ACL 的实例: 假如要拒 telnet 和 FTP 到绝位于金融部的主机 172.16.30.5,配置如下: Router(config)#access-list 110 deny tcp any host 172.16.30.5 eq 21 Router(config)#access-list 110 deny tcp any host 172.16.30.5 eq 23 Router(config)#access-list 110 permit ip any any 记住默认隐含的 deny all.应用到 E1 接口,注意方向为 out,如下: Router(config)#int e1 Router(config-if)#ip access-group 110 out Named Access Lists 命名访问列表是创建标准和扩展访问列表的另外 1 种方法.它允许你使用命名的方法来创建 和应用标准或者扩展访问列表.使用 ip access-list 命令来创建,如下: Router(config)#ip access-list ? extended Extended Acc logging Control access list logging standard Standard Access List Router(config)#ip access-list standard ? <1-99> Standard IP access-list number WORD Access-list name Router(config)#ip access-list standard BlockSales Router(config-std-nacl)#? Standard Access List configuration commands: default Set a command to its defaults deny Specify packets to reject exit Exit from access-list configuration mode no Negate a command or set its default permit Specify packets to forward Router(config-std-nacl)#deny 172.16.40.0 0.0.0.255 Router(config-std-nacl)#permit any Router(config-std-nacl)#exit Router(config)#^Z Router#sh run (略) ! ip access-list standard BlockSales deny 172.16.40.0 0.0.0.255 permit any ! (略) 接下来应用到接口上,如下: Router(config)#int 1 Router(config-if)#ip access-group BlockSales out Router(config-if)#^Z Router# Monitoring Access Lists 一些验证 ACL 的命令,如下: 1.show access-list:显示 router 上配置了的所有的 ACL 信息,但是不显示哪个接口应用了哪 个 ACL 的信息 2.show access-list [number]:显示具体第几号 ACL 信息,也不显示哪个接口应用了这个 ACL 3.show ip access-list:只显示 IP 访问列表信息 4.show ip interface:显示所有接口的信息和配置的 ACL 信息 5.show ip interface [接口号]:显示具体某个接口的信息和配置的 ACL 信息 6.show running-config:显示 DRAM 信息和 ACL 信息,以及接口对 ACL 的应用信息 . Chapter1 0 Managing Traffic with Access Lists Introduction to Access Lists 访问列表 (access list,ACL)的主要作用是过滤你不想要的数据包.设置. Router(config) #access- list 110 deny tcp any host 172.16.30.5 eq 21 Router(config) #access- list 110 deny tcp any host 172.16.30.5 eq 23 Router(config) #access- list 110