在 CentOS 上查看 iptables 日志,需要先确认 日志是否开启、规则是否记录日志,以及 日志写到哪里。下面按常见情况说明。
iptables 本身 不会自动记录日志,必须在规则中显式使用 -j LOG。
查看现有规则中是否有 LOG:
iptables -L -n -v | grep LOG
或查看所有规则:
iptables -L -n -v
iptables -L -n -v -t nat
✅ 如果没有看到 LOG,说明 当前没有开启 iptables 日志。
日志一般写在:
/var/log/messages
查看:
grep -i "iptables" /var/log/messages
或实时查看:
tail -f /var/log/messages
日志通常在 内核日志 中:
dmesg | grep -i iptables
或:
journalctl -k | grep -i iptables
实时查看:
journalctl -k -f
iptables -I INPUT -j LOG --log-prefix "IPTABLES-DROP: " --log-level 4
iptables -A INPUT -j LOG --log-prefix "IPTABLES-REJECT: "
参数说明:
--log-prefix:日志前缀,方便 grep--log-level 4:warning 级别(可选)⚠️ 注意:LOG 只是记录,不会拦截流量,通常后面跟 DROP / REJECT 规则。
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "IPTABLES: "
vim /etc/rsyslog.conf
添加:
:msg, contains, "IPTABLES" /var/log/iptables.log
& stop
systemctl restart rsyslog
查看:
tail -f /var/log/iptables.log
如果你用的是 firewalld,它底层仍是 iptables / nftables:
firewall-cmd --get-log-denied
开启拒绝日志:
firewall-cmd --set-log-denied=all
查看日志:
journalctl -k | grep -i denied
✅ 是否有 LOG 规则
✅ 是 CentOS 6 还是 7/8
✅ 查看 /var/log/messages 或 dmesg
✅ 是否限制日志频率
✅ 是否配置 rsyslog 输出位置
如果你愿意,可以告诉我:
我可以帮你写一套 完整可用的 iptables 日志规则。