在 Debian 系统中,iptables 是常用的防火墙工具。下面从基础概念 → 常用操作 → 示例规则 → 持久化保存几个方面说明如何设置 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
含义:
⚠️ 注意:设置 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
✅ 建议限制 IP:
iptables -A INPUT -p tcp -s 1.2.3.4 --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 -D INPUT -p tcp --dport 22 -j ACCEPT
iptables -L INPUT --line-numbers
iptables -D INPUT 3
iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 1.2.3.4
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
Debian 重启后规则会丢失,需要保存。
iptables-persistent(推荐)apt update
apt install iptables-persistent
netfilter-persistent save
规则保存在:
/etc/iptables/rules.v4
/etc/iptables/rules.v6
netfilter-persistent reload
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
iptables -P INPUT ACCEPT如果你愿意,我可以: ✅ 帮你写一套 生产服务器 iptables 规则 ✅ 帮你 迁移到 nftables ✅ 针对 Docker / K8s / 内网 NAT 场景配置
只要告诉我你的使用场景即可。