温馨提示×

debian iptables怎么看日志

小樊
37
2026-09-22 23:28:04
栏目: 智能运维

在 Debian 里,iptables 本身不直接产生日志,需要你显式写规则把包“扔给”日志机制,然后才能看日志。下面按常见情况说清楚。


一、先看 iptables 里有没有日志规则

iptables -L -v -n | grep LOG

或看全部规则:

iptables -S
iptables -L -v -n

如果有类似:

-j LOG --log-prefix "IPTABLES: "

说明已经在记日志了。


二、iptables 日志默认在哪里看?

1️⃣ 使用 rsyslog(最常见)

Debian 默认用 rsyslog,iptables 的 LOG 会进 内核日志:

dmesg

或实时看:

dmesg -w

也可以看系统日志:

tail -f /var/log/syslog

或:

journalctl -k -f

三、如何加一条 iptables 日志规则(示例)

记录被 DROP 的包(在 DROP 前加)

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 ...

四、把 iptables 日志单独写到文件(推荐)

编辑 /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

五、nflog / ulog(高级)

如果不想污染 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 规则

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

  • Debian 版本(10/11/12?)
  • 想记录 哪种流量(DROP / 全部 / 某个端口)
  • 用的是 iptables 还是 nftables

我可以直接帮你写一套完整规则。

0 踩