在 Debian 上 iptables“失效” 通常不是 iptables 本身坏了,而是被其他机制接管或规则没真正生效。下面按最常见原因逐一说明。
从 Debian 10(Buster)开始:
iptables 命令 默认是 nftables 的兼容层iptables 规则可能:
iptables -V
如果看到:
iptables v1.8.x (nf_tables)
说明 iptables 是 nft 封装
查看真实规则:
nft list ruleset
如果你要用“老式 iptables”:
update-alternatives --config iptables
选择:
iptables-legacy
然后重启或重新加载规则。
Debian 不会自动保存 iptables 规则
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
apt install iptables-persistent
netfilter-persistent save
规则保存在:
/etc/iptables/rules.v4
如果你装了 Docker:
iptables -L -n -v
--iptables=false
或在 daemon.json 中配置iptables 自上而下匹配,命中即停
例如:
iptables -A INPUT -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
→ 22 端口永远不会被 DROP
iptables -I INPUT 1 -p tcp --dport 22 -j DROP
如果你只加了规则,但:
iptables -P INPUT ACCEPT
那默认就是放行。
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
Debian 上常见冲突:
ufwfirewalldufw status
systemctl status firewalld
只用一种防火墙
systemctl stop ufw
systemctl disable ufw
iptables → IPv4ip6tables → IPv6如果服务监听 ::,但只配了 iptables,也会“像失效”。
iptables -V
nft list ruleset
iptables -L -n -v
systemctl status docker
ufw status
如果你愿意,可以贴出:
iptables -L -n -v 输出我可以直接帮你指出哪一条导致“失效”。