引言

企业网络中的设备进行通信时,需要保障数据传输的安全可靠和网络的性能稳定。
访问控制列表 ACL(Access Control List)可以定义一系列不同的规则,设备根据这些规则对数据包进行分类,并针对不同类型的报文进行不同的处理,从而可以实现对网络访问行为的控制、限制网络流量、提高网络性能、防止网络攻击等等。

ACL 应用场景

image-20240207115506396

假设我们不想让 192.168.1.0/24 网段的主机访问到 服务器 A 只允许其网段访问到互联网,只需要在 路由器上 配置 ACL 即可。同时,如果想让 192.168.2.0/24 不能访问互联网,只能访问服务器区域,也能通过 ACL 实现。

ACL 是一个基于包过滤的规则,ACL可以通过定义规则来允许或拒绝流量的通过。

ACL可以根据需求来定义过滤的条件以及匹配条件后所执行的动作。

ACL 的分类

分类 编号范围 参数
基本ACL 1-99 源IP地址等
拓展ACL 100-199 源IP地址、目的IP地址、协议、 源端口、目的端口等

相关配置

网络拓扑

image-20240207160230292

目前,是已实现全网互通

基础 ACL

基础 ACL 编号为 1-99。

需求: 禁止 VLAN 10 网段 的所有主机访问 路由器 G0/1 接口所连接的网段:

路由器上配置ACL:

1
2
3
4
# 通过反掩码设置
Router(config)#access-list 1 deny 192.168.10.0 0.0.0.255
# 通过host设置
Router(config)#access-list 1 deny host 192.168.10.0

在路由器的e0/0口应用规则:

1
2
3
4
Router(config)#
Router(config)#int g0/1
Router(config-if)#ip access-group 1 out
Router(config-if)#

最后来到 VLAN 10 的 192.168.10.1 和 192.168.10.2 进行 测试:

image-20240207162422145

发现已被 ACL 所拒绝。

取消规则:

1
2
Router(config)#no access-list 1
Router(config-if)#no ip access-group 1 out

拓展 ACL

在做拓展之前请确保已取消 基本ACL 的规则。

基于协议

需求: 禁止 VLAN 10 网段的 192.168.10.1 主机访问服务器区域的 VLAN 40 中的 192.168.40.5 并且 禁止 VLAN 30 网段的主机 192.168.30.3 ping 通 VLAN 40 主机的 192.168.40.5 :

R1:

1
2
Router(config)#access-list 100 deny ip host 192.168.10.1 host 192.168.40.5
Router(config)#access-list 100 deny icmp host 192.168.30.3 host 192.168.40.5

由于 ACL 控制列表按照书写顺序从上到下进行匹配,如果匹配到则停止,如果没有匹配到,默认禁止,因此最后需要给没有匹配上的原则,修改为允许。

R1:

1
Router(config)#access-list 100 permit ip any any

在 路由器 的 g0/ 接口使用该规则:

1
2
3
4
5
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#int g0/1
Router(config-if)#

来到 主机 192.168.10.1 ,发现无法访问 192.168.40.5,但是可以访问 192.168.40.6:

image-20240207161214921

来到 主机 192.168.30.3 ,发现无法 ping 通 192.168.40.5,但是可以访问 ping 通 192.168.40.6:

image-20240207161341512

但是注意,这里只是无法通过 ICMP 协议而已(无法 ping 通)。但是可以访问其他协议的服务,比如 TCP、http 等。如访问网页:

image-20240207163003305

基于端口

需求:禁止 192.168.10.0/24 所有的主机访问 192.168.40.0/24 网段的 80 端口:

路由器配置:

1
2
Router(config)#access-list 101 deny tcp host 192.168.10.0 host 192.168.40.0 eq 80 
Router(config)#access-list 101 permit ip any any

路由器的 g0/1 接口使用改规则:

1
Router(config-if)#ip access-group 101 out 

接下来使用 192.168.10.0/24 的主机 ping 192.168.40.5:

image-20240207164716673

发现可以 ping 通,但是无法访问其 web 服务(80端口)。

规则的查看

1
2
Router#show ip access-lists   # 查看所有规则
Router#show ip access-lists <规则id> # 查看指定id的规则

image-20240207165409930