在 Debian 系统中,iptables 是经典的防火墙工具(虽然新系统更推荐 nftables,但 iptables 仍广泛使用)。下面从基础概念 → 常用策略 → 完整示例 → 持久化保存逐步说明。
iptables 通过 表(tables) 和 链(chains) 来管理规则:
| 表名 | 作用 |
|---|---|
| filter | 过滤数据包(最常用) |
| nat | 网络地址转换(NAT) |
| mangle | 修改数据包 |
| raw | 连接跟踪 |
| 链名 | 作用 |
|---|---|
| INPUT | 进入本机的数据包 |
| OUTPUT | 本机发出的数据包 |
| FORWARD | 转发的数据包 |
iptables -L -n -v
查看指定表:
iptables -t nat -L -n -v
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
含义:
⚠️ 注意:设置 INPUT DROP 前,一定要先放行 SSH,否则会被踢出服务器!
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
✅ 强烈建议改成非默认端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -D INPUT -p tcp --dport 22 -j ACCEPT
Debian 重启后 iptables 规则会丢失,需要保存。
iptables-persistent(推荐)apt update
apt install iptables-persistent
保存规则:
netfilter-persistent save
规则保存在:
/etc/iptables/rules.v4
/etc/iptables/rules.v6
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
然后保存:
netfilter-persistent save
iptables 实际是 nftables 的兼容层nftables如果你愿意,我可以: ✅ 给你 nftables 对应配置 ✅ 针对 Web / 数据库 / Docker 场景定制规则 ✅ 帮你排查 被锁外面 的 iptables 问题
只要告诉我你的 Debian 版本和使用场景 即可。