在 Debian 下,iptables 本身不记录日志,需要你显式写规则把包交给日志模块(NFLOG / LOG),然后再去对应位置看日志。下面按常见情况说明。
iptables -L -n -v | grep LOG
或
iptables -S | grep LOG
如果没有看到 LOG 相关规则,那系统里是不会有 iptables 日志的。
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "IPTABLES-DROP: " --log-level 4
或更推荐(不影响性能):
iptables -A INPUT -p tcp --dport 22 -j NFLOG --nflog-prefix "SSH-INPUT"
LOG 模块日志会进 内核日志:
dmesg
或
journalctl -k
NFLOG 模块需要装 ulogd:
apt install ulogd2
systemctl enable --now ulogd
日志默认在:
/var/log/ulog/syslogemu.log
你可以临时加规则看一眼:
iptables -A INPUT -j LOG --log-prefix "DROP-DEBUG: "
然后:
dmesg -T | tail
确认完后记得删掉:
iptables -D INPUT -j LOG --log-prefix "DROP-DEBUG: "
iptables 日志 ≠ ufw 日志| 方式 | 查看位置 |
|---|---|
| iptables + LOG | dmesg / journalctl -k |
| iptables + NFLOG | /var/log/ulog/* |
| 没写规则 | 没日志 |
如果你愿意,可以把你的 iptables 规则贴出来,我可以直接告诉你日志该去哪看、怎么加最合适。