iptables/nftables — 防火墙规则管理
iptables 是 Linux 内核 netfilter 防火墙的传统管理工具,nftables 是其现代替代品。本速查表涵盖两者的核心操作:规则增删改查、NAT 配置、端口转发、规则持久化以及高级匹配(限速、字符串匹配、状态追踪)。
更新: 2026-07-17·33 条命令
概述
iptables 是 Linux 内核防火墙的用户空间工具,用于配置 IP 包过滤规则。本速查表涵盖基础规则、NAT、转发和持久化配置。
快速开始
``bash
iptables -L -v -n # 列出当前规则
iptables -P INPUT DROP # 设置默认策略
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许 SSH
``
详细用法请参阅下方命令表格。
基础规则(19)
| 命令 | 难度 | ||
|---|---|---|---|
iptables -L -v -n --line-numbers列出所有规则(含详细信息、行号、不解析 DNS) | 基础 | iptables -L INPUT -v -n --line-numbers | |
iptables -A在链末尾追加一条规则 | 基础 | iptables -A INPUT -p tcp --dport 22 -j ACCEPT | |
iptables -I在链开头或指定位置插入规则 | 基础 | iptables -I INPUT 2 -p tcp --dport 443 -j ACCEPT | |
iptables -D删除指定规则 | 基础 | iptables -D INPUT 3 | |
iptables -F清空(刷新)指定链的所有规则 | 基础 | iptables -F INPUT | |
iptables -P设置链的默认策略 | 基础 | iptables -P INPUT DROP | |
iptables -p匹配协议(tcp/udp/icmp/all) | 基础 | iptables -A INPUT -p udp --dport 53 -j ACCEPT | |
iptables --dport匹配目标端口 | 基础 | iptables -A INPUT -p tcp --dport 80 -j ACCEPT | |
iptables -s匹配源 IP 地址 | 基础 | iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT | |
iptables -j ACCEPT允许匹配的数据包通过 | 基础 | iptables -A INPUT -p tcp --dport 22 -s 10.0.0.0/8 -j ACCEPT | |
iptables -j DROP静默丢弃匹配的数据包 | 基础 | iptables -A INPUT -s 203.0.113.0/24 -j DROP | |
iptables -j REJECT拒绝匹配的数据包并返回错误消息 | 中级 | iptables -A INPUT -p tcp --dport 23 -j REJECT --reject-with tcp-reset | |
ip6tablesIPv6 防火墙规则管理 | 中级 | ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT | |
nft list ruleset列出 nftables 整个规则集 | 中级 | nft list ruleset | |
nft add rule向 nftables 链添加规则 | 中级 | nft add rule inet filter input tcp dport 22 accept | |
nft add table创建 nftables 表 | 中级 | nft add table inet my_table | |
nft add chain创建 nftables 链 | 高级 | nft add chain inet my_table my_chain { type filter hook input priority 0\; } | |
nft delete rule删除 nftables 规则 | 中级 | nft delete rule inet filter input handle 3 | |
nft flush ruleset清空所有 nftables 规则 | 中级 | nft flush ruleset |
高级(6)
| 命令 | 难度 | ||
|---|---|---|---|
iptables -j LOG记录匹配的数据包到系统日志但不阻止 | 中级 | iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH_ATTEMPT: " | |
iptables -m state --state按连接状态匹配(旧式状态模块) | 中级 | iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT | |
iptables -m conntrack --ctstate按连接跟踪状态匹配(推荐) | 中级 | iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 80 -j ACCEPT | |
iptables -m limit限速匹配(防止 DOS/暴力破解) | 高级 | iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/min --limit-burst 5 -j ACCEPT | |
iptables -m recent基于最近连接记录的动态匹配 | 高级 | iptables -A INPUT -p tcp --dport 22 -m recent --name SSH --rcheck --seconds 60 -j DROP | |
iptables -m string --string --algo按数据包内容匹配(字符串过滤) | 高级 | iptables -A FORWARD -m string --string "BitTorrent" --algo bm -j DROP |
NAT(5)
| 命令 | 难度 | ||
|---|---|---|---|
iptables -t nat -A PREROUTING在 NAT 表的 PREROUTING 链添加 DNAT 规则 | 中级 | iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.0.5:8080 | |
iptables -t nat -A POSTROUTING在 NAT 表的 POSTROUTING 链添加 SNAT/MASQUERADE 规则 | 中级 | iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | |
iptables -t nat -A PREROUTING -j DNAT目标网络地址转换(端口映射) | 中级 | iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 192.168.1.100:443 | |
iptables -t nat -A POSTROUTING -j SNAT源网络地址转换(固定出口 IP) | 中级 | iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.10 | |
iptables -t nat -A POSTROUTING -j MASQUERADE源地址伪装(动态出口 IP) | 中级 | iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE |
转发(1)
| 命令 | 难度 | ||
|---|---|---|---|
iptables -t filter -A FORWARD在 filter 表的 FORWARD 链添加转发控制规则 | 中级 | iptables -A FORWARD -i eth0 -o eth1 -m conntrack --ctstate NEW -j ACCEPT |
持久化(2)
| 命令 | 难度 | ||
|---|---|---|---|
iptables-save将当前 iptables 规则导出到 stdout | 中级 | iptables-save > /etc/iptables/rules.v4 | |
iptables-restore从文件恢复 iptables 规则(原子操作) | 中级 | iptables-restore < /etc/iptables/rules.v4 |
常见问题
本速查表数据整理自各工具官方文档。最后更新: 2026-07-17。