【iptables命令详解】iptables 是 Linux 系统中用于配置 IPv4 数据包过滤规则的工具,属于 netfilter 项目的一部分。它主要用于设置、维护和检查网络数据包的过滤规则,是防火墙配置的核心组件之一。通过 iptables,可以实现对入站、出站和转发的数据包进行控制,从而增强系统的安全性。
以下是对 iptables 命令的详细总结与表格形式的整理:
一、iptables 基本结构
iptables 的规则是按照链(Chain)来组织的,每个链对应不同的处理阶段。主要的链包括:
链名称 | 说明 |
INPUT | 处理进入本机的数据包(目标地址为本机) |
OUTPUT | 处理从本机发出的数据包(源地址为本机) |
FORWARD | 处理经过本机转发的数据包(源地址和目标地址都不是本机) |
PREROUTING | 在路由决策之前处理数据包(用于 NAT) |
POSTROUTING | 在路由决策之后处理数据包(用于 NAT) |
二、常用命令参数
参数 | 说明 |
`-A` | 添加规则到指定链的末尾 |
`-I` | 插入规则到指定链的指定位置 |
`-D` | 删除指定链中的规则 |
`-L` | 列出指定链的规则 |
`-F` | 清空指定链的所有规则 |
`-X` | 删除用户自定义的链 |
`-P` | 设置链的默认策略(ACCEPT/DROP/REJECT) |
`-n` | 以数字形式显示 IP 地址和端口号 |
`-v` | 显示详细信息 |
`-t` | 指定表类型(如 filter、nat、mangle、raw) |
三、常用表(Table)
表名 | 说明 |
filter | 默认表,用于过滤数据包(INPUT/OUTPUT/FORWARD) |
nat | 用于网络地址转换(NAT),包括 PREROUTING/POSTROUTING/FORWARD |
mangle | 用于修改数据包的头部信息(如 TOS 字段) |
raw | 用于配置数据包的连接跟踪行为 |
四、常见操作示例
操作 | 示例命令 |
查看所有规则 | `iptables -L -n -v` |
添加允许 SSH 流量 | `iptables -A INPUT -p tcp --dport 22 -j ACCEPT` |
允许来自特定 IP 的流量 | `iptables -A INPUT -s 192.168.1.100 -j ACCEPT` |
拒绝所有入站流量 | `iptables -P INPUT DROP` |
清空所有规则 | `iptables -F` |
保存规则(CentOS/RHEL) | `service iptables save` 或 `iptables-save > /etc/sysconfig/iptables` |
五、iptables 规则顺序
iptables 的规则是按顺序执行的,一旦匹配成功,就不再继续匹配后续规则。因此,规则的顺序非常重要。
例如:
```bash
iptables -A INPUT -s 192.168.1.100 -j ACCEPT
iptables -A INPUT -j DROP
```
第一条规则允许来自 192.168.1.100 的流量,第二条规则拒绝其他所有流量。
六、iptables 与 firewalld 对比
特性 | iptables | firewalld |
类型 | 传统命令行工具 | 基于 D-Bus 的动态防火墙管理工具 |
配置方式 | 手动编辑规则 | 使用 XML 配置文件 |
动态支持 | 不支持 | 支持 |
性能 | 更高效 | 相对较低 |
七、注意事项
- iptables 规则在系统重启后会丢失,需手动保存或使用脚本自动加载。
- 在生产环境中,建议使用更高级的防火墙工具如 `firewalld` 或 `ufw`。
- 修改规则前,应备份现有配置,避免误操作导致网络中断。
总结
iptables 是 Linux 中非常强大的防火墙工具,适用于各种网络环境下的安全防护。虽然其语法较为复杂,但掌握基本命令和规则结构后,可以灵活地实现网络流量控制。对于初学者来说,建议先从简单的规则开始,逐步深入理解其工作原理和应用场景。