温馨提示×

怎样调试debian iptables

小樊
44
2026-09-20 00:12:00
栏目: 智能运维

在 Debian 上调试 iptables 通常涉及查看规则、跟踪流量、日志、模块状态排查等步骤。下面按“从入门到排错”的顺序说明。


一、基础检查

1. 查看当前规则

iptables -L -n -v

常用参数:

  • -L:列出规则
  • -n:不做 DNS 解析(更快)
  • -v:显示数据包/字节统计
  • -t nat:查看 NAT 表
  • -t mangle:查看 mangle 表

示例:

iptables -t nat -L -n -v

2. 确认 iptables 是否生效

iptables -S

查看当前所有规则(等效于 iptables-save


二、流量调试方法

方法 1:使用 LOG 规则(最常用)

在要调试的链中插入 LOG 规则:

iptables -I INPUT 1 -p tcp --dport 22 -j LOG --log-prefix "SSH-DEBUG: "

查看日志:

dmesg | grep SSH-DEBUG
# 或
journalctl -k | grep SSH-DEBUG

删除规则:

iptables -D INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH-DEBUG: "

方法 2:TRACE(最强大)

用于逐包跟踪经过哪些表和链。

iptables -t raw -A PREROUTING -p tcp --dport 80 -j TRACE

查看:

dmesg
# 或
journalctl -k

TRACE 会输出类似:

TRACE: raw:PREROUTING:rule:1
TRACE: filter:INPUT:rule:2

⚠️ 仅用于调试,用完务必删除:

iptables -t raw -F

三、常见调试场景

1. 端口不通

检查顺序:

# 是否被 DROP
iptables -L INPUT -n -v

# 是否 NAT 问题
iptables -t nat -L -n -v

# 本机监听
ss -tulnp | grep 端口

2. 规则顺序错误

iptables 自上而下匹配,例如:

iptables -A INPUT -j DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

❌ 永远到不了 ACCEPT

✅ 正确:

iptables -I INPUT -p tcp --dport 22 -j ACCEPT

3. 被 nftables 接管(Debian 10+)

Debian 默认可能用 nftables

iptables -V

若显示:

iptables v1.8.x (nf_tables)

说明是 iptables over nftables

查看真实规则:

nft list ruleset

四、保存与恢复

临时调试(重启失效)

直接敲命令即可

永久保存

Debian 传统方式:

apt install iptables-persistent
netfilter-persistent save

五、调试建议清单

✅ 先 -P ACCEPT 排除被锁
✅ 用 LOG / TRACE 看包走到哪
✅ 检查表顺序:raw → mangle → nat → filter
✅ 注意 Docker / nftables 干扰


如果你有具体现象(比如“SSH 连不上”“Docker 端口不通”“NAT 失败”),可以直接贴规则,我可以帮你逐条分析。

0