号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部
ACL(访问控制列表)是交换机、路由器上最常见也最容易出锅的配置。
稍有不慎,业务断一片;写太宽,安全等于摆设;写太窄,又封死了正常访问。
那 ACL 应该怎么写?不同业务场景下,该用哪种方式来匹配?
源IP、目标段、业务端口,这三种匹配方式掌握住,日常配置基本不会翻车。
一、按源 IP 写:控制“谁”可以访问这种写法最常见、最通用,用于控制哪些“主机”能访问某个网络或端口。
- 允许某台运维主机远程登录交换机
- 限制办公网内的某些IP访问服务器
acl number 3000
rule 5 permit ip source 192.168.1.10 0
这里的 0 是反掩码,表示精确匹配 192.168.1.10 这一个地址。 如果要放一个网段,比如:
rule 10 permit ip source 192.168.1.0 0.0.0.255
然后绑定到对应接口方向即可:
interface GigabitEthernet0/0/1
traffic-filter inbound acl 3000
★⚠ 注意:
- ACL 默认不包含“拒绝所有”的行为,要拒绝需要显式写 deny
- 华为 ACL 是匹配到即止(类似顺序判断),规则顺序很重要
很多人只知道按源IP写,但真实场景中,按目标地址/网段来做控制的也很多。 比如有些服务器网段只能被少数人访问;有些出口只放开公网 DNS 或邮箱服务。
- 限制内网主机只能访问特定的公网网段(如 8.8.8.8)
- 控制某些业务只能访问某个 DMZ 区段
acl number 3001
rule 5 permit ip destination 10.10.10.0 0.0.0.255
或者你想拒绝某一段地址:
rule 10 deny ip destination 203.0.113.0 0.0.0.255
rule 20 permit ip
这里用了destination关键词表示目标地址匹配。
★⚠ 这种写法特别适合出口控制,但很多人都只会用源IP,反而容易放错、封错。
三、按业务端口写:控制“能访问什么服务”这类写法适用于协议粒度控制,像只允许访问 DNS、Web、SSH 的场景特别常见。
常见应用场景:- 只允许用户访问 HTTP/HTTPS(80/443)端口
- 禁止所有人访问某业务端口(如数据库 3306)
acl number 3002
rule 5 permit tcp destination-port eq 443
rule 10 permit tcp destination-port eq 80
rule 20 deny ip
这个 ACL 表示:只允许访问 HTTPS 和 HTTP 端口,其它全部拒绝。
你也可以加上源地址做更细粒度控制:
rule 5 permit tcp source 192.168.1.0 0.0.0.255 destination-port eq 22
★⚠ 要记住:
- 匹配端口时,一定要指定协议(tcp/udp)
- eq 是“等于”,还有 range(范围)、gt/lt(大于/小于)等写法
- ACL 不建议写太长,如果有太多条,考虑整合地址组/端口组
- ACL 规则顺序很关键,匹配到一条就不会继续往下匹配
- 一定要区分 in/out 方向,很多配置没效果就是因为方向反了
- 端口控制建议用TCP/UDP配合,避免“误放所有协议”
- ACL 搭配 NAT、QoS、VPN 使用效果更大,但配置也更复杂
原创:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部