网络技术:配置扩展 ACL
ACL 数据包过滤#
使用标准 ACL 就可以实现流量过滤功能,但是标准 ACL 的功能是有限的。首先标准 ACL 会将符合过滤规则的源 IP 地址的所有流量都筛出来,但是有时候并不希望过滤掉所有的流量,例如我们只是想限制某网络对 HTTP 服务的访问时,标准 ACL 会将一切流量都过滤而非只过滤 HTTP。其次标准 ACL 只能在网络层进行过夜,也就是只能对于数据包的源 IP 地址进行过滤,这就导致了最好将标准 ACL 配置在尽可能靠近目的地的接口。在实际的情况下往往目的是由目的地的管理员才有权限配置,这就导致标准 ACL 的功能效果有限。
扩展 ACL 可以在传输层和网络层进行过滤,也就是说使用扩展 ACL 可以对某种协议的流量进行过滤,这就使得安全策略可以配置得非常灵活。第二是扩展 ACL 可以对流量的目的地址进行过滤,这样不仅可以在数据包被路由之前就进行过滤减轻网络的负担,也能使过滤的功能更为强大。更重要的是,基于目的地址的过滤可以尽可能在靠近源的地方进行配置,就方便了网络管理员自行规划 ACL 策略。扩展 ACL 会对流量进行解包,根据数据包的协议类型(TCP、UDP 等协议)和端口号进行匹配。
ACL 的放置#
对于接口来说,无论是扩展 ACL 还是标准 ACL,配置的规则是一样的——可以在每种协议、每个方向、每个接口上配置一个 ACL。
- 每种协议一个 ACL:控制接口的流量,必须为接口上启用的每种协议定义一个 ACL。
- 每个方向一个 ACL:一个 ACL 一次只能在一个接口上控制一个方向的流量,若要同时控制入站和出站流量,则必须分别创建两个 ACL。
- 每个接口一个 ACL:ACL 为一个接口控制流量,例如GigabitEthernet O/0。
对于整个网络来说,将扩展 ACL 放置在尽可能靠近需要过滤的流量源的位置上。这样不需要的流量会在靠近源网络的位置遭到拒绝,而无需通过网络基础设施。由于标准 ACL 不指定目的地址,所以其位置应该尽可能靠近目的地。除了 ACL 本身的功能决定了配置的方式,还有一些因素需要考虑:
- 网络管理员的控制范围:ACL 的放置位置取决于网络管理员是否能够同时控制源网络和目的网络。
- 相关网络的带宽:在源上过滤不需要的流量,可以在流量消耗通往目的地的路径上的带宽之前阻止流量传输。
- 配置的难易程度:扩展 ACL 可以在每台发出流量的路由器上使用,这通过在源上过滤流量而节省了带宽,但需要在多台路由器上创建扩展ACL。
配置标准 ACL 还是扩展 ACL,需要放置在什么地方,需要具体问题具体分析。
扩展 ACL 创建语法#
扩展 ACL 根据多种属性过滤 IP 数据包:
- 协议类型;
- 源 IPv4 地址;
- 目的 IPv4 地址;
- 源 TCP 或 UDP 端口;
- 目的 TCP 或 UDP 端口;
- 用于进行精确控制的可选协议类型信息。
扩展 ACL 创建语法如下,命令涉及到了很多的参数。
Router(config)# access-list access-list-number {deny | permit | remark description protocol {source source-wildcard) [operator port [port-number|acl-name]]{destination destination-wildcard) [operator port [port-number | acl-name]]
参数 | 说明 |
---|---|
access-list-number | 使用 100~199 和 2000~2699 之间的编号标识访问列表 |
deny | 匹配条件时拒绝访问 |
permit | 匹配条件时允许访问 |
remark description | 用于输入注释,便于理解 |
protocol | Internet 协议的名称或编号,常用关键字包括 icmp、ip、tcp 或 udp,要匹配所有 Internet 协议可以使用 ip 关键字 |
source | 指定了发送数据包的网络号或主机号 |
source-wildcard | 指定了用于源地址的通配符比特 |
destination | 指定了接收数据包的网络号或主机号 |
destination-wildcard | 指定了用于目的地址的通配符比特 |
operator | (可选)比较源或目的端口,运算符包括 lt(小于)、gt(大于)、ea(等于)、neq(不等于)、range(包括的范围) |
port | (可选)指定 TCP 或 UDP 端口的编号或名称 |
established | (可选)仅用于 TCP 协议,指示已建立的连接 |
配置扩展 ACL#
实验拓扑#
设备 | 接口 | IP 地址 | 子网掩码 | 默认网关 |
---|---|---|---|---|
R1 | G0/1 | 192.168.10.1 | 255.255.255.0 | 不适用 |
Lo0 | 192.168.20.1 | 255.255.255.0 | 不适用 | |
S0/0/0 (DCE) | 10.1.1.1 | 255.255.255.252 | 不适用 | |
ISP | S0/0/0 | 10.1.1.2 | 255.255.255.252 | 不适用 |
S0/0/1 (DCE) | 10.2.2.2 | 255.255.255.252 | 不适用 | |
G0/0 | 209.165.200.226 | 255.255.255.224 | 不适用 | |
G0/1 | 209.165.201.2 | 255.255.255.224 | 不适用 | |
R3 | G0/1 | 192.168.30.1 | 255.255.255.0 | 不适用 |
Lo0 | 192.168.40.1 | 255.255.255.0 | 不适用 | |
S0/0/1 | 10.2.2.1 | 255.255.255.252 | 不适用 | |
S1 | VLAN 1 | 192.168.10.11 | 255.255.255.0 | 192.168.10.1 |
S3 | VLAN 1 | 192.168.30.11 | 255.255.255.0 | 192.168.30.1 |
PC-A | NIC | 192.168.10.3 | 255.255.255.0 | 192.168.10.1 |
PC-C | NIC | 192.168.30.3 | 255.255.255.0 | 192.168.30.1 |
Server0 | NIC | 209.165.200.225 | 255.255.255.224 | 不适用 |
Server1 | NIC | 209.165.201.1 | 255.255.255.224 | 不适用 |
在实验开始之前,需要先正确配置 PC、路由器和 WEB 服务器,并配置路由使得设备之间可以互通。
配置并验证扩展编号 ACL#
对于该网络配置的安全策略如下:
- 允许来自 192.168.10.0/24 网络的 Web 流量访问任何网络。
- 允许 PC-A 通过 SSH 连接到 R3 串行接口。
- 允许 192.168.10.0/24 网络上的用户访问 192.168.20.0/24 网络。
- 允许来自 192.168.30.0/24 网络的 Web 流量通过 Web 界面访问 R1 及 ISP 上的 209.165.200.224/27 网络。192.168.30.0/24 网络不能通过 Web 访问其他任何网络。
扩展编号 ACL 的编号范围是 100-199 和 2000-2699,在 R1 上配置 ACL,ACL 编号使用 100。
R1(config)# access-list 100 remark Allow Web & SSH Access
R1(config)# access-list 100 permit tcp any any eq 80
HTTP 协议是 80 端口,所以应该把目的端口设为 80。如果将其置于 G0/1 上可能会阻止网络 192.168.10.0/24 上的用户访问连接到 R1 的任何其他 LAN,如 192.168.20.0/24 网络。因此,您将把它放在 S0/0/0 的 out 方向上。
R1(config)# interface s0/0/0
R1(config-if)# ip access-group 100 out
接下来查看 ACL 100 的配置情况,使用如下 2 个命令。
R1# show access-lists
R1# show ip interface s0/0/0
验证 ACL 100,在 PC-A 上打开 Web 浏览器访问 http://209.165.200.225,此操作应该会成功。
在 PC-A 的命令提示符下对 10.2.2.1 执行 ping 操作,由于 192.168.10.0/24 网络只允许 web 流量退出,所以 ping 操作会失败。
配置并验证扩展命名 ACL#
在 R3 上配置策略,将该 ACL 命名为“WEB-POLICY”。
R3(config)# ip access-list extended WEB-POLICY
R3(config-ext-nacl)# permit tcp 192.168.30.0 0.0.0.255 209.165.200.224 0.0.0.31 eq 80
将 ACL “WEB-POLICY” 应用到 S0/0/1 接口。
R3(config-ext-nacl)# interface S0/0/1
R3(config-if)# ip access-group WEB-POLICY out
接下来查看 ACL “WEB-POLICY” 的配置情况,使用如下 2 个命令。
R3# show access-lists
R3# show ip interface s0/0/1
验证 ACL “WEB-POLICY”,在 PC-C 上打开 Web 浏览器访问 http://209.165.200.225 (ISP 路由器),此操作应该会成功。
在 PC-C 上打开到 http://209.165.201.1 的 Web 会话,此操作应该会失败。
在 PC-C 命令提示符下对 PC-A 执行 ping 操作,因为 192.168.30.0/24网络只允许 web 流量退出,所以 Ping 操作失败。
修改并验证扩展 ACL#
由于 R1 和 R3 都应用了 ACL,因此 R1 和 R3 上的 LAN 网络之间不允许 ping 或其他流量类型。为了允许 192.168.10.0/24 和 192.168.30.0/24 网络之间的所有流量,需要修改 R1 和 R3 上的 ACL。
在 R1 上进入全局配置模式并修改 ACL。
R1(config)# ip access-list extended 100
R1(config-ext-nacl)# 20 permit ip 192.168.10.0 0.0.0.255 192.168.30.0 0.0.0.255
R1(config-ext-nacl)# end
使用 show access-lists 命令查看 ACL 100。
R1# show access-lists
R3(config)# ip access-list extended WEB-POLICY
R3(config-ext-nacl)# 20 permit ip 192.168.30.0 0.0.0.255 192.168.10.0 0.0.0.255
R3(config-ext-nacl)# end
使用 show access-lists 命令查看 ACL WEB-POLICY。
R3# show access-lists
在 PC-A 上对 PC-C 的 IP 地址执行 ping 操作,或者在 PC-C 上对 PC-A 的 IP 地址执行 ping 操作,现在都可以成功。
参考资料#
《思科网络技术学院教程(第6版):扩展网络》,[加] Bob Vachon,[美] Allan Johnson 著,思科系统公司 译,人民邮电出版社
《CCNA 学习指南(第 7 版)》,[美] Todd Lammle 著,袁国忠 徐宏 译,人民邮电出版社
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)