CentOS怎样用命令行开启防火墙端口并设置为永久生效?

在管理 CentOS 服务器时,一项基础且至关重要的任务是配置防火墙规则,以允许特定服务的网络流量通过,这通常涉及到开启指定的端口,理解在 centos 怎样开启端口,不仅能保障服务正常运行,也是维护服务器安全的第一步,本文将详细介绍在 CentOS 不同版本中开启端口的方法,重点介绍现代系统中使用的 firewalld,并兼顾传统 iptables 的操作。

CentOS怎样用命令行开启防火墙端口并设置为永久生效?

使用 firewalld 开启端口 (CentOS 7 及以上版本)

从 CentOS 7 开始,firewalld 成为了默认的防火墙管理工具,它引入了“区域”和“服务”的概念,使得防火墙管理更加动态和灵活。firewalld 支持运行时更改和永久配置,无需重启防火墙服务即可应用新规则。

基本概念:区域

firewalld 使用区域来定义信任级别。public 区域适用于不信任的网络,只允许指定的传入连接;而 trusted 区域则允许所有流量,默认情况下,网络接口会被分配到 public 区域,大多数端口开启操作都在此区域进行。

操作步骤

  1. 检查防火墙状态
    在进行任何更改之前,首先需要确认 firewalld 是否正在运行,可以使用以下命令:

    sudo firewall-cmd --state

    如果输出是 running,则表示防火墙正在运行,如果未运行,可以使用 sudo systemctl start firewalld 启动,并使用 sudo systemctl enable firewalld 设置为开机自启。

  2. 永久开启一个端口
    假设我们需要开启 TCP 协议的 8080 端口,推荐的做法是直接添加永久规则,这样可以避免重启后配置丢失,命令格式为 --add-port=端口/协议

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

    命令解析:

    • --zone=public:指定在 public 区域中操作,如果省略,则使用默认区域。
    • --add-port=8080/tcp:表示要添加的端口是 8080,协议是 TCP,如果需要开启 UDP 端口,则使用 8080/udp
    • --permanent:表示这是一个永久规则,写入配置文件。
  3. 重新加载防火墙配置
    添加了永久规则后,需要重新加载 firewalld 配置才能使其生效,这是一个关键步骤,许多初学者会忘记。

    sudo firewall-cmd --reload

    执行此命令后,新的永久规则就会被加载到运行时环境中。

  4. 验证端口是否已开启
    可以通过以下命令查看当前区域已开启的所有端口:

    CentOS怎样用命令行开启防火墙端口并设置为永久生效?

    sudo firewall-cmd --zone=public --list-ports

    如果输出中包含 8080/tcp,则说明端口已成功开启,你也可以使用 --list-all 查看区域的所有详细信息。

更佳实践:通过服务名开启端口

对于一些标准服务,如 HTTP (80端口)、HTTPS (443端口)、MySQL (3306端口),firewalld 提供了直接通过服务名来开启端口的方法,这比记忆具体端口号更方便、更规范。

# 开放 HTTP 服务
sudo firewall-cmd --zone=public --add-service=http --permanent
# 开放 HTTPS 服务
sudo firewall-cmd --zone=public --add-service=https --permanent
# 重新加载配置
sudo firewall-cmd --reload

这种方式会自动打开服务预设的端口和协议,是推荐的最佳实践。

使用 iptables 开启端口 (CentOS 6 及更早版本)

对于仍在使用 CentOS 6 或更早版本的服务器,防火墙管理工具是 iptablesiptables 的规则是静态的,修改后需要保存才能持久化。

操作步骤

  1. 添加规则
    要开启 TCP 8080 端口,需要在 INPUT 链中追加一条允许该端口流量通过的规则。

    sudo iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

    命令解析:

    • -I INPUT:将规则插入到 INPUT 链的顶部(-A 是追加到末尾)。INPUT 链处理所有进入服务器的数据包。
    • -p tcp:指定协议为 TCP。
    • --dport 8080:指定目标端口为 8080。
    • -j ACCEPT:表示匹配此规则的数据包将被“接受”,即允许通过。
  2. 保存规则
    使用 iptables 添加的规则仅当前生效,服务器重启后会丢失,必须执行保存操作。

    sudo service iptables save

    这条命令会将当前内存中的 iptables 规则写入到 /etc/sysconfig/iptables 配置文件中,从而实现持久化。

  3. 验证规则
    可以使用以下命令查看当前的 iptables 规则列表:

    CentOS怎样用命令行开启防火墙端口并设置为永久生效?

    sudo iptables -L -n -v

    INPUT 链中,你应该能看到一条关于 8080 端口的 ACCEPT 规则。

firewalldiptables 对比

特性 firewalld (CentOS 7+) iptables (CentOS 6)
管理工具 firewall-cmd iptables 命令
配置方式 运行时和永久配置分离,需reload 实时生效,需手动save持久化
核心概念 区域和服务 链、规则、表
易用性 更高,命令更语义化 较低,语法更复杂
动态性 支持动态更新规则,无需重建连接 更改规则通常需要重建网络连接

相关问答 FAQs

问题1:我已经按照教程在 CentOS 上开启了端口,为什么从外部还是无法访问?
解答:这是一个常见问题,原因可能不止防火墙一个,请按以下顺序排查:

  1. 服务状态:首先确认您要开放端口对应的服务(如 Nginx, Tomcat, MySQL)确实正在运行,并且监听在您指定的端口上,可以使用 ss -tulnp | grep :端口号netstat -tulnp | grep :端口号 来检查。
  2. 防火墙规则:再次确认防火墙规则是否已正确添加并重新加载(firewalld)或保存(iptables),使用 firewall-cmd --list-alliptables -L -n 检查。
  3. SELinux 状态:如果启用了 SELinux(Security-Enhanced Linux),它可能会阻止服务访问非标准端口,默认情况下 Apache 只能监听 80 和 443 端口,你可以通过 getenforce 命令查看其状态,如果需要让服务监听其他端口,需要修改 SELinux 策略,sudo semanage port -a -t http_port_t -p tcp 8080
  4. 云服务商安全组:如果您的 CentOS 服务器部署在云平台(如阿里云、腾讯云、AWS),请务必检查云平台控制台中的“安全组”设置,安全组是另一层虚拟防火墙,您必须在安全组规则中也允许对应端口的流量进入,否则流量在到达服务器系统防火墙之前就会被拦截。

问题2:我错误地开启了一个端口,或者某个服务不再需要了,如何关闭已开启的端口?
解答:关闭端口与开启端口是逆向操作,同样需要分情况讨论。

  • 对于 firewalld

    1. 使用 --remove-port 选项移除永久规则,关闭 8080 端口:
      sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
    2. 重新加载防火墙配置使更改生效:
      sudo firewall-cmd --reload

      如果是通过服务名开启的,则使用 --remove-service 选项:

      sudo firewall-cmd --zone=public --remove-service=http --permanent
      sudo firewall-cmd --reload
  • 对于 iptables

    1. 删除对应的规则,你需要找到规则的行号,或者精确匹配规则内容来删除,使用 iptables -L -n --line-numbers 查看规则及其行号,假设要删除的规则在 INPUT 链的第 3 行:
      sudo iptables -D INPUT 3

      或者,通过精确匹配规则内容来删除(更安全):

      sudo iptables -D INPUT -p tcp --dport 8080 -j ACCEPT
    2. 务必保存更改,否则重启后规则会恢复:
      sudo service iptables save

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

(0)
热舞的头像热舞
上一篇 2025-10-12 16:14
下一篇 2025-10-12 16:18

相关推荐

发表回复

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

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

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

关注微信