在 Debian 上调试 iptables 通常涉及查看规则、跟踪流量、理解链与策略、以及使用日志。下面按实用顺序说明。
iptables -L -n -v
-L:列出规则-n:不做 DNS 解析(更快)-v:显示流量统计(包数、字节数)查看 NAT 表:
iptables -t nat -L -n -v
查看所有表:
iptables-save
iptables -L | grep policy
常见导致“连不上”的原因:
INPUT / FORWARD 默认 DROP-v 看计数iptables -L INPUT -n -v
pkts 有增长 → 规则命中iptables -I INPUT -j ACCEPT
如果这样能通,说明是规则问题。
iptables -I INPUT -p tcp --dport 22 -j LOG --log-prefix "IPT-SSH: "
然后查看:
dmesg | grep IPT-SSH
# 或
journalctl -k | grep IPT-SSH
iptables -I INPUT -j LOG --log-prefix "INPUT-DROP: "
iptables -I FORWARD -j LOG --log-prefix "FWD-DROP: "
⚠️ 日志量可能很大,调试完记得删掉。
conntrack -L
或
cat /proc/net/nf_conntrack
确认连接状态:
ESTABLISHEDSYN_SENTTIME_WAITiptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
如果少了这条,回包会被丢。
iptables -t raw -A PREROUTING -p tcp --dport 80 -j TRACE
查看:
dmesg -T | grep TRACE
可看到包经过的:
⚠️ 仅用于调试,生产环境勿长期开启。
Debian 10+ 默认:
iptables -> nft
检查:
iptables --version
如果看到 nf_tables,说明是兼容层。
查看真实规则:
nft list ruleset
规则重启丢失:
apt install iptables-persistent
netfilter-persistent save
如果你愿意,可以告诉我:
iptables-save 输出(可脱敏)我可以帮你直接分析规则问题。