温馨提示×

ubuntu iptables怎么查日志

小樊
38
2026-10-06 21:31:51
栏目: 智能运维

在 Ubuntu 上,iptables 本身不会自动写日志,需要你显式配置 LOG 规则,并且日志通常会进到 内核日志(dmesg / syslog / rsyslog) 里。

下面按常见情况给你说明。


一、先确认你是否已经配置了 iptables 日志规则

1. 查看 iptables 是否有 LOG 规则

sudo iptables -L -v -n
sudo iptables -L -v -n -t nat

重点看有没有类似:

LOG  all --  *  *  0.0.0.0/0  0.0.0.0/0  LOG flags 0 level 4

二、添加 iptables 日志规则(如果还没加)

示例:记录被 DROP 的包

sudo iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROP: " --log-level 4
sudo iptables -A INPUT -j DROP

示例:记录所有进入的包(调试用,不建议长期开)

sudo iptables -I INPUT -j LOG --log-prefix "IPTABLES-IN: "

三、查看 iptables 日志位置(Ubuntu)

1. 通过 dmesg(最直接)

dmesg | grep IPTABLES

或实时查看:

dmesg -w | grep IPTABLES

2. 通过 syslog / rsyslog(推荐)

Ubuntu 一般使用 rsyslog:

sudo grep IPTABLES /var/log/syslog

或实时:

sudo tail -f /var/log/syslog | grep IPTABLES

如果你用的是 Ubuntu 22.04+,也可能在:

sudo journalctl -k | grep IPTABLES

四、把 iptables 日志单独存到一个文件(推荐)

1. 编辑 rsyslog 配置

sudo vim /etc/rsyslog.d/10-iptables.conf

内容:

:msg, contains, "IPTABLES-" -/var/log/iptables.log
& stop

2. 重启 rsyslog

sudo systemctl restart rsyslog

3. 查看日志

sudo tail -f /var/log/iptables.log

五、常见注意事项

  • LOG 不等于 DROP / ACCEPT
    LOG 只是记录,后面还要接规则
  • 不要在生产环境长期开全量 LOG,会拖慢系统
  • 如果完全看不到日志:
    • 确认规则在链的前面
    • 确认 --log-prefix 一致
    • 确认 rsyslog 在运行

六、更现代的替代方案(可选)

  • nftables(Ubuntu 新版本默认)
  • ulogd
  • tcpdump(临时抓包调试)

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

  • Ubuntu 版本
  • 是否有 LOG 规则
  • 想记录哪类流量(DROP / 所有 / 某端口)

我可以给你精确命令。

0 踩