📋 速查表
规则操作
| 操作 | 命令 |
|---|---|
| 查看所有规则 | iptables -L -v -n --line-numbers |
| 查看指定链 | iptables -L INPUT -v -n |
| 查看指定表 | iptables -t nat -L -v -n |
| 追加规则 | iptables -A INPUT -p tcp --dport 80 -j ACCEPT |
| 插入到第 1 行 | iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT |
| 删除指定规则 | iptables -D INPUT 3(删除第 3 行) |
| 清空所有规则 | iptables -F |
| 清空所有链 | iptables -F && iptables -X |
| 设置默认策略 | iptables -P INPUT DROP |
| 重置计数器 | iptables -Z |
| 保存规则 | iptables-save > /etc/iptables/rules.v4 |
| 恢复规则 | iptables-restore < /etc/iptables/rules.v4 |
常用匹配条件
| 条件 | 语法 | 示例 |
|---|---|---|
| 协议 | -p tcp/udp/icmp | -p tcp |
| 目标端口 | --dport 端口 | --dport 80 |
| 多端口 | -m multiport --dports | -m multiport --dports 80,443 |
| 源 IP | -s IP/网段 | -s 192.168.1.0/24 |
| 目标 IP | -d IP/网段 | -d 10.0.0.50 |
| 网卡接口 | -i 接口名 | -i eth0 |
| 连接状态 | -m state --state | -m state --state NEW,ESTABLISHED |
| 速率限制 | -m limit --limit | -m limit --limit 5/min |
| 连接数限制 | -m connlimit --connlimit-above | -m connlimit --connlimit-above 10 |
| IP 集合 | -m set --match-set | -m set --match-set blacklist src |
| TCP 标志 | --tcp-flags | --tcp-flags SYN,ACK,FIN SYN |
常用目标(Target)
| Target | 作用 | 示例 |
|---|---|---|
| ACCEPT | 允许通过 | -j ACCEPT |
| DROP | 静默丢弃(不回复) | -j DROP |
| REJECT | 拒绝并回复(通知对方) | -j REJECT --reject-with tcp-reset |
| LOG | 记录日志后继续匹配 | -j LOG --log-prefix "DROP: " |
| DNAT | 目标地址转换(端口转发) | -j DNAT --to 10.0.0.5:8080 |
| SNAT | 源地址转换(共享公网 IP) | -j SNAT --to 1.2.3.4 |
| MASQUERADE | 动态 SNAT(适合拨号网络) | -j MASQUERADE |
| REDIRECT | 重定向到本机端口 | -j REDIRECT --to-port 8080 |
| MARK | 打标记(配合策略路由) | -j MARK --set-mark 1 |
| RETURN | 返回调用链 | -j RETURN |
iptables vs nftables vs firewalld
| 特性 | iptables | nftables | firewalld |
|---|---|---|---|
| 时代 | 经典(v4) | 新一代(v5) | 高层封装 |
| 语法 | 复杂 | 简洁 | 简单 |
| 性能 | 线性匹配 | 集合匹配 O(1) | 底层用 nftables |
| 持久化 | iptables-save | nft list ruleset | 自动持久化 |
| 适合场景 | 老系统、Docker | 新系统、高性能 | 桌面、简单服务器 |
| 学习价值 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
💡 提示: 💡 建议:iptables 是基础——即使你最终用 nftables 或 firewalld,理解 iptables 的链、表、匹配、目标概念也是一切防火墙知识的根基。先学透 iptables,再迁移到 nftables 会非常轻松。