如何使用syslog-ng基于NAT后面的源IP或主机名分隔日志?

时间:2015-10-27 15:15:25

标签: nat syslog-ng

我想使用syslog-ng创建集中式日志记录。我必须覆盖多个办公室,其中有1-2个公共IP和多个其他服务器/设备运行在云端"。

只是对于云服务器一切正常,但是当我想从办公室中的不同设备收集日志时,我正在丢失设备的主机名/源IP信息。我只获得了外部公共IP。

syslog-ng版本是3.5.3,它运行在Ubuntu 14.04计算机上(在具有公共IP地址的云中)。

我的额外非默认配置文件是以下 /etc/syslog-ng/conf.d/logserver.conf

source s_network_udp { syslog(ip(<syslog_server_public_ip>) transport("udp") keep-hostname(yes)); };
source s_network_tcp { tcp(ip(<syslog_server_public_ip>) port(514) keep-hostname(yes)); };


destination d_netlog { file("/var/log/remote/${HOST}.log"); };

log { source(s_network_udp); destination(d_netlog);};
log { source(s_network_tcp); destination(d_netlog);};

每个公共服务器都有自己的$ hostname.log文件,但对于办公设备,我只有一个大的 public_ip_of_office.log 文件。

syslog-ng.conf文件具有默认配置。我不确定NAT是否会导致问题。我没有使用任何中继功能,我只有1个syslog-ng服务器。

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

Nat将隐藏源IP。它不是syslog-ng / syslog问题。

您可以使用keep-hostname()。 但我建议不要这样做。

如果您允许我,我会建议您改进设置的一些提示:

  • 实施syslog-ng relay到natboxes
  • 使用ietf syslog协议代替传统bsdlog,至少在中继和目标服务器之间使用
  • 如果你实现了继电器,那么不要在继电器上使用keep-hostname!这是您至少检查发件人的源IP的最后机会。

通过这种设置,中继将看到真正的源IP,并且它可以在ietf协议的sdata部分中添加几个元数据项,例如。 sourceIP。