目的
1 2
| 现在有两台服务器,分别是web(server1)和ftp(server2),局域网有两个网段,要求这两个网段不能互访,而且都要访问web(192.168.40.2)服务器,但是不能访问ftp(192.168.40.1)服务器。 采用ACL三层隔离VLAN的方法解决。
|
ACL
概念
华为 ACL
(访问控制列表)的分类
华为 ACL
主要分为以下几类,根据用途和匹配方式不同区分:
- 基本
ACL
(编号范围:2000-2999)
- 仅根据源
IP
地址过滤流量,无法匹配目的 IP
、端口
等信息。
- 示例:
acl number 2000 rule 5 deny source 192.168.1.0 0.0.0.255
(拒绝源网段 192.168.1.0/24 的流量)。
- 高级
ACL
(编号范围:3000-3999)
- 可根据
源 IP
、目的 IP
、协议类型(TCP
/UDP
/ICMP
等)、端口号等多条件组合过滤流量,功能更灵活。
- 示例:
acl number 3000 rule 5 permit tcp source 192.168.2.0 0.0.0.255 destination 10.0.0.1 0 destination-port eq 80
(允许源网段访问目的 IP
的 80
端口)。
- 二层
ACL
(编号范围:4000-4999)
- 基于二层信息过滤,如源
MAC 地址
、目的 MAC 地址
、VLAN ID
、以太网类型
等。
- 示例:
acl number 4000 rule 5 deny source-mac 00e0-fc12-3456
(拒绝指定源 MAC 的流量)。
- 用户自定义
ACL
(编号范围:5000-5999)
- 可根据数据包的载荷内容(如特定字段)自定义匹配规则,用于特殊场景(如识别特定应用协议)。
- 配置较复杂,需指定偏移量、掩码等参数匹配数据包中的字节。
- 基于接口的
ACL
- 直接在接口上应用
ACL
,控制接口的入方向或出方向流量,无需关联到 MQC
(Modular Quality of Service Command-Line Interface,模块化 QoS 命令行接口
) 策略。
- 示例:
interface GigabitEthernet0/0/1 traffic-filter inbound acl 3000
(在接口入方向应用 ACL
3000
)。
不同类型的 ACL
适用场景不同:基本 ACL
适合简单的源地址过滤
,高级 ACL
适合精细的三层 / 四层流量控制
,二层 ACL
适合链路层过滤
,自定义 ACL
用于特殊需求。
在 ACL
(访问控制列表)和流量策略配置中,deny
(拒绝)和permit
(允许)的组合主要通过规则优先级和匹配逻辑产生不同结果,核心原则是:“按规则顺序匹配,一旦命中即执行对应动作,不再检查后续规则”。
常见的组合场景及结果
1. 单条规则:直接生效
仅permit
:匹配条件的流量被允许通过,不匹配的流量默认被拒绝(ACL
隐含 “拒绝所有” 的末条规则)。例:rule 5 permit ip source 192.168.1.0 0.0.0.255
→ 结果:仅 192.168.1.0/24
网段的流量被允许,其他所有流量被拒绝。
仅deny
:匹配条件的流量被拒绝,不匹配的流量默认被允许(仅当 ACL
应用场景为 “允许所有,仅拒绝特定流量” 时生效)。
例:rule 5 deny ip source 192.168.1.0 0.0.0.255
→ 结果:192.168.1.0/24
网段的流量被拒绝,其他所有流量被允许。
2. 多条规则:按优先级(编号)顺序匹配
规则编号越小,优先级越高(如 rule 5
优先于 rule 10
),命中后不再执行后续规则。
场景 1:先permit
后deny
1 2
| rule 5 permit ip source 192.168.1.0 0.0.0.255 // 允许网段A rule 10 deny ip source 192.168.1.1 0 // 拒绝网段A中的某个IP
|
→ 结果:192.168.1.1
的流量会先匹配 rule 5(属于网段 A)
被允许,rule 10 不生效(因为已被前一条规则命中)。
场景 2:先deny
后permit
1 2
| rule 5 deny ip source 192.168.1.1 0 // 拒绝某个IP rule 10 permit ip source 192.168.1.0 0.0.0.255 // 允许网段A
|
场景 3:deny
特定流量,permit
其余
1 2
| rule 5 deny ip destination 10.0.0.1 0 // 拒绝访问特定目标 rule 10 permit ip // 允许所有其他IP流量
|
→ 结果:所有访问 10.0.0.1
的流量被拒绝,其他所有 IP
流量被允许。
场景 4:permit
特定流量,deny
其余
1 2
| rule 5 permit ip source 192.168.1.0 0.0.0.255 // 允许网段A rule 10 deny ip // 拒绝所有其他IP流量
|
→ 结果:仅网段 A
的流量被允许,其他所有 IP
流量被拒绝(与单条permit
规则效果一致,末条隐含拒绝)。
3. 特殊情况:规则无匹配
当所有规则都未命中时,取决于 ACL
的 “默认动作”:
- 华为设备
ACL
默认动作:拒绝所有未匹配的流量(隐含rule 65535 deny ip
)。
例:ACL
中仅配置rule 5 permit ip source 192.168.1.0 0.0.0.255
,未匹配的流量会被默认拒绝。
- 若显式配置
rule 10 permit ip
(允许所有),则未匹配的流量会被允许。
核心总结
- 规则按编号从小到大依次匹配,命中即停止。
permit
和deny
的组合需注意顺序:先拒绝特定流量,再允许其余(或反之)。
- 未匹配任何规则时,默认拒绝所有(华为设备)。
合理的规则顺序是关键,否则可能出现 “优先级低的规则被优先级高的规则覆盖” 的问题(如场景 1 中后配置的deny
不生效)。
实验拓扑图

