想要掌握 Linux 网络安全,iptables 是绕不开的必修课。本文将带你深度剖析 iptables 的“四表五链”核心机制,通过清晰的逻辑和丰富的实战命令,让你从新手蜕变为网络防火墙配置专家。
什么是 iptables?
iptables 是 Linux 内核集成的 IP 信息包过滤系统。它实际上是一个运行在用户空间的命令行工具,用于配置 Linux 内核防火墙(Netfilter)提供的表格。无论是简单的端口转发,还是复杂的流量过滤,iptables 都能提供极其强大的控制能力。
核心概念:四表五链
理解 iptables 的核心在于掌握“表(Tables)”和“链(Chains)”的逻辑结构。这是所有规则运行的基石:
- 四表:filter 表(默认,用于过滤)、nat 表(地址转换)、mangle 表(修改数据包头)、raw 表(脱离连接跟踪)。
- 五链:INPUT(入站)、OUTPUT(出站)、FORWARD(转发)、PREROUTING(路由前修改)、POSTROUTING(路由后修改)。
规则匹配的工作流程
当一个数据包进入系统时,它会按照预定义的优先级顺序经过不同的表和链。iptables 遵循“从上到下”的匹配原则,一旦匹配到对应的规则(如 ACCEPT 或 DROP),就会停止向下搜索。如果所有规则都不匹配,则执行该链的默认策略(Policy)。
常用命令实战
掌握 iptables 需要从最基础的操作开始。以下是几个在运维工作中高频使用的命令示例:
- 查看当前规则:iptables -L -n -v --line-numbers(以数字形式显示端口,并带有行号,方便删除)。
- 放行 SSH 服务:iptables -A INPUT -p tcp --dport 22 -j ACCEPT。
- 封锁特定恶意 IP:iptables -I INPUT -s 123.123.123.123 -j DROP。
- 删除指定规则:iptables -D INPUT 5(删除 INPUT 链中的第 5 条规则)。
规则的持久化存储
默认情况下,通过命令行修改的 iptables 规则在系统重启后会丢失。为了让配置永久生效,我们需要使用特定的工具进行保存:
- 在 CentOS/RHEL 中:service iptables save
- 在 Ubuntu/Debian 中:安装 iptables-persistent 并执行 netfilter-persistent save
结语
iptables 虽然配置逻辑相对底层,但其性能和灵活性至今仍是许多现代防火墙工具(如 firewalld 或 ufw)的底层依赖。熟练掌握它,不仅能提升系统安全性,更能让你对 Linux 网络协议栈有更深刻的理解。