电脑工场
白蓝主题五 · 清爽阅读
首页  > 网络基础

如何配置网络ACL:从入门到实操

你在公司配防火墙时,发现除了安全组还要设网络ACL?或者在云平台创建VPC后,控制台里突然冒出个「网络ACL」选项,点开全是入站规则、出站规则、协议、端口范围……一头雾水?别急,这玩意儿没那么玄乎,它其实就是一张贴在网络子网门口的「门禁表」——不看脸,只认IP和端口。

先搞清它和安全组有啥区别

很多人一上来就混淆网络ACL(Access Control List)和安全组。简单说:安全组是绑在单台云服务器(比如EC2或CVM)上的,属于「实例级」;而网络ACL是绑在整个子网(Subnet)上的,属于「子网级」。就像一栋写字楼:安全组是每间办公室自己的门锁,ACL则是整层楼的闸机——所有进出这层楼的数据包,都得过它这一关。

另外,ACL默认拒绝一切流量(白名单思维),且规则按编号顺序执行,一旦匹配就停止检查;安全组默认放行出站,且所有规则都会被评估。

动手配一个基础ACL(以AWS为例)

登录AWS控制台 → 进入VPC服务 → 左侧菜单点「Network ACLs」→ 「Create network ACL」。填个名字,选好VPC,创建完成。这时候它还是空的,只有默认的拒绝所有规则(编号32767)。你需要手动加几条。

比如你有个Web服务器子网,想让外部用户能访问80和443端口,同时允许服务器自己往外发请求(比如更新系统、调用API):

编号  类型   协议  源/目标   端口范围  允许/拒绝
100 入站 TCP 0.0.0.0/0 80 允许
110 入站 TCP 0.0.0.0/0 443 允许
120 入站 TCP 10.0.1.0/24 1024-65535 允许 ← 允许同子网内其他机器SSH连它
200 出站 TCP 0.0.0.0/0 80,443 允许 ← 让它能访问外部网站、CDN等
210 出站 ALL 0.0.0.0/0 ALL 允许 ← 放行ICMP、DNS等必要协议

注意编号不能重复,建议留空隙(比如100、110、120),方便后续插新规则。ACL不支持“自动放行响应包”,所以出站规则必须显式写清楚——这点和安全组很不一样。

阿里云和腾讯云怎么操作?

阿里云叫「网络ACL」,路径是:专有网络VPC → 访问控制 → 网络ACL → 创建。界面比AWS更直观,直接有「添加入方向规则」「添加出方向规则」按钮,填源IP、协议、端口、策略就行,不用手输编号,系统自动生成。

腾讯云叫「子网ACL」,在私有网络VPC → 子网 → 找到对应子网 → 点「关联网络ACL」→ 新建或选择已有ACL。它的规则列表也带拖拽排序功能,适合边试边调。

几个容易踩的坑

配完发现网站打不开?先检查这三点:
• 规则写了入站80,但忘了加出站80或443——服务器返回网页内容时,响应包被ACL拦住了;
• 源IP填成了192.168.1.0/24,其实你的用户是手机4G网络(公网IP),得写0.0.0.0/0;
• 把ACL绑错了子网——比如绑到了数据库子网,却想控制Web层流量,那等于没设。

最后提醒一句:ACL不是万能钥匙。它没法识别HTTP头、URL路径或用户身份,纯靠五元组(源IP、目的IP、源端口、目的端口、协议)过滤。真要防SQL注入或暴力破解,还得靠WAF或主机层防火墙。