商城首页欢迎来到中国正版软件门户

您的位置:首页 >CentOS 7怎么开放防火墙端口

CentOS 7怎么开放防火墙端口

  发布于2026-08-12 阅读(0)

扫一扫,手机访问

在 CentOS 7 里,默认启用的防火墙服务是 firewalld,不是 iptables。操作前先别急着改规则,先用 firewall-cmd --state 看清楚当前是否正在运行;开放端口时,要通过 --permanent 持久化添加,随后再执行 --reload,规则才会真正生效。还有一点很容易被忽略:云安全组和服务监听地址也得同步配置好,否则端口就算放开了,外部照样访问不到。

CentOS 7怎么开放防火墙端口

firewalld 是 CentOS 7 默认的防火墙服务,不是 iptables。直接操作 iptables 规则或用旧版命令会失效,甚至导致规则冲突。

确认 firewalld 正在运行

先看防火墙有没有真正在跑:

  • 执行 firewall-cmd --state,返回 running 才算活的;如果报 not running,得先启动
  • 别只看 systemctl status firewalld 的输出——有时显示 “active (exited)” 实际没加载规则,firewall-cmd --state 才是唯一可信判断
  • 若未运行,必须执行 systemctl start firewalld,再加 systemctl enable firewalld 确保重启后还在

开放单个端口(如 8080)

真正的要点就在这里:--permanent--reload 这两个动作,一个都不能少。

  • 运行 firewall-cmd --zone=public --add-port=8080/tcp --permanent —— 这步只写进磁盘配置,不生效
  • 必须紧接着执行 firewall-cmd --reload(不是 systemctl restart firewalld),否则端口对外仍是封闭的
  • 验证是否成功:用 firewall-cmd --query-port=8080/tcp,返回 yes 才算真正落库;再用 firewall-cmd --list-ports 看是否出现在列表里

开放端口段(如 K8s NodePort 30000–32767)

区间写法容易漏掉协议或拼错语法,导致命令静默失败:

  • 正确写法是 firewall-cmd --zone=public --add-port=30000-32767/tcp --permanent,注意中间是英文短横 -,不是中文破折号或下划线
  • UDP 端口段要单独加,比如 DNS 批量放行:firewall-cmd --zone=public --add-port=30000-32767/udp --permanent
  • 加完记得 firewall-cmd --reload;不 reload,netstat -ntlpss -tuln 可能显示端口已监听,但外部仍连不上——因为流量被防火墙拦在入口了

常见失效原因和绕过陷阱

很多“明明加了端口却访问不通”的问题,其实卡在下面几个地方:

  • 服务器阿里云、腾讯云等)必须同步配置安全组,firewalld 放行只是第二道关,安全组没开等于白搭
  • systemctl restart firewalld 代替 firewall-cmd --reload:前者会清空 runtime 规则,可能把临时添加的 rich rule 或 interface zone 给冲掉
  • 误删 --permanent:比如只运行 firewall-cmd --add-port=8080/tcp,重启 firewalld 后端口自动消失,排查时容易忽略这点
  • firewall-cmd --list-ports 查不到刚加的端口?先确认当前 zone 是否为 publicfirewall-cmd --get-active-zones,非 public zone 要显式指定 --zone=xxx
实际生效的端口规则,是 firewalld 配置 + 安全组 + 服务本身监听地址(比如是否绑定了 0.0.0.0 而非 127.0.0.1)三者共同决定的。少验任何一个环节,都会让你在 curl 失败后反复怀疑命令有没有输对。
本文转载于:https://www.php.cn/faq/2962169.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注