在 Debian 下使用 iptables 调试/记录日志,通常有以下几种做法,从“最常用”到“更专业”依次说明。
例如在 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
在 Debian(使用 rsyslog) 中:
tail -f /var/log/syslog
或:
grep IPTABLES /var/log/syslog
如果你用了 --log-prefix,例如:
grep "SSH-LOG" /var/log/syslog
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
iptables -A INPUT -p tcp --dport 80 -j NFLOG --nflog-group 1
apt install ulogd2
或直接抓包:
tcpdump -i nflog:1
优点:
如果是 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
iptables -L -v -n
iptables -t nat -L -v -n
--limitiptables -A INPUT -p tcp --dport 22 -m limit --limit 1/min -j LOG
iptables -t raw -A PREROUTING -j LOG --log-prefix "RAW: "
iptables -I INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH-DEBUG: "
然后:
ssh user@server
tail -f /var/log/syslog | grep SSH-DEBUG
如果你愿意,可以告诉我:
我可以给你一条“精准调试规则”。