在 Debian 里,iptables 本身不直接产生日志,需要你显式写规则把包“扔给”日志机制,然后才能看日志。下面按常见情况说清楚。
iptables -L -v -n | grep LOG
或看全部规则:
iptables -S
iptables -L -v -n
如果有类似:
-j LOG --log-prefix "IPTABLES: "
说明已经在记日志了。
rsyslog(最常见)Debian 默认用 rsyslog,iptables 的 LOG 会进 内核日志:
dmesg
或实时看:
dmesg -w
也可以看系统日志:
tail -f /var/log/syslog
或:
journalctl -k -f
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW \
-j LOG --log-prefix "SSH-ATTEMPT: " --log-level 4
iptables -A INPUT -p tcp --dport 22 -j DROP
查看日志:
tail -f /var/log/syslog
你会看到类似:
SSH-ATTEMPT: IN=eth0 OUT= MAC=... SRC=1.2.3.4 DST=5.6.7.8 ...
编辑 /etc/rsyslog.conf 或新建:
sudo nano /etc/rsyslog.d/iptables.conf
内容:
:msg, contains, "IPTABLES: " -/var/log/iptables.log
& stop
重启:
sudo systemctl restart rsyslog
以后:
tail -f /var/log/iptables.log
如果不想污染 syslog,可以用:
iptables -A INPUT -j NFLOG --nflog-group 1
再用 ulogd 或 tcpdump 读。
❌ iptables 没 -j LOG 就不会有日志
❌ 规则顺序很重要(LOG 要在 DROP/REJECT 前)
❌ dmesg 有大小限制,可能刷掉老日志
# 1. 看规则
iptables -L -v -n
# 2. 看日志
dmesg
tail -f /var/log/syslog
# 3. 没有日志 → 加 LOG 规则
如果你愿意,可以告诉我:
iptables 还是 nftables我可以直接帮你写一套完整规则。