Linux防火墙放行端口方法_firewalld实战说明【教程】


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

Linux防火墙放行端口方法_firewalld实战说明【教程】

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(返回yesno
  • 查看完整规则(含服务、端口、富规则):firewall-cmd --list-all
  • 如果端口仍不通,检查是否被iptables干扰:systemctl stop iptables(firewalld和iptables不能共存生效)