思科/锐捷ACL核心笔记

本文最后更新于 2025年9月10日 上午

思科/锐捷ACL核心笔记

一、ACL核心思想:网络的“门卫”

想象ACL是公司大门的保安,他手持一份“规则清单”,对每一个数据包进行盘问:“你是谁?(源IP)”、“你要去哪?(目的IP)”、“你去干什么?(协议/端口)”。根据清单上的规则,决定是放行(permit)还是阻拦(deny)。

  • 工作原理:自上而下,逐条匹配,一旦匹配成功就立刻执行动作,并停止后续匹配。
  • 默认规则:所有ACL末尾都有一条看不见的 deny ip any any,即“默认禁止所有”。

二、通配符掩码:保安的“模糊匹配”技巧

通配符掩码(Wildcard Mask)决定IP地址的哪些位必须精确匹配(0),哪些位可以忽略不管(1)。

例子 通配符掩码 解释 等效写法
192.168.1.1 0.0.0.0 0.0.0.0 匹配唯一的主机 192.168.1.1 host 192.168.1.1
192.168.1.0 0.0.0.255 0.0.0.255 匹配 192.168.1.0 网段的所有主机(192.168.1.0 - 192.168.1.255
0.0.0.0 255.255.255.255 255.255.255.255 匹配任何IP地址 any

三、ACL类型详解与实战配置

1. 标准ACL:只看出身(源IP)

功能:只检查数据包的源IP地址。控制粗粒度,相当于保安只问你“是哪个公司的?”。
配置示例:允许内网(192.168.1.0/24)上网,禁止其他所有流量。

1
2
3
4
5
! 创建标准编号ACL 10
access-list 10 permit 192.168.1.0 0.0.0.255
! 应用ACL:通常应用在离“目的地”近的接口入方向(INBOUND)
interface GigabitEthernet0/1
ip access-group 10 in

注意事项:因其控制粗,放在离源太近的地方可能会误伤其他合法流量。

2. 扩展ACL:盘问一切(五元组)

功能:检查源IP、目的IP、协议、源端口、目的端口。控制细粒度,保安会详细盘问“你是谁?去哪?干什么?”。
配置示例:允许内网访问外部Web和DNS,但禁止访问外部MySQL数据库,并允许Ping。

1
2
3
4
5
6
7
8
9
10
! 创建扩展编号ACL 110
access-list 110 permit tcp 192.168.1.0 0.0.0.255 any eq 80
access-list 110 permit tcp 192.168.1.0 0.0.0.255 any eq 443
access-list 110 permit udp any any eq 53
access-list 110 deny tcp any any eq 3306
access-list 110 permit icmp any any
access-list 110 deny ip any any ! 显式拒绝所有,便于查看计数器
! 应用ACL:通常应用在离“源”近的接口出方向(OUTBOUND)
interface GigabitEthernet0/0
ip access-group 110 out

注意事项:规则顺序至关重要!精确的规则要放在上面,宽泛的规则(如permit ip any any)放在下面。

3. 命名ACL(企业级首选):可编辑的智能清单

功能:标准/扩展ACL的增强版,用名称而非编号标识。核心优势:可以自由插入、删除单条规则创建时必须声明类型:standardextended

A. 标准命名ACL (ip access-list standard <NAME>)

配置示例:创建一个名为 RESTRICT-ACCESS 的ACL,阻止特定网段 192.168.5.0/24,允许其他所有。

1
2
3
4
5
ip access-list standard RESTRICT-ACCESS
deny 192.168.5.0 0.0.0.255
permit any
interface GigabitEthernet0/1
ip access-group RESTRICT-ACCESS in

B. 扩展命名ACL (ip access-list extended <NAME>)

配置示例:创建一个名为 WEB-SERVER-POLICY 的ACL。

1
2
3
4
5
6
7
8
9
10
ip access-list extended WEB-SERVER-POLICY
remark --- 允许公众访问Web服务 ---
10 permit tcp any host 203.0.113.10 eq 80
20 permit tcp any host 203.0.113.10 eq 443
remark --- 允许IT部门进行SSH管理 ---
30 permit tcp 172.16.1.0 0.0.0.255 host 203.0.113.10 eq 22
remark --- 显式拒绝并记录其他所有访问 ---
40 deny ip any host 203.0.113.10 log
interface GigabitEthernet0/0
ip access-group WEB-SERVER-POLICY in

编辑操作演示

1
2
3
ip access-list extended WEB-SERVER-POLICY
25 permit tcp any host 203.0.113.10 eq 25 ! 插入规则
no 30 ! 删除规则

注意事项ip access-list extended 2001 中的 2001名称,不是编号!


四、扩展ACL(Extended ACL)的核心:五元组语法详解

“五元组”是扩展ACL进行精细流量控制的基石,它定义了匹配一个数据包所需的五个关键元素。

五元组 (5-tuple) 指的是:

  1. 源IP地址 (Source IP Address)
  2. 目的IP地址 (Destination IP Address)
  3. 协议 (Protocol)
  4. 源端口 (Source Port)
  5. 目的端口 (Destination Port)

通用命令语法格式

1
access-list <100-199> permit/deny <协议> <源IP> <源通配符> [运算符 源端口] <目的IP> <目通配符> [运算符 目的端口]

语法元素拆解与示例

语法元素 说明与可选值 配置示例
<协议> ip, tcp, udp, icmp, gre permit tcp ...
<源IP> <源通配符> 定义源IP地址范围 any, host 192.168.1.1
[运算符 源端口] 可选eq, gt, lt, range eq 80, range 5000 5010
<目的IP> <目通配符> 定义目的IP地址范围 any, host 10.0.0.10
[运算符 目的端口] 可选。定义目的端口。运算符同上。 eq 443, eq www

综合配置示例与场景解读

场景1:允许内网用户访问外部所有Web服务(HTTP/HTTPS)

1
2
access-list 110 permit tcp 192.168.1.0 0.0.0.255 any eq 80
access-list 110 permit tcp 192.168.1.0 0.0.0.255 any eq 443

场景2:允许来自任何地方的DNS查询请求(UDP 53)

1
access-list 111 permit udp any host 192.168.1.53 eq 53

场景3:在命名ACL中,允许管理员IP远程管理所有服务器的SSH和RDP服务

1
2
3
ip access-list extended ADMIN-ACCESS
permit tcp host 172.16.1.100 10.0.0.0 0.0.0.255 eq 22
permit tcp host 172.16.1.100 10.0.0.0 0.0.0.255 eq 3389

场景4:使用 established 关键字允许外部Web服务器返回的流量

1
access-list 112 permit tcp any 192.168.1.0 0.0.0.255 established

五、总结与最佳实践

特性 标准ACL 扩展ACL 标准命名ACL 扩展命名ACL
匹配依据 仅源IP 五元组 仅源IP 五元组
控制粒度
可编辑性
可读性
企业应用 较少 一般 强烈推荐

黄金法则

  1. 最小权限:只放行必要的流量。
  2. 精确优先:将最具体的规则放在顶部。
  3. 靠近源/目的:标准ACL近目的,扩展ACL近源。
  4. 命名ACL:生产环境一律使用命名ACL,其中扩展命名ACL是绝对主力。
  5. 先规划后配置:在文本编辑器里写好规则,再粘贴到设备。

六、配置Checklist & 常见错误

配置前 Checklist:

  • 需求是否明确?(允许什么?拒绝什么?)
  • 是否选择了正确的ACL类型?(标准还是扩展?)
  • 规则顺序是否最优?(精确规则在上)
  • 是否显式添加了 deny ip any any 并记录了日志?
  • 通配符掩码计算是否正确?
  • ACL应用的方向(in/out)和接口是否正确?

常见错误:

  • 错误1:为 icmpip 协议配置了端口。
  • 错误2:将标准ACL放置在离源太近的位置,误伤其他流量。
  • 错误3:忘记了ACL末尾的隐式拒绝所有,导致预期外的流量被拒绝。
  • 错误4:错误理解了通配符掩码,匹配了错误的IP范围。
  • 错误5:在编号ACL中尝试使用 no 命令删除单条规则,导致整个ACL被删除。

思科/锐捷ACL核心笔记
https://xinhaojin.github.io/2025/09/10/思科锐捷ACL核心笔记/
作者
xinhaojin
发布于
2025年9月10日
许可协议