【问题标题】:How can I separate logs based on source IP or hostname behind NAT using syslog-ng?如何使用 syslog-ng 基于源 IP 或 NAT 后面的主机名分离日志?
【发布时间】:2015-11-03 22:48:46
【问题描述】:

我想使用 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 服务器。

任何帮助都会很棒。

【问题讨论】:

  • 可能属于 serverfault.com

标签: nat syslog-ng


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多