CentOS 6 作为一款经典稳定的服务器操作系统,其内置的防火墙工具 iptables 至今仍被许多管理员用于管理网络流量与安全策略,尽管更新的防火墙解决方案如 firewalld 已逐渐普及,但理解 iptables 的工作原理与配置方法,对于维护现有老系统或深入学习 Linux 网络安全依然具有重要价值。

iptables 的核心构成
iptables 本质上是一个配置 Linux 内核防火墙规则的用户空间工具,其规则体系建立在“表”、“链”和“规则”三个层次之上。
表(Tables):用于分类规则功能,主要包括:
- filter 表:默认表,负责数据包的过滤,决定是否放行。
- nat 表:用于网络地址转换,如端口转发、地址伪装。
- mangle 表:用于修改数据包内容(如 TOS、TTL)。
- raw 表:用于决定数据包是否被连接跟踪机制处理。
链(Chains):规则的具体生效位置,是数据包传输路径上的检查点。
- INPUT:处理进入本机的数据包。
- OUTPUT:处理从本机发出的数据包。
- FORWARD:处理经过本机路由转发的数据包。
- PREROUTING 与 POSTROUTING:主要用于 nat 表,在路由前或路由后修改数据包。
规则(Rules):管理员定义的具体条件与动作,按顺序存储在链中。
基本命令与语法
掌握 iptables 命令的基本格式是进行配置的第一步,其通用结构为: iptables [-t 表名] 命令选项 [链名] [规则匹配条件] [-j 目标动作]
常用命令选项:

-A:在链末尾追加一条规则。-I:在链中指定位置插入规则。-D:删除指定规则。-L:列出指定链或所有链的规则。-F:清空指定链或所有链的规则。-P:设置链的默认策略(ACCEPT 或 DROP)。-n:以数字形式显示地址和端口,与-L连用可加速查询。
常用目标动作:
ACCEPT:允许数据包通过。DROP:丢弃数据包,不予响应。REJECT:拒绝数据包,并向发送方返回错误信息。LOG:将匹配的数据包信息记录到系统日志。SNAT/DNAT:用于源地址或目的地址转换。
实用规则配置示例
以下是一些常见场景下的规则配置,您可以根据实际需求调整。
查看现有规则iptables -L -n -v 此命令能详细列出所有链的规则,显示数据包计数,有助于监控与调试。
设置默认策略 建议将链的默认策略设置为 DROP 或 REJECT,然后显式开放所需服务,遵循“默认拒绝”原则。
iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # 通常允许所有出站流量
开放必要的入站服务 允许来自任何地址的 SSH(22端口)连接: iptables -A INPUT -p tcp --dport 22 -j ACCEPT 允许本地回环接口通信: iptables -A INPUT -i lo -j ACCEPT 允许已建立及相关连接的数据包进入,这是确保对外请求能有回应数据的关键: iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
限制特定访问 仅允许来自 192.168.1.0/24 网段的设备访问本机 HTTP 服务: iptables -A INPUT -p tcp --dport 80 -s 192.168.1.0/24 -j ACCEPT 限制单个 IP 的并发连接数,有助于防止简单资源耗尽攻击: iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 -j REJECT

配置网络地址转换 将内网 192.168.1.100 的 80 端口通过本机公网 IP 映射出去: iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80 启用 IP 伪装,使内网机器可以通过本机上网: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
配置的保存与加载
在 CentOS 6 中,使用 service iptables save 命令会将当前规则集保存至 /etc/sysconfig/iptables 文件,系统重启时,iptables 初始化脚本会自动从该文件加载规则,也可手动操作:
- 备份当前规则:
iptables-save > /path/to/backup.file - 恢复规则:
iptables-restore < /path/to/backup.file
重要注意事项
- 顺序至关重要:规则在链中从上至下匹配,第一条匹配的规则即生效,应将具体的放行规则置于宽泛的拒绝规则之前。
- 避免自我锁定:在通过远程连接配置防火墙时,务必首先设置允许当前 SSH 连接的规则,或在操作前设置宽容的默认策略,配置完成后再收紧,建议在服务器控制台或使用
at/crontab设置定时恢复任务来防止误操作。 - 结合 TCP Wrappers 与 SSH 配置:对于 SSH 等服务的访问控制,可结合
/etc/hosts.allow和/etc/hosts.deny文件以及 SSH 自身的AllowUsers配置,实现多层次的防御。 - 留意服务依赖:某些服务(如 NFS、FTP)可能需要额外的连接跟踪模块支持,配置复杂规则时需查阅相关文档。
个人观点
尽管 iptables 提供了极为精细和强大的直接控制能力,但其规则语法相对繁琐,对新手存在一定门槛,在 CentOS 6 的生命周期末期,继续维护基于 iptables 的防火墙需要投入更多的学习与排错成本,对于仍有业务运行在 CentOS 6 环境的管理者而言,熟练掌握 iptables 是一项必要的维持性技能,从技术发展角度看,若条件允许,将业务迁移至支持 firewalld 或 nftables 的新版本系统,不仅能获得更现代化的管理工具和持续的安全更新,长远来看也更利于运维的自动化和标准化,防火墙配置的核心思想始终是“最小权限原则”,无论工具如何变迁,这一安全哲学都是构筑系统防线的基石。

