ACL与包过滤
一 ACL定义及应用场景
定义
ACL(Access Control List,访问控制列表)是用来实现数据包识别功能的。
应用场景
- 包过滤功能:对数据包进行放通或过滤操作。
- NAT(Network Address Translation):网络地址转换
- 按需拨号
- Qos流分类ACL:只对数据包进行流量分类。
- 路由过滤ACL:对路由进行放行或过滤操作。
- 路由策略ACL:只对路由进行匹配。
二 ACL包过滤的工作原理
1. ACL包过滤基本原理
ACL包过滤
第一步ACL:每条ACL都由若干条ACL规则条目组成。
- ACL规则条目:由1个匹配条件和执行动词(permit或deny)组成
第二步ACL包过滤:将ACL绑定到设备接口上,进行数据包过滤。
匹配permit规则条目的允许放行。
匹配deny规则条目的允许放行。
设备接口的入方向和出方向(不同接口下的ACL工作不同)
入方向(in):数据包进入设备的方向。
出方向(out):数据包离开设备的方向。
两个方向都可以绑定ACL对数据包进行过滤
一个接口的一个方向只能绑定一条ACL
Cisco默认拒绝所有,华为华三默认开放
入方向处理
华为/H3C ACL包过滤基本原理
三 ACL的分类及应用
1. ACL条目组成
条目组成
序号/名字+执行动作+字段匹配
利用数字序号标识访问控制列表
IP数据包字段匹配方法
数据包中的各个字段
- 数据包中各个字段都可以进行匹配
- 常用匹配五元组:源IP、目的IP、协议、源端口、目标端口。
数据包中的IP地址字段匹配
匹配字段
匹配源IP
匹配目标IP
同时匹配源IP与目标IP
匹配方法
IP地址 通配符
通配符为32位,按位通配,位为0表示这位不能变,为1表可变。通配符可不连续,子网掩码要连续。
匹配案例1
匹配:192.168.2.128 - 192.168.2.254
192.168.2.10000000
192.168.2.11111110
通配符:不同的标为1,但这里最后一位为1是因为要包含奇数和偶数,若为0只能包含偶数。
IP地址:保留相同部分。
答案:192.168.2.128 0.0.0.127
匹配案例2
匹配:192.168.1.192(就1个主机)
答案:192.168.1.192 0.0.0.0
或者:host 192.168.1.192
匹配案例3
匹配:所有IP地址
答案:0.0.0.0 255.255.255.255
或者:any
匹配案例4
匹配:所有偶数IP
0.0.0.0 255.255.255.254
匹配案例4
匹配:所有奇数IP
0.0.0.1 255.255.255.254
TCP/UDP包中的端口字段匹配
匹配字段(源端口或目的端或同时匹配源端口和目的端口)
匹配方法
端口范围操作符 端口号
eq 端口 等于 neq端口 不等于 gt端口 大于 It端口 小于 range 端口1 端口2 在两个端口范围内 匹配案例
2. 传统标准ACL
定义
传统标准 ACL 是最基础的 ACL 类型,通过编号 1-99 标识,仅能基于源 IP 地址过滤数据包,无法匹配目的 IP、协议或端口。
缺陷
对任意一条ACL规则条目的删除、修改、插入都需要先删除整个ACL,然后重新配置。
应用位置原则
由于仅基于源 IP 过滤,若配置在离源端过近的位置,可能误过滤 "同一源 IP 到不同目的" 的合法流量(例如:拒绝源 A 到目的 X 的流量,但若源 A 到目的 Y 是合法的,也会被误拒)。
建议
放在离目的端近的位置,仅在接近目的时过滤,减少误判。
配置
1.定义ACL规则:access-list <编号> {permit | deny} <源IP地址> [反掩码] 2.应用到接口:interface <接口类型> <接口编号> ip access-group <编号> {in | out} 例如: access-list 1 deny 192.168.20.0 0.0.0.255 access-list 1 permit any int vlan 10 ip access-group 1(命名) out
3. 命名标准ACL
定义
命名标准 ACL 是传统标准 ACL 的 "命名版本",用字符串名称代替编号 1-99,功能完全相同(仅基于源 IP 过滤),但管理更灵活(名称更易记忆)。
优势
名称比编号更直观(如 "Allow_Local_LAN" 比 "1" 更易理解),按序号顺序匹配,可按序号增加、删除、修改、插入规则条目。
Cisco设备,如果省略序号,默认开始序号10,默认步长为10。
华为/H3C设备,默认开始序号为0,默认步长为5。
配置
ip access-list standard <ACL名字> <序号> { permit | deny } IP地址 通配符 <序号> { permit | deny } IP地址 通配符 例如: ip access-list standard vlan10(名字) 10 deny 192.168.20.0 0.0.0.255 20 permit any int vlan 10 ip access-group vlan10(命名) out(删除它进入vlan删除)
4. 传统扩展ACL
定义
传统扩展 ACL 是更精细的过滤规则,通过编号 100-199 标识,可基于源 IP、目的 IP、协议类型(TCP/UDP/ICMP 等)、端口号等多条件过滤。
配置
access-list 100 deny udp any eq 68(任意源ip;源端口68客户端) any eq 67(任意目的ip;目的端口67服务端) int vlan 10 ip access-group 100 in access-list 100 permit ip any any
5. 命名扩展ACL
定义
命名扩展 ACL 是传统扩展 ACL 的 "命名版本",用字符串名称代替编号 100-199,功能相同(支持多条件过滤),管理更灵活。支持源 IP、目的 IP、协议、端口等多条件。
配置
ip access-list extended <ACL名字> <序号> { permit | deny } <协议> IP地址1 通配符1 [操作符1 端口号1] IP地址2 通配符2 [操作符2 端口号2] [established] <序号> { permit | deny } <协议> IP地址1 通配符1 [操作符1 端口号1] IP地址2 通配符2 [操作符2 端口号2] [established]
ip access-list extended v10
15 deny udp any host 192.168.100.2 eq 53
int vlan 10
ip access-group v10 in
6. 基于二层的ACL(MAC ACL)
定义
基于二层的 ACL(Access Control List,访问控制列表)是针对数据链路层信息(如 MAC 地址、以太网类型等)制定的访问控制规则,主要用于对二层帧进行过滤,适用于交换机等二层设备,或路由器的二层接口场景。其核心是基于源 MAC 地址、目的 MAC 地址、以太网帧类型等二层特征来允许或拒绝数据包通过。
配置
模拟器不能做,真机能完成该配置
7. 基于时间ACL
定义
基于时间的 ACL(Time-Based ACL)是一种结合时间条件的访问控制列表,它能根据预设的时间范围(如特定时间段、周期性时间)动态启用或禁用 ACL 规则,使网络访问控制更具灵活性和时效性。其核心是将 ACL 规则与时间策略绑定,仅在指定时间内生效,其他时间则不执行该规则。
配置
模拟器不行,真机可以是因为接入了互联网,统一网络时间。未接入互联网的真机不行。
配置案例
8. 自反ACL
定义(可用四个最基础的)
自反 ACL(Reflexive ACL)是一种动态生成反向规则的访问控制列表,主要用于允许内部网络主动发起的会话所对应的返回流量,同时阻止外部网络主动发起的未授权连接。它解决了传统 ACL 在双向流量控制中 "静态规则不够灵活" 的问题,通过动态记录内部发起的连接信息,自动生成允许返回流量的临时规则,实现更精准的安全控制。
配置
配置一个出的ACL会自动映射一个源和目的ip相反的入的ACL
配置案例