使用ufw allow from加CIDR可实现子网级访问控制,需正确书写CIDR格式(如192.168.1.0/24)、显式指定端口与协议(如to any port 22 proto tcp),并配合默认拒绝入站策略(sudo ufw default deny incoming)才能生效。

直接用 ufw allow from 加 CIDR 表示法就能实现子网级访问控制,关键在于写对网段格式、明确端口和协议,并确保默认策略配合使用。
明确子网范围并写对 CIDR 格式
子网规则依赖标准 CIDR 表示(如 192.168.1.0/24),不能写错掩码位数或地址起始点:
-
/24表示前 24 位是网络位,覆盖192.168.1.0到192.168.1.255 -
/16对应172.16.0.0/16,覆盖整个 B 类私有网段 - 避免写成
192.168.1.*/24或192.168.1.0-255—— 这些格式 ufw 不识别
指定目标端口与协议(推荐显式声明)
只写子网不指定端口,规则会默认放行所有端口(存在安全风险)。务必加上 to any port X proto Y:
- 允许
10.0.2.0/24访问 SSH:sudo ufw allow from 10.0.2.0/24 to any port 22 proto tcp - 允许同一子网访问 MySQL(TCP 3306):
sudo ufw allow from 10.0.2.0/24 to any port 3306 proto tcp - 若需 UDP(如 DNS),把
proto tcp换成proto udp
配合默认策略才能真正生效
子网规则只是“例外”,前提是默认入站策略为拒绝:
- 先设置安全基线:
sudo ufw default deny incomingsudo ufw default allow outgoing - 再添加子网白名单规则,否则即使加了
allow from,也可能被默认放行或默认拒绝覆盖 - 检查当前策略:
sudo ufw status verbose,确认 “Default: deny (incoming)”
验证与管理规则
加完规则别跳过验证步骤:
- 查看带编号的完整规则:
sudo ufw status numbered - 确认子网条目出现在列表中,且方向、端口、协议正确
- 临时测试可用性后,再启用防火墙:
sudo ufw enable - 删错规则时,优先用编号删除(
sudo ufw delete N),比重复写地址更可靠


















