1 ACL 的配置
1.1 创建 ACL
标准 ACL
router(config)#access-list <ACL表号> {permit|deny}{<源IP|host><反掩码>|any} //表号1~99
扩展 ACL
router(config)#access-list <ACL表号> {permit|deny}{<协议名称>|<端口号>}{<源IP><反掩码>}{<目的IP><反掩码>}{<关系><协议名称>} //表号101~199
1.2 应用 ACL
router(config-if)#{协议栈} access-group <ACL表号> { in|out} //协议栈可以为IP或IPX
2 ACL 上机实验
2.1 ACL 配置举例 1
router(config)#access-list 1 deny 10.0.0.1 0.0.0.0 //ACL表号为1,丢弃10.0.0.1发出的数据包,相当于 deny host 10.0.0.1 router(config)#access-list 1 permit any router(config)#access-list 2 permit any //ACL表号为2,可以转发任意数据包 router(config)#int s0/0 router(config-if)#ip access-group 1 in //该接口输入方向应用ACL列表组1,拒绝来自10.0.0.1的数据包 router(config-if)#ip access-group 2 out //该接口输出方向应用ACL列表组2,允许发出流经该路由器的所有数据包
2.2 ACL 配置举例 2
router(config)#access-list 101 deny tcp 172.16.0.0 0.0.255.255 host 192.168.1.1 eq telnet //不允许172.16.0.0网络的数据包telnet主机192.168.1.1 router(config)#access-list 101 permit ip any any //允许转发其他任何数据包 router(config)#int s0/0 router(config-if)#ip access-group 101 in
2.3 ACL 配置举例 3
限制只允许 192.168.2.2 访问 192.168.1.2 的 80 端口,192.168.3.2 访问 192.168.1.2 的 DNS。
router(config)#ip access-list extended cj router(config ext-nacl)#permit udp host 192.168.3.2 host 192.168.1.2 eq 53 router(config ext-nacl)#permit tcp host 192.168.2.2 host 192.168.1.2 eq 80 router(config ext-nacl)#exit router(config)#int f0/0 router(config-if)#ip access-group cj out
2.4 ACL 配置举例 4
要求:只允许 172.16.4.0/24 网络的主机通过端口 E0 进入网络 172.16.3.0/24,其他的被禁止。
为了实现上面的实验要求,我们将网络拓扑进行简化,PC1 的 IP 设置为 172.16.4.2,PC2 的 IP 设置为 172.16.0.2,PC3 的 IP 设置为 172.16.3.2,最终要达到的要求为 PC1 网段的主机可以访问 PC3 网段的主机,PC2 网段的主机不能访问 PC3 网段的主机。需要注意的是这里的路由器的选择,如果选择不恰当会导致端口不够用,可以参照下面的网络拓扑图中所选路由器。
先对路由器进行配置,让三台 PC 之间都可以通信。
Router>enable Router#conf t Router(config)#int gig0/0 Router(config-if)#ip add 172.16.4.1 255.255.255.0 Router(config-if)#no shut Router(config-if)#exit Router(config)#int gig0/1 Router(config-if)#ip add 172.16.0.1 255.255.255.0 Router(config-if)#no shut Router(config)#int gig0/2 Router(config-if)#ip add 172.16.3.1 255.255.255.0 Router(config-if)#no shut
路由器配置完成后给各台 PC 分配 IP,并设置其网关,先来验证 PC1 和 PC2 都能 ping 通 PC3 。
上述结果表明,在没有做 ACL 限制前,PC 之间是可以相互通信的,现在来设置 ACL 规则,让 PC1 可以 ping 通 PC3,而 PC2 不能 ping 通 PC3。
Router(config)#access-list 5 permit 172.16.4.0 0.0.0.255 Router(config)#int gig0/2 Router(config-if)#ip access-group 5 out
现在再来验证 PC 之间的通信。
PC1 可以 ping 通 PC3,但 PC2 不能 ping 通 PC3,达到实验要求。这里并没有 deny any 的语句,是因为路由隐含在每个 ACL 列表的最后有一句拒绝所有数据包访问的语句,所以不用再专门写出了。
2.5 ACL 配置举例 5
要求:
(1)禁止从 172.16.4.0/24 通过 FTP 访问 172.16.3.0/24;
(2)除此以外的其他访问和数据流都允许。
为了验证上述实验,这里将网络拓扑图进行简化,由于 172.16.3.0 网段涉及 FTP 登录