配置思路
- 华为交换机的
ACL
规则没变,但下发需要通过流策略traffic policy
下发;
- 流策略又包括相应的流分类
trafficclassifier
,流行为trafficbehavior
;
- 流分类
traffic classifier
用于绑定相应的ACL
规则,流行为traffic behavior
决定匹配的流分类是否permit
或deny
;
ACL
规则里只需配置匹配的流,使用permit
标识,而deny基本没啥用;
- 如果有多个
ACL number
,在流策略traffic policy
里需要按顺序绑定(根据业务是先允午后禁止或先禁止后允许);
- 在接口(或者
vlan
)的inbound
方向下发;
操作步骤
SW1配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| sysname SW1 // 设置交换机名称为SW1
undo info-center enable // 关闭信息中心,不再输出日志信息
vlan batch 20 30 40 // 批量创建VLAN 20、30、40
dhcp enable // 启用DHCP服务
acl number 3001 // 创建高级ACL 3001 rule 5 permit ip source 192.168.20.0 0.0.0.255 destination 192.168.40.1 0 // 允许192.168.20.0/24网段访问192.168.40.1 rule 10 permit ip source 192.168.30.0 0.0.0.255 destination 192.168.40.1 0 // 允许192.168.30.0/24网段访问192.168.40.1 acl number 3002 // 创建高级ACL 3002 rule 5 deny ip source 192.168.20.0 0.0.0.255 destination 192.168.30.0 0.0.0.255 // 拒绝192.168.20.0/24网段访问192.168.30.0/24网段 rule 10 deny ip source 192.168.20.0 0.0.0.255 destination 192.168.20.0 0.0.0.255 // 拒绝192.168.20.0/24网段内的通信(可能是配置错误,掩码重复) rule 15 deny ip source 192.168.20.0 0.0.0.255 destination 192.168.40.2 0 // 拒绝192.168.20.0/24网段访问192.168.40.2 rule 20 deny ip source 192.168.30.0 0.0.0.255 destination 192.168.40.2 0 // 拒绝192.168.30.0/24网段访问192.168.40.2
traffic classifier tc1 operator and // 创建流量分类器tc1,匹配方式为"与" if-match acl 3001 // 关联ACL 3001的匹配条件 traffic classifier tc2 operator and // 创建流量分类器tc2,匹配方式为"与" if-match acl 3002 // 关联ACL 3002的匹配条件
traffic behavior tb1 // 创建流量行为tb1 permit // 允许匹配的流量通过 traffic behavior tb2 // 创建流量行为tb2 deny // 拒绝匹配的流量通过
traffic policy tp // 创建流量策略tp classifier tc1 behavior tb1 // 将分类器tc1与行为tb1绑定 classifier tc2 behavior tb2 // 将分类器tc2与行为tb2绑定
drop-profile default // 默认丢弃配置文件(系统默认)
vlan 20 // 进入VLAN 20配置视图 traffic-policy tp inbound // 在VLAN 20的入方向应用流量策略tp vlan 30 // 进入VLAN 30配置视图 traffic-policy tp inbound // 在VLAN 30的入方向应用流量策略tp
ip pool vlan2pool // 创建DHCP地址池vlan2pool gateway-list 192.168.20.254 // 设置网关地址为192.168.20.254 network 192.168.20.0 mask 255.255.255.0 // 分配的网段为192.168.20.0/24 lease day 7 hour 0 minute 0 // 地址租期为7天 dns-list 8.8.8.8 114.114.114.114 // DNS服务器地址
ip pool vlan3pool // 创建DHCP地址池vlan3pool gateway-list 192.168.30.254 // 设置网关地址为192.168.30.254 network 192.168.30.0 mask 255.255.255.0 // 分配的网段为192.168.30.0/24 lease day 7 hour 0 minute 0 // 地址租期为7天 dns-list 8.8.8.8 114.114.114.114 // DNS服务器地址
ip pool vlan4pool // 创建DHCP地址池vlan4pool gateway-list 192.168.40.254 // 设置网关地址为192.168.40.254 network 192.168.40.0 mask 255.255.255.0 // 分配的网段为192.168.40.0/24 excluded-ip-address 192.168.40.1 192.168.40.2 // 排除不分配的地址(192.168.40.1和192.168.40.2) lease day 7 hour 0 minute 0 // 地址租期为7天 dns-list 8.8.8.8 114.114.114.114 // DNS服务器地址
interface Vlanif1 // 进入Vlanif1接口(默认VLAN接口,未配置IP)
interface Vlanif20 // 进入Vlanif20接口(VLAN 20的三层接口) ip address 192.168.20.254 255.255.255.0 // 配置IP地址和子网掩码 dhcp select global // 选择全局DHCP地址池为该VLAN分配IP
interface Vlanif30 // 进入Vlanif30接口(VLAN 30的三层接口) ip address 192.168.30.254 255.255.255.0 // 配置IP地址和子网掩码 dhcp select global // 选择全局DHCP地址池为该VLAN分配IP
interface Vlanif40 // 进入Vlanif40接口(VLAN 40的三层接口) ip address 192.168.40.254 255.255.255.0 // 配置IP地址和子网掩码 dhcp select global // 选择全局DHCP地址池为该VLAN分配IP
interface GigabitEthernet0/0/1 // 进入千兆以太网接口0/0/1 port link-type trunk // 设置接口类型为Trunk port trunk allow-pass vlan 20 // 允许VLAN 20通过该Trunk接口
interface GigabitEthernet0/0/2 // 进入千兆以太网接口0/0/2 port link-type trunk // 设置接口类型为Trunk port trunk allow-pass vlan 30 // 允许VLAN 30通过该Trunk接口
interface GigabitEthernet0/0/3 // 进入千兆以太网接口0/0/3 port link-type access // 设置接口类型为Access port default vlan 40 // 将接口加入VLAN 40(默认VLAN)
interface GigabitEthernet0/0/4 // 进入千兆以太网接口0/0/4 port link-type access // 设置接口类型为Access port default vlan 40 // 将接口加入VLAN 40(默认VLAN)
|
SW2配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| sysname SW2 // 设置交换机名称为SW2
undo info-center enable // 关闭信息中心,停止输出日志信息
vlan batch 20 // 创建VLAN 20(这里只创建了一个VLAN)
interface Vlanif1 // 进入Vlanif1接口(默认VLAN接口,未做任何配置)
interface GigabitEthernet0/0/1 // 进入千兆以太网接口0/0/1 port link-type trunk // 将接口类型设置为Trunk(干道模式) port trunk allow-pass vlan 20 // 配置该Trunk接口允许VLAN 20的数据帧通过
interface GigabitEthernet0/0/2 // 进入千兆以太网接口0/0/2 port link-type access // 将接口类型设置为Access(接入模式) port default vlan 20 // 将该接口加入VLAN 20,作为其默认VLAN
|
SW3配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| sysname SW3 // 设置交换机名称为SW3
undo info-center enable // 关闭信息中心,停止输出日志信息
vlan batch 30 // 创建VLAN 30(仅创建一个VLAN)
interface Vlanif1 // 进入Vlanif1接口(默认VLAN接口,未进行任何配置)
interface GigabitEthernet0/0/1 // 进入千兆以太网接口0/0/1 port link-type trunk // 将接口类型设置为Trunk(干道模式) port trunk allow-pass vlan 30 // 配置该Trunk接口允许VLAN 30的数据帧通过
interface GigabitEthernet0/0/2 // 进入千兆以太网接口0/0/2 port link-type access // 将接口类型设置为Access(接入模式) port default vlan 30 // 将该接口加入VLAN 30,作为其默认VLAN
|
测试


总结
ACL
规则下的permit
用于匹配流,流行为里的permit
或deny
才是真正的对报文的允许与禁止动作。
基于硬件的应用:ACL
被下发到硬件,例如配置QoS
功能时引用ACL
,对报文进行流分类。
需要注意的是,当ACL
被QoS
功能引用时,如果ACL
规则中定义的动作为deny
,则匹配此ACL
的报文就被丢弃。如果ACL
规则中定义的动作为permit
,则S5700
对匹配此ACL
的报文采取的动作由QoS
中流行为定义的动作决定。