5154

Good Luck To You!

CentOS7.2的iptables如何开启指定端口并保存生效?

在 CentOS 7.2 这个稳定且广受欢迎的服务器操作系统版本中,防火墙的管理是一个核心的系统安全议题,与之前的 CentOS 版本不同,CentOS 7 默认采用 firewalld 作为动态防火墙管理器,而非用户更为熟悉的 iptablesiptables 凭借其强大的功能和灵活的规则配置,仍然是许多系统管理员的首选工具,本文将深入探讨在 CentOS 7.2 系统上如何安装、配置和使用 iptables,以实现精确的网络访问控制。

CentOS7.2的iptables如何开启指定端口并保存生效?

从 firewalld 迁移到 iptables

由于 firewalldiptables 是两种不同的防火墙服务,它们不能同时运行,要在 CentOS 7.2 上使用 iptables,首要任务是禁用 firewalld 并安装 iptables 服务。

这个过程可以通过以下步骤完成:

  1. 停止并禁用 firewalld: 执行以下命令来停止当前运行的 firewalld 服务,并禁止它在系统启动时自动加载。

    systemctl stop firewalld
    systemctl mask firewalld
  2. 安装 iptables-services: CentOS 7.2 的官方软件源中提供了 iptables-services 软件包,它包含了 iptablesip6tables 的服务管理脚本。

    yum install iptables-services -y
  3. 启动并启用 iptables: 安装完成后,即可启动 iptables 服务,并将其设置为开机自启,以确保防火墙规则在重启后依然生效。

    systemctl enable iptables
    systemctl start iptables

    至此,系统已成功从 firewalld 切换到 iptables,防火墙将使用 /etc/sysconfig/iptables 文件中定义的规则。

理解 iptables 的核心架构

iptables 的强大之处在于其基于“表”和“链”的规则结构,数据包在流经网络协议栈时,会依次穿过不同的链,iptables 在这些链上检查数据包,并根据匹配的规则执行相应的动作。

最核心的是 filter 表,它负责数据包的过滤功能,该表包含三个内置链:

CentOS7.2的iptables如何开启指定端口并保存生效?

链名称 功能描述
INPUT 处理进入本机的数据包。
FORWARD 处理需要经过本机转发的数据包。
OUTPUT 处理从本机发出的数据包。

每条规则都由一系列“匹配条件”和一个“目标动作”组成,常见的动作包括:

  • ACCEPT:允许数据包通过。
  • DROP:直接丢弃数据包,不给予任何回应。
  • REJECT:拒绝数据包,并向发送方返回一个错误消息。

常用规则配置与管理

掌握基本的命令行操作是使用 iptables 的关键,以下是一些常见的配置示例。

查看当前规则

使用 -L(list)参数可以列出当前的规则列表,-v(verbose)和 --line-numbers 参数可以提供更详细的信息和规则序号,便于管理。

iptables -L -v --line-numbers

允许特定服务

默认情况下,filter 表的 INPUT 链和 FORWARD 链策略可能是 ACCEPT,但更安全的做法是将其设置为 DROP,然后逐条添加需要放行的规则,允许 SSH(端口22)、HTTP(端口80)和 HTTPS(端口443)流量:

# 允许已建立的或相关的连接(非常重要,否则现有连接会中断)
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# 允许本地回环接口
iptables -A INPUT -i lo -j ACCEPT
# 允许 SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许 HTTP
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 允许 HTTPS
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 设置 INPUT 链的默认策略为 DROP
iptables -P INPUT DROP

保存规则

通过命令行添加的规则是临时的,重启服务或系统后会丢失,必须将其保存到配置文件中才能永久生效。

CentOS7.2的iptables如何开启指定端口并保存生效?

service iptables save

该命令会将当前内存中的 iptables 规则保存到 /etc/sysconfig/iptables 文件。

相关问答FAQs

在按照步骤操作后,我发现添加的 iptables 规则在服务器重启后就消失了,这是为什么?

解答: 这是因为您只通过命令行(如 iptables -A ...)将规则添加到了内核的内存中,但没有将这些规则持久化到硬盘上的配置文件里,在 CentOS 7.2 使用 iptables-services 的情况下,必须手动执行 service iptables save 命令,这个命令会读取当前内存中所有生效的规则,并将其写入到 /etc/sysconfig/iptables 文件。iptables 服务在下次启动时会自动加载这个文件里的规则,从而实现持久化。

firewalldiptables 到底有什么核心区别,我应该选择哪一个?

解答: 核心区别在于管理模式和易用性。

  • firewalld 是“动态”的防火墙,支持在不中断现有连接的情况下实时更新规则,它引入了“区域”的概念,如 public, trusted, dmz,可以根据网络接口的不同信任级别应用不同的规则集,对于复杂的网络环境管理更直观、更友好。
  • iptables 是“静态”的,每次规则变更都需要重新加载整个规则集,可能会短暂中断网络连接,它直接对链进行操作,虽然语法更底层、更复杂,但提供了无与伦比的灵活性和精细控制能力,是进行高级网络策略(如复杂的NAT、端口转发等)的利器。

选择建议: 如果您的应用场景相对简单,或者您更偏好图形化工具(如 firewall-config)和区域管理,firewalld 是更现代、更便捷的选择,如果您是需要精细控制每一条数据包、构建复杂网络策略的老派管理员,或者您的脚本工具链是基于 iptables 构建的,那么坚持使用 iptables 会更加得心应手。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年11月    »
12
3456789
10111213141516
17181920212223
24252627282930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.