记录到系统日志文件
要将 iptables NAT 活动记录到不同的日志文件中,可以使用 --log-prefix
选项和 --log-level
选项为每个日志条目设置唯一的前缀。可以使用 --log-ip-options
和 --log-tcp-options
选项分别在日志条目中包含 IP 和 TCP 选项。
下面举例将不同的链的 NAT 活动记录到不同的日志文件中:
# 将 PREROUTING 链记录到文件 /var/log/iptables_nat_prerouting.log
iptables -t nat -A PREROUTING -j LOG --log-prefix "NAT_PREROUTING: " --log-level info --log-ip-options --log-tcp-options
# 将 POSTROUTING 链记录到文件 /var/log/iptables_nat_postrouting.log
iptables -t nat -A POSTROUTING -j LOG --log-prefix "NAT_POSTROUTING: " --log-level info --log-ip-options --log-tcp-options
自定义日志记录文件
上面这个例子中,每个规则都记录具有特定前缀的数据包,并将日志记录级别设置为 info。日志将包括 IP 和 TCP 选项。可以通过配置系统的 syslog 设置将日志条目重定向到不同的文件。
要配置 syslog 以根据日志前缀将日志条目分隔到不同的文件中,你可以向 syslog 配置添加自定义规则。配置文件的位置和语法在不同 Linux 发行版中有差异。
在使用 rsyslog 的系统上,可以将自定义规则添加到 /etc/rsyslog.conf
或 /etc/rsyslog.d/
下的文件中。创建一个新文件,例如 /etc/rsyslog.d/iptables_nat.conf
,并添加以下行:
if $msg contains 'NAT_PREROUTING' then /var/log/iptables_nat_prerouting.log
if $msg contains 'NAT_POSTROUTING' then /var/log/iptables_nat_postrouting.log
& stop
Archlinux
Arch Linux 默认情况下不使用 syslog-ng 或 rsyslog 等传统的 syslog 守护进程。Arch Linux 使用 systemd 进行系统和服务管理,包括日志记录。 在Arch Linux中,日志是通过journalctl管理的,它是systemd套件的一部分。日志存储在日志中,可以使用journalctl命令查看它们。 要查看 iptables NAT 活动的日志,可以使用以下命令:
journalctl _COMM=iptables
此命令过滤日志以显示与 iptables 命令相关的条目。可以根据你的具体需求调整过滤器。
如果你仍想针对特定 iptables 规则分隔日志,则可能需要在 iptables 配置中添加自定义规则以包含特定日志前缀。然后在使用journalctl时根据这些前缀进行过滤。
自定义前缀
iptables -t nat -A PREROUTING -j LOG --log-prefix "NAT_PREROUTING: " --log-level info --log-ip-options --log-tcp-options
iptables -t nat -A POSTROUTING -j LOG --log-prefix "NAT_POSTROUTING: " --log-level info --log-ip-options --log-tcp-options
你可以这样查看
journalctl _COMM=iptables | grep "NAT_PREROUTING\|NAT_POSTROUTING"
Ubuntu
Ubuntu 使用 rsyslog 守护进程作为默认的 syslog 服务。 rsyslog 是一个高性能日志处理系统,可以配置为存储和转发日志消息。
使用 rsyslog 在 Ubuntu 中查看与 iptables 相关的日志:
grep iptables /var/log/syslog
syslog 文件的实际路径可能有所不同,可能会在 /var/log/ 目录中找到其他日志文件。
配置自定义日志文件:
如果要将 iptables 日志分离到自定义文件中,可以修改 /etc/rsyslog.conf 或在 /etc/rsyslog.d/ 目录中添加配置文件。
创建一个新的配置文件,例如 /etc/rsyslog.d/iptables.conf,并添加规则以将 iptables 消息定向到特定日志文件:
:msg, contains, "NAT_PREROUTING" /var/log/iptables_nat_prerouting.log
:msg, contains, "NAT_POSTROUTING" /var/log/iptables_nat_postrouting.log
& stop
重新启动 rsyslog
更改配置后,重新启动 rsyslog 服务以应用更改:
sudo service rsyslog restart
网友评论