0

我想使用 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 文件,但对于办公设备,我只有 1 个大的 public_ip_of_office.log文件。

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

任何帮助都会很棒。

4

1 回答 1

0

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

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

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

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

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

于 2015-11-03T14:48:46.640 回答