CentOS7.2防火墙如何永久开放指定端口?

在CentOS 7.2系统中,默认的防火墙管理工具已经从传统的iptables转变为更为强大和灵活的firewalldfirewalld(Dynamic Firewall Manager)是一个动态防火墙管理守护进程,它支持网络区域(zones)定义网络连接以及接口的信任级别,为系统管理员提供了更为精细和便捷的防火墙策略管理方式,相较于iptables需要刷新所有规则才能生效的特性,firewalld允许在运行时动态修改规则而无需中断现有连接,极大地提升了运维效率和系统稳定性。

CentOS7.2防火墙如何永久开放指定端口?

核心概念:区域与服务

理解firewalld的关键在于掌握其两个核心概念:区域和服务。

区域firewalld的精髓所在,它本质上是一套预先定义好的安全规则集,用于判断传入的流量是否可信,一个网络接口或连接源可以被关联到一个特定的区域,从而应用该区域的所有规则,你可以将家里的网络接口设置为home区域,信任其中的大部分流量;而将连接到公共Wi-Fi的接口设置为public区域,只允许极少量的服务通过,系统默认区域通常是public

服务则是对特定端口和协议的组合封装。http服务就代表了TCP协议的80端口,通过管理服务,而非直接操作端口号,可以使防火墙规则更具可读性和可维护性。firewalld也支持直接添加和移除端口。

常用操作与命令详解

管理firewalld主要通过firewall-cmd命令行工具完成,以下是一些最常用的操作。

查看防火墙状态与信息

需要确认防火墙是否正在运行。

firewall-cmd --state

若返回running,则表示防火墙正在运行。

查看当前活动的区域以及绑定的接口:

firewall-cmd --get-active-zones

查看指定区域(如public)的详细规则,包括允许的服务、端口等:

CentOS7.2防火墙如何永久开放指定端口?

firewall-cmd --zone=public --list-all

管理区域

查看系统默认区域:

firewall-cmd --get-default-zone

设置系统默认区域(将默认区域改为work):

firewall-cmd --set-default-zone=work

开放服务与端口

这是日常运维中最频繁的操作。firewalld的规则修改分为运行时(runtime)和永久(permanent)两种,运行时规则立即生效但重启后失效;永久规则需要重新加载配置后才会生效,并且能持久保存。

永久开放一个服务(开放HTTP服务,即80端口):

firewall-cmd --zone=public --add-service=http --permanent

永久开放一个指定端口(开放TCP协议的8080端口):

firewall-cmd --zone=public --add-port=8080/tcp --permanent

完成永久规则的添加后,必须重新加载防火墙配置使其生效:

firewall-cmd --reload

若想移除已开放的规则,只需将--add替换为--remove即可,移除刚才开放的8080端口:

firewall-cmd --zone=public --remove-port=8080/tcp --permanent
firewall-cmd --reload

常用区域预设策略对比表

为了更好地理解区域,下表列出了几个常用区域的默认策略:

CentOS7.2防火墙如何永久开放指定端口?

区域名称 默认策略 说明
trusted 接受所有传入连接 最信任的区域,通常用于内部网络。
home 接受大多数传入连接 用于家庭网络,默认允许SSH、MDNS、Samba等。
public 仅接受选定的传入连接 默认区域,不信任网络中的大多数计算机,仅开放SSH服务。
dmz 仅接受选定的传入连接 用于非军事区,对内网是隔离的,对外网是可访问的。
block 拒绝所有传入连接 拒绝所有传入的网络连接,并返回ICMP-host-prohibited消息。
drop 丢弃所有传入连接 丢弃所有传入的网络连接,不返回任何响应。

相关问答 (FAQs)

Q1: 我执行了firewall-cmd --add-port=...命令,但重启服务器后规则就消失了,这是为什么?

A: 这是因为您在添加规则时没有使用--permanent参数。firewall-cmd默认只修改运行时配置,这些配置在防火墙服务或系统重启后会丢失,要使规则永久生效,必须在命令中加入--permanent参数,例如firewall-cmd --add-port=10022/tcp --permanent,添加永久规则后,还需要执行firewall-cmd --reload命令来重新加载配置,让新规则在当前会话中立即生效。

Q2: 如何临时或永久地关闭firewalld防火墙?

A: 关闭防火墙在某些特殊测试场景下可能是必要的,但在生产环境中强烈不建议这样做。

  • 临时关闭(立即停止,重启后自动恢复):
    systemctl stop firewalld
  • 永久关闭(停止并禁止开机自启):
    systemctl stop firewalld
    systemctl disable firewalld

    执行这两条命令后,firewalld服务将停止运行,并且在下次系统启动时也不会自动启动,请务必在完成测试后重新开启它(systemctl start firewalld && systemctl enable firewalld),以确保系统安全。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-19 23:03
下一篇 2025-10-19 23:09

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信