【iptables命令详解】iptables 是 Linux 系统中用于配置网络数据包过滤和地址转换的核心工具,广泛应用于防火墙设置、网络流量控制等场景。它基于内核的 Netfilter 框架,允许用户通过规则链(Chain)对数据包进行匹配、丢弃、转发或修改。
以下是对 iptables 命令的全面总结与整理,以文字说明加表格形式展示其主要功能与使用方法。
一、iptables 基本概念
| 术语 | 说明 |
| Chain(链) | 数据包经过的路径,如 INPUT、OUTPUT、FORWARD |
| Rule(规则) | 定义如何处理数据包,包括匹配条件和动作 |
| Table(表) | 不同类型的规则集合,如 filter、nat、mangle、raw |
| Policy(策略) | 默认处理方式,如 ACCEPT、DROP、REJECT |
二、iptables 常用命令结构
基本语法格式如下:
```
iptables [-t table] [command] [rule-specification
```
- `-t`:指定表名(默认为 filter)
- `command`:操作命令,如 -A(添加)、-D(删除)、-L(列出)
- `rule-specification`:规则定义,包含匹配条件和目标动作
三、常用命令与功能对照表
| 命令 | 功能 | 示例 |
| `-A` | 添加规则到链末尾 | `iptables -A INPUT -p tcp --dport 22 -j ACCEPT` |
| `-D` | 删除指定规则 | `iptables -D INPUT -p tcp --dport 22 -j ACCEPT` |
| `-L` | 列出所有规则 | `iptables -L -n` |
| `-F` | 清空所有规则 | `iptables -F` |
| `-X` | 删除自定义链 | `iptables -X` |
| `-P` | 设置链的默认策略 | `iptables -P INPUT DROP` |
| `-N` | 创建新链 | `iptables -N mychain` |
| `-E` | 重命名链 | `iptables -E mychain newchain` |
| `-I` | 插入规则到链中 | `iptables -I INPUT 1 -p icmp -j DROP` |
| `-S` | 显示规则的原始格式 | `iptables -S` |
四、iptables 表与链介绍
1. 表(Table)
| 表名 | 用途 | 说明 |
| filter | 过滤数据包 | 默认表,用于控制数据包的接受或拒绝 |
| nat | 地址转换 | 用于源地址转换(SNAT)、目的地址转换(DNAT) |
| mangle | 修改数据包头 | 用于标记或修改数据包的特定字段 |
| raw | 高级网络处理 | 用于绕过连接跟踪,直接处理原始数据包 |
2. 链(Chain)
| 链名 | 说明 |
| INPUT | 进入本机的数据包 |
| OUTPUT | 从本机发出的数据包 |
| FORWARD | 经过本机转发的数据包 |
| PREROUTING | 在路由前处理数据包(nat 表) |
| POSTROUTING | 在路由后处理数据包(nat 表) |
五、常见规则参数说明
| 参数 | 说明 |
| `-p` | 协议类型(tcp, udp, icmp, all) |
| `--sport` | 源端口 |
| `--dport` | 目标端口 |
| `-s` | 源IP地址 |
| `-d` | 目标IP地址 |
| `-i` | 入接口(如 eth0) |
| `-o` | 出接口(如 eth1) |
| `-j` | 目标动作(ACCEPT, DROP, REJECT, LOG) |
六、示例规则
| 规则描述 | 示例命令 |
| 允许 SSH 连接 | `iptables -A INPUT -p tcp --dport 22 -j ACCEPT` |
| 禁止 ICMP 请求 | `iptables -A INPUT -p icmp -j DROP` |
| 允许 HTTP 流量 | `iptables -A INPUT -p tcp --dport 80 -j ACCEPT` |
| 记录被丢弃的数据包 | `iptables -A INPUT -j LOG --log-prefix "DROPPED: "` |
| 转发 80 端口到 8080 | `iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080` |
七、注意事项
- iptables 的规则是按顺序执行的,先匹配的规则优先处理。
- 使用 `-n` 参数可以加快规则显示速度,避免 DNS 解析。
- 所有规则在系统重启后会丢失,建议使用脚本或 `iptables-save` 保存规则。
八、总结
iptables 是 Linux 系统中强大的网络管理工具,适用于各种防火墙配置和网络流量控制场景。掌握其基本命令、表与链的结构以及规则编写方法,是系统管理员必备技能之一。通过合理配置 iptables,可以有效提升系统的安全性和可控性。
如需进一步了解具体命令或实际应用场景,请参考官方文档或实践测试环境。


