Linux用firewalld放行端口需三步:确认服务运行(systemctl status/start/enable firewalld)、添加永久规则(--permanent指定端口及协议)、重载配置(--reload);临时规则重启失效,不重载则不生效。

Linux用firewalld放行端口,核心就三步:确认服务运行、添加永久规则、重载配置。不加--permanent只是临时生效,重启就丢;不执行--reload,规则压根不启用。
确认firewalld已启动并处于活跃状态
firewalld默认可能未启用,先检查是否运行:
-
systemctl status firewalld—— 看输出中是否有 active (running) - 若未运行,执行:
systemctl start firewalld启动服务 - 设为开机自启:
systemctl enable firewalld - 查看当前生效区域(通常是
public):firewall-cmd --get-active-zones
放行单个或多个端口(TCP/UDP)
按实际协议指定,避免只写端口号却漏掉/tcp或/udp:
- 开放80端口(TCP):
firewall-cmd --zone=public --add-port=80/tcp --permanent - 开放53端口(UDP):
firewall-cmd --zone=public --add-port=53/udp --permanent - 批量开放端口范围(如9000–9010):
firewall-cmd --zone=public --add-port=9000-9010/tcp --permanent - 同时开放多个不连续端口:
firewall-cmd --zone=public --add-port=22/tcp --add-port=443/tcp --add-port=8080/tcp --permanent
限制访问来源:仅允许特定IP或网段连指定端口
比全放开更安全,适用于数据库、管理后台等敏感服务:
- 只允许
192.168.1.100访问2375端口:firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="2375" protocol="tcp" accept' - 只允许
10.0.0.0/8网段访问8000–8080端口:firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" port port="8000-8080" protocol="tcp" accept' - 删除上述某条规则,把
add-rich-rule换成remove-rich-rule,其余内容完全一致即可
验证、重载与排错
每改完规则必须重载,否则不生效;验证要分层次:
- 重载配置:
firewall-cmd --reload(必须执行) - 查看当前已放行的端口:
firewall-cmd --zone=public --list-ports - 检查某端口是否在规则中:
firewall-cmd --query-port=8080/tcp(返回yes或no) - 查看完整规则(含服务、端口、富规则):
firewall-cmd --list-all - 如果端口仍不通,检查是否被iptables干扰:
systemctl stop iptables(firewalld和iptables不能共存生效)










