温馨提示×

debian iptables怎样调试日志

小樊
39
2026-09-13 20:32:51
栏目: 智能运维

在 Debian 下使用 iptables 调试/记录日志,通常有以下几种做法,从“最常用”到“更专业”依次说明。


一、使用 iptables LOG 目标(最常用)

1. 添加 LOG 规则

例如在 INPUT 链记录所有来自 192.168.1.100 的包:

iptables -I INPUT -s 192.168.1.100 -j LOG --log-prefix "IPTABLES-DROP: "

常用参数:

  • --log-prefix:日志前缀(方便 grep)
  • --log-level:日志级别(如 4 = warning)
  • --log-tcp-options / --log-ip-options:记录更详细信息

示例:

iptables -I INPUT -p tcp --dport 22 -j LOG \
  --log-prefix "SSH-LOG: " --log-level 4

2. 查看日志位置(重要)

Debian(使用 rsyslog) 中:

tail -f /var/log/syslog

或:

grep IPTABLES /var/log/syslog

如果你用了 --log-prefix,例如:

grep "SSH-LOG" /var/log/syslog

二、LOG + DROP / ACCEPT 组合使用

LOG 不会终止规则处理,所以要配合最终动作:

iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH-DROP: "
iptables -A INPUT -p tcp --dport 22 -j DROP

或只记录不拦截:

iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH-ACCEPT: "
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

三、使用 nflog(更现代,推荐高级用户)

1. 使用 NFLOG 目标

iptables -A INPUT -p tcp --dport 80 -j NFLOG --nflog-group 1

2. 用 ulogd 或 tcpdump 查看

apt install ulogd2

或直接抓包:

tcpdump -i nflog:1

优点:

  • 不影响内核日志
  • 可程序化处理

四、调试 NAT / 转发问题

如果是 FORWARD / NAT

iptables -A FORWARD -j LOG --log-prefix "FWD: "
iptables -t nat -A POSTROUTING -j LOG --log-prefix "NAT: "

查看:

tail -f /var/log/syslog

五、常见排错技巧

1. 规则没生效?

iptables -L -v -n
iptables -t nat -L -v -n

2. 日志太多?

  • 限制 LOG 范围(指定 IP / 端口)
  • 使用 --limit
iptables -A INPUT -p tcp --dport 22 -m limit --limit 1/min -j LOG

3. 使用 raw 表早期调试

iptables -t raw -A PREROUTING -j LOG --log-prefix "RAW: "

六、示例:完整调试 SSH 被拒原因

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

然后:

ssh user@server
tail -f /var/log/syslog | grep SSH-DEBUG

如果你愿意,可以告诉我:

  • 本机防火墙 还是 网关/NAT
  • 遇到的是 被 DROP / 无法连接 / 转发失败

我可以给你一条“精准调试规则”。

0