firewalld 是服务器安全总闸:按区域管规则,放行端口与服务,富规则做精细控制,端口转发。
firewalld 用区域(zone)把网络接口分组(如 public 公共、trusted 信任),规则分 runtime(临时)与 permanent(永久)。改 permanent 后必须 --reload 才生效。教材项目 12。
firewall-cmd --get-default-zone
firewall-cmd --set-default-zone=public
firewall-cmd --get-active-zonesLinux 服务器安全的总闸,务必会。
--list-all 看当前区域全部规则--list-ports / --list-services--get-zones 列出所有区域--query-port=80/tcp 是否放行--add-port=80/tcp --permanent--add-service=http --permanent--add-service=https --permanent--reload 重载使永久规则生效--remove-port=80/tcp --permanent 撤销firewall-cmd --add-service=http --permanent
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all当『只允许某网段访问 ssh』这类细粒度需求时用富规则。语法较长但表达力强。
firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 service name=ssh accept' --permanent
firewall-cmd --reload可用 --add-forward-port 做端口转发;连不上服务时,先 --list-all 确认端口已放行,再看服务是否监听、再看服务日志,最后才是网络本身。
firewall-cmd --add-masquerade --permanent
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
firewall-cmd --reload--add-service,否则客户端连不上。完整五步实战见 网络服务配置实战。--reload 后用 --list-all 核对。curl -I localhost 验证仍能访问。firewalld 改错不会立刻断连(runtime 不变),但忘了 --permanent + --reload,重启后规则就丢——这是最常见的『重启后连不上』原因